Class ProtoMessageTypeMetadata
java.lang.Object
org.infinispan.protostream.annotations.impl.ProtoTypeMetadata
org.infinispan.protostream.annotations.impl.ProtoMessageTypeMetadata
- All Implemented Interfaces:
HasProtoSchema
- Direct Known Subclasses:
CompileTimeProtoMessageTypeMetadata
A
ProtoTypeMetadata for a message type created based on annotations.- Since:
- 3.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final XClassprivate static final byte[]private XExecutableprivate SortedMap<Integer, ProtoFieldMetadata> private final Map<XClass, ProtoTypeMetadata> private final booleanprivate final booleanprivate final booleanprivate static final Logprivate final BaseProtoSchemaGeneratorprotected final XTypeFactoryprivate XFieldprivate XMethodprivate XMethodFields inherited from class ProtoTypeMetadata
javaClass, name, outerType -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedProtoMessageTypeMetadata(BaseProtoSchemaGenerator protoSchemaGenerator, XClass annotatedClass, XClass javaClass) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddInnerType(ProtoTypeMetadata typeMetadata) (package private) static byte[]cescape(byte[] bytes) (package private) static byte[]C-style escaping using 3 digit octal escapes ("\xxx") for all non-ASCII chars.private voidcheckForbiddenAnnotations(XMethod m1, XMethod m2) private voidEnsure we either have a suitable constructor or a factory method.private static voidcheckReserved(ProtoFieldMetadata fieldMetadata) private TypedefaultType(ProtoField annotation, XClass type) private StringdetectPropertyNameFromSetter(XMethod method) private Stringprivate voiddiscoverFields(XClass clazz, Set<XClass> examinedClasses, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs) private voiddiscoverFieldsFromClassFields(XClass clazz, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs) private voiddiscoverFieldsFromClassMethods(XClass clazz, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs) private voiddiscoverFieldsFromRecord(XClass clazz, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName) private XMethodfindGetter(String propertyName, XClass propertyType) private XMethodfindSetter(String propertyName, XClass propertyType) voidgenerateProto(IndentWriter iw, ProtoSyntax syntax) At this level we pretend the Java class and the annotated class are one and the same, but subclasses may decide otherwise.private XClassgetCollectionImplementation(XClass clazz, XClass fieldType, XClass configuredCollection, String fieldName, boolean isRepeated) protected XClassgetCollectionImplementationFromAnnotation(ProtoField annotation) private ObjectgetDefaultValue(XClass clazz, String fieldName, XClass fieldType, Type protobufType, String value, boolean isRepeated) Parses the value from string form (coming from proto schema) to an actual Java instance value, according to its type.final ProtoEnumValueMetadatagetEnumMemberByName(String name) This is only for enums.getEnumMemberByNumber(int number) private ProtoFieldMetadatagetFieldByPropertyName(String propName) protected XClassgetJavaTypeFromAnnotation(ProtoField annotation) private XClassgetMapImplementation(XClass clazz, XClass fieldType, XClass configuredMap, String fieldName, boolean isRepeated) protected XClassgetMapImplementationFromAnnotation(ProtoField annotation) private static StringgetName(ProtoField annotation, XField field) private static intgetNumber(ProtoField annotation, XMember member) private TypegetProtobufType(XClass javaType, Type declaredType) private static StringgetProtoName(XClass annotatedClass, XClass javaClass) booleanprivate booleanbooleanfinal booleanisEnum()booleanbooleanprivate booleanprivate booleanisRepeated(XClass javaType, Type type) private static intprivate static longvoidtoString()private voidvalidateField(XClass clazz, XField field) private StringvalidateOneOf(XClass clazz, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs, ProtoField annotation, String fieldName, boolean isRepeated, boolean isRequired) Methods inherited from class ProtoTypeMetadata
appendDocumentation, getAnnotatedClassName, getDocumentation, getFileName, getFullName, getJavaClass, getJavaClassName, getName, getOuterType, getProtoDocs, getProtoTypeId, getSubClassNames, isImported, setOuterType, validateName
-
Field Details
-
EMPTY_BYTES
private static final byte[] EMPTY_BYTES -
log
-
protoSchemaGenerator
-
typeFactory
-
fieldsByNumber
-
annotatedClass
-
isAdapter
private final boolean isAdapter -
isIndexedContainer
private final boolean isIndexedContainer -
isIterableContainer
private final boolean isIterableContainer -
factory
-
unknownFieldSetField
-
unknownFieldSetGetter
-
unknownFieldSetSetter
-
innerTypes
-
-
Constructor Details
-
ProtoMessageTypeMetadata
protected ProtoMessageTypeMetadata(BaseProtoSchemaGenerator protoSchemaGenerator, XClass annotatedClass, XClass javaClass)
-
-
Method Details
-
getProtoName
-
getAnnotatedClass
Description copied from class:ProtoTypeMetadataAt this level we pretend the Java class and the annotated class are one and the same, but subclasses may decide otherwise.- Overrides:
getAnnotatedClassin classProtoTypeMetadata
-
isAdapter
public boolean isAdapter()- Overrides:
isAdapterin classProtoTypeMetadata
-
isIndexedContainer
public boolean isIndexedContainer() -
isIterableContainer
public boolean isIterableContainer() -
isContainer
public boolean isContainer() -
getFactory
-
getUnknownFieldSetField
-
getUnknownFieldSetGetter
-
getUnknownFieldSetSetter
-
getFields
-
addInnerType
-
generateProto
- Specified by:
generateProtoin interfaceHasProtoSchema- Overrides:
generateProtoin classProtoTypeMetadata
-
isEnum
public final boolean isEnum()- Specified by:
isEnumin classProtoTypeMetadata
-
getEnumMemberByName
Description copied from class:ProtoTypeMetadataThis is only for enums.- Specified by:
getEnumMemberByNamein classProtoTypeMetadata
-
getEnumMemberByNumber
- Specified by:
getEnumMemberByNumberin classProtoTypeMetadata
-
scanMemberAnnotations
public void scanMemberAnnotations()- Overrides:
scanMemberAnnotationsin classProtoTypeMetadata
-
getFieldByPropertyName
-
checkInstantiability
private void checkInstantiability()Ensure we either have a suitable constructor or a factory method. -
discoverFields
-
discoverFieldsFromClassMethods
private void discoverFieldsFromClassMethods(XClass clazz, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs) -
defaultType
-
discoverFieldsFromClassFields
private void discoverFieldsFromClassFields(XClass clazz, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs) -
getName
-
validateOneOf
private String validateOneOf(XClass clazz, Map<String, ProtoFieldMetadata> fieldsByName, Set<String> oneofs, ProtoField annotation, String fieldName, boolean isRepeated, boolean isRequired) -
validateField
-
detectPropertyNameFromSetter
-
determinePropertyNameFromGetter
-
discoverFieldsFromRecord
private void discoverFieldsFromRecord(XClass clazz, Map<Integer, ProtoFieldMetadata> fieldsByNumber, Map<String, ProtoFieldMetadata> fieldsByName) -
getNumber
-
checkReserved
-
getCollectionImplementationFromAnnotation
-
getMapImplementationFromAnnotation
-
getJavaTypeFromAnnotation
-
getDefaultValue
-
cescape
-
cescape
static byte[] cescape(byte[] bytes) -
parseLong
-
parseInt
-
getCollectionImplementation
-
getMapImplementation
-
getProtobufType
-
isArray
-
isRepeated
-
isMap
-
findGetter
-
findSetter
-
checkForbiddenAnnotations
-
toString
-