MCPcopy Create free account
hub / github.com/e2wugui/zeze / Meta1

Class Meta1

ZezeJava/ZezeJava/src/main/java/Zeze/Transaction/Collections/Meta1.java:18–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16import org.jetbrains.annotations.NotNull;
17
18public final class Meta1<V> {
19 private static final long beanHeadHash = Bean.hash64("Zeze.Transaction.Log<");
20 private static final long logOneHeadHash = Bean.hash64("Zeze.Transaction.Collections.LogOne<");
21 private static final long list1HeadHash = Bean.hash64("Zeze.Transaction.Collections.LogList1<");
22 private static final long list2HeadHash = Bean.hash64("Zeze.Transaction.Collections.LogList2<");
23 private static final long set1HeadHash = Bean.hash64("Zeze.Transaction.Collections.LogSet1<");
24 private static final int dynamicBeanTypeId = Bean.hash32("Zeze.Transaction.Collections.LogList2<Zeze.Transaction.DynamicBean>");
25 private static final ConcurrentHashMap<Class<?>, Meta1<?>> beanMetas = new ConcurrentHashMap<>();
26 private static final ConcurrentHashMap<Class<?>, Meta1<?>> logOneMetas = new ConcurrentHashMap<>();
27 private static final ConcurrentHashMap<Class<?>, Meta1<?>> list1Metas = new ConcurrentHashMap<>();
28 private static final ConcurrentHashMap<Class<?>, Meta1<?>> list2Metas = new ConcurrentHashMap<>();
29 private static final ConcurrentHashMap<Class<?>, Meta1<?>> set1Metas = new ConcurrentHashMap<>();
30
31 public final int logTypeId;
32 public final int valueEncodeType;
33 public final BiConsumer<ByteBuffer, V> valueEncoder; // 只用于非Bean类型
34 public final Function<IByteBuffer, V> valueDecoder; // 只用于非Bean类型
35 public final SerializeHelper.ObjectIntFunction<IByteBuffer, V> valueDecoderWithType; // 只用于非Bean类型
36 public final MethodHandle valueFactory; // 只用于Bean类型
37 public final @NotNull String name; // 主要用于分析查错
38
39 private Meta1(@NotNull String headStr, long headHash, @NotNull Class<V> valueClass) {
40 logTypeId = Bean.hashLog(headHash, valueClass);
41 var valueCodecFuncs = SerializeHelper.createCodec(valueClass);
42 valueEncodeType = valueCodecFuncs.encodeType;
43 valueEncoder = valueCodecFuncs.encoder;
44 valueDecoder = valueCodecFuncs.decoder;
45 valueDecoderWithType = valueCodecFuncs.decoderWithType;
46 valueFactory = BeanKey.class.isAssignableFrom(valueClass) || Bean.class.isAssignableFrom(valueClass)
47 ? Reflect.getDefaultConstructor(valueClass) : null;
48 name = headStr + valueClass.getName();
49 }
50
51 private Meta1(@NotNull ToLongFunction<Bean> get, @NotNull LongFunction<Bean> create) {
52 logTypeId = dynamicBeanTypeId;
53 valueEncodeType = IByteBuffer.DYNAMIC;
54 valueEncoder = null;
55 valueDecoder = null;
56 valueDecoderWithType = null;
57 valueFactory = SerializeHelper.createDynamicFactory(get, create);
58 name = "LogList2:DynamicBean";
59 }
60
61 @SuppressWarnings("unchecked")
62 public static <V extends Bean> @NotNull Meta1<V> getLogOneMeta(@NotNull Class<V> beanClass) {
63 return (Meta1<V>)logOneMetas.computeIfAbsent(beanClass, vc -> new Meta1<>("LogOne:", logOneHeadHash, (Class<V>)vc));
64 }
65
66 @SuppressWarnings("unchecked")
67 public static <V extends Serializable> @NotNull Meta1<V> getBeanMeta(@NotNull Class<V> beanClass) {
68 return (Meta1<V>)beanMetas.computeIfAbsent(beanClass, vc -> new Meta1<>("LogBeanKey:", beanHeadHash, (Class<V>)vc));
69 }
70
71 @SuppressWarnings("unchecked")
72 public static <V> @NotNull Meta1<V> getList1Meta(@NotNull Class<V> valueClass) {
73 return (Meta1<V>)list1Metas.computeIfAbsent(valueClass, vc -> new Meta1<>("LogList1:", list1HeadHash, (Class<V>)vc));
74 }
75

Callers

nothing calls this directly

Calls 2

hash64Method · 0.95
hash32Method · 0.95

Tested by

no test coverage detected