Skip to content

Commit

Permalink
chore(java): move ClassDef to meta package (#1515)
Browse files Browse the repository at this point in the history
## What does this PR do?

This PR moved ClassDef from `type` to `meta` package for bettern manage
meta related classes

## Related issues

<!--
Is there any related issue? Please attach here.

- #xxxx0
- #xxxx1
- #xxxx2
-->


## Does this PR introduce any user-facing change?

<!--
If any user-facing interface changes, please [open an
issue](https://github.com/apache/incubator-fury/issues/new/choose)
describing the need to do so and update the document if necessary.
-->

- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?


## Benchmark

<!--
When the PR has an impact on performance (if you don't know whether the
PR will have an impact on performance, you can submit the PR first, and
if it will have impact on performance, the code reviewer will explain
it), be sure to attach a benchmark data here.
-->
  • Loading branch information
chaokunyang authored Apr 15, 2024
1 parent 971951a commit d6fcd50
Show file tree
Hide file tree
Showing 10 changed files with 23 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
import org.apache.fury.Fury;
import org.apache.fury.codegen.CodeGenerator;
import org.apache.fury.codegen.CompileUnit;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.resolver.FieldResolver;
import org.apache.fury.serializer.Serializer;
import org.apache.fury.type.ClassDef;
import org.apache.fury.util.Preconditions;

/** Codec util to create and load jit serializer class. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.Objects;
import org.apache.fury.Fury;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.serializer.CompatibleSerializerBase;
import org.apache.fury.serializer.Serializer;
import org.apache.fury.util.Preconditions;
Expand Down Expand Up @@ -99,7 +100,7 @@ public GeneratedObjectSerializer(Fury fury, Class<?> cls) {
}
}

/** Base class for all serializers with meta shared by {@link org.apache.fury.type.ClassDef}. */
/** Base class for all serializers with meta shared by {@link ClassDef}. */
abstract class GeneratedMetaSharedSerializer extends GeneratedSerializer implements Generated {
public static final String SERIALIZER_FIELD_NAME = "serializer";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.FuryBuilder;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.serializer.CodegenSerializer;
import org.apache.fury.serializer.MetaSharedSerializer;
import org.apache.fury.serializer.ObjectSerializer;
import org.apache.fury.serializer.Serializer;
import org.apache.fury.serializer.Serializers;
import org.apache.fury.type.ClassDef;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.DescriptorGrouper;
import org.apache.fury.util.Preconditions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* under the License.
*/

package org.apache.fury.type;
package org.apache.fury.meta;

import static org.apache.fury.type.TypeUtils.COLLECTION_TYPE;
import static org.apache.fury.type.TypeUtils.MAP_TYPE;
Expand Down Expand Up @@ -48,6 +48,10 @@
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.serializer.CompatibleSerializer;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.DescriptorGrouper;
import org.apache.fury.type.FinalObjectTypeStub;
import org.apache.fury.type.GenericType;
import org.apache.fury.util.MurmurHash3;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
Expand Down Expand Up @@ -634,7 +638,7 @@ public int hashCode() {
static FieldType buildFieldType(ClassResolver classResolver, Field field) {
Preconditions.checkNotNull(field);
Class<?> rawType = field.getType();
boolean isFinal = GenericType.defaultFinalPredicate.test(rawType);
boolean isFinal = GenericType.isFinalByDefault(rawType);
if (Collection.class.isAssignableFrom(rawType)) {
GenericType genericType = GenericType.build(field.getGenericType());
return new CollectionFieldType(
Expand Down Expand Up @@ -672,15 +676,15 @@ static FieldType buildFieldType(ClassResolver classResolver, Field field) {
private static FieldType buildFieldType(ClassResolver classResolver, GenericType genericType) {
Preconditions.checkNotNull(genericType);
boolean isFinal = genericType.isMonomorphic();
if (COLLECTION_TYPE.isSupertypeOf(genericType.typeToken)) {
if (COLLECTION_TYPE.isSupertypeOf(genericType.getTypeToken())) {
return new CollectionFieldType(
isFinal,
buildFieldType(
classResolver,
genericType.getTypeParameter0() == null
? GenericType.build(Object.class)
: genericType.getTypeParameter0()));
} else if (MAP_TYPE.isSupertypeOf(genericType.typeToken)) {
} else if (MAP_TYPE.isSupertypeOf(genericType.getTypeToken())) {
return new MapFieldType(
isFinal,
buildFieldType(
Expand All @@ -694,7 +698,7 @@ private static FieldType buildFieldType(ClassResolver classResolver, GenericType
? GenericType.build(Object.class)
: genericType.getTypeParameter1()));
} else {
Short classId = classResolver.getRegisteredClassId(genericType.cls);
Short classId = classResolver.getRegisteredClassId(genericType.getCls());
if (classId != null && classId != ClassResolver.NO_CLASS_ID) {
return new RegisteredFieldType(isFinal, classId);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
import org.apache.fury.logging.Logger;
import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.serializer.ArraySerializers;
import org.apache.fury.serializer.BufferSerializers;
import org.apache.fury.serializer.CodegenSerializer.LazyInitBeanSerializer;
Expand Down Expand Up @@ -133,7 +134,6 @@
import org.apache.fury.serializer.scala.SingletonMapSerializer;
import org.apache.fury.serializer.scala.SingletonObjectSerializer;
import org.apache.fury.serializer.shim.ShimDispatcher;
import org.apache.fury.type.ClassDef;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.GenericType;
import org.apache.fury.type.ScalaTypes;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import java.util.List;
import org.apache.fury.collection.IdentityObjectIntMap;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.type.ClassDef;
import org.apache.fury.meta.ClassDef;

/**
* Context for sharing class meta across multiple serialization. Class name, field name and field
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.FuryBuilder;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.resolver.ClassInfoHolder;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.resolver.RefResolver;
import org.apache.fury.type.ClassDef;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.DescriptorGrouper;
import org.apache.fury.type.Generics;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.Config;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.resolver.ClassInfo;
import org.apache.fury.resolver.ClassInfoHolder;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.resolver.MetaContext;
import org.apache.fury.resolver.RefResolver;
import org.apache.fury.type.ClassDef;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.DescriptorGrouper;
import org.apache.fury.type.Generics;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,8 @@

/** GenericType for building java generics as a tree and binding with fury serializers. */
// TODO(chaokunyang) refine generics which can be inspired by spring ResolvableType.
@SuppressWarnings("UnstableApiUsage")
public class GenericType {
static final Predicate<Type> defaultFinalPredicate =
private static final Predicate<Type> defaultFinalPredicate =
type -> {
if (type.getClass() == Class.class) {
return ReflectionUtils.isMonomorphic(((Class<?>) type));
Expand Down Expand Up @@ -215,4 +214,8 @@ public boolean hasGenericParameters() {
public String toString() {
return "GenericType{" + typeToken.toString() + '}';
}

public static boolean isFinalByDefault(Class<?> cls) {
return defaultFinalPredicate.test(cls);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.apache.fury.Fury;
import org.apache.fury.FuryTestBase;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.meta.ClassDef;
import org.apache.fury.util.ReflectionUtils;
import org.testng.annotations.Test;

Expand Down

0 comments on commit d6fcd50

Please sign in to comment.