Modifier | Constructor and Description |
---|---|
protected |
EnumRule(RuleFactory ruleFactory) |
Modifier and Type | Method and Description |
---|---|
protected com.sun.codemodel.JFieldVar |
addConstructorAndFields(EnumDefinition enumDefinition,
com.sun.codemodel.JDefinedClass _enum) |
protected void |
addEnumConstants(EnumDefinition enumDefinition,
com.sun.codemodel.JDefinedClass _enum,
Schema schema) |
protected void |
addFactoryMethod(EnumDefinition enumDefinition,
com.sun.codemodel.JDefinedClass _enum) |
protected void |
addFieldAccessors(com.sun.codemodel.JDefinedClass _enum,
com.sun.codemodel.JFieldVar valueField) |
protected void |
addInterfaces(com.sun.codemodel.JDefinedClass jclass,
com.fasterxml.jackson.databind.JsonNode javaInterfaces) |
protected com.sun.codemodel.JFieldVar |
addQuickLookupMap(EnumDefinition enumDefinition,
com.sun.codemodel.JDefinedClass _enum) |
protected void |
addToString(com.sun.codemodel.JDefinedClass _enum,
com.sun.codemodel.JFieldVar valueField) |
com.sun.codemodel.JType |
apply(String nodeName,
com.fasterxml.jackson.databind.JsonNode node,
com.fasterxml.jackson.databind.JsonNode parent,
com.sun.codemodel.JClassContainer container,
Schema schema)
Applies this schema rule to take the required code generation steps.
|
protected void |
applyCustomizations(EnumDefinition enumDefinition,
com.sun.codemodel.JDefinedClass _enum)
|
protected EnumDefinition |
buildEnumDefinition(String nodeName,
com.fasterxml.jackson.databind.JsonNode node,
com.sun.codemodel.JType backingType)
Builds the effective definition of an enumeration is based on what schema elements are provided.
|
protected EnumDefinition |
buildEnumDefinitionWithJavaEnumNamesExtension(String nodeName,
com.fasterxml.jackson.databind.JsonNode parentNode,
com.fasterxml.jackson.databind.JsonNode enums,
com.fasterxml.jackson.databind.JsonNode javaEnumNames,
com.sun.codemodel.JType backingType) |
protected EnumDefinition |
buildEnumDefinitionWithJavaEnumsExtension(String nodeName,
com.fasterxml.jackson.databind.JsonNode enumNode,
com.fasterxml.jackson.databind.JsonNode enums,
com.fasterxml.jackson.databind.JsonNode javaEnums,
com.sun.codemodel.JType type) |
protected EnumDefinition |
buildEnumDefinitionWithNoExtensions(String nodeName,
com.fasterxml.jackson.databind.JsonNode parentNode,
com.fasterxml.jackson.databind.JsonNode enums,
com.sun.codemodel.JType backingType) |
protected com.sun.codemodel.JDefinedClass |
createEnum(com.fasterxml.jackson.databind.JsonNode node,
String nodeName,
com.sun.codemodel.JClassContainer container) |
protected String |
getConstantName(String nodeName,
String customName) |
protected String |
getEnumName(String nodeName,
com.fasterxml.jackson.databind.JsonNode node,
com.sun.codemodel.JClassContainer container) |
protected boolean |
isString(com.sun.codemodel.JType type) |
protected String |
makeUnique(String name,
Collection<String> existingNames) |
protected EnumRule(RuleFactory ruleFactory)
public com.sun.codemodel.JType apply(String nodeName, com.fasterxml.jackson.databind.JsonNode node, com.fasterxml.jackson.databind.JsonNode parent, com.sun.codemodel.JClassContainer container, Schema schema)
A Java Enum
is created, with constants for each of the enum
values present in the schema. The enum name is derived from the nodeName,
and the enum type itself is created as an inner class of the owning type.
In the rare case that no owning type exists (the enum is the root of the
schema), then the enum becomes a public class in its own right.
The actual JSON value for each enum constant is held in a property called
"value" in the generated type. A static factory method
fromValue(String)
is added to the generated enum, and the
methods are annotated to allow Jackson to marshal/unmarshal values
correctly.
apply
in interface Rule<com.sun.codemodel.JClassContainer,com.sun.codemodel.JType>
nodeName
- the name of the property which is an "enum"node
- the enum nodeparent
- the parent nodecontainer
- the class container (class or package) to which this enum
should be addedschema
- the schema to which this schema rule (and the given node)
belongs.protected void addEnumConstants(EnumDefinition enumDefinition, com.sun.codemodel.JDefinedClass _enum, Schema schema)
protected void applyCustomizations(EnumDefinition enumDefinition, com.sun.codemodel.JDefinedClass _enum)
EnumRule
implementation to extend EnumRule
and do some custom behaviors.
This method is specifically added so that custom enum rule developers do not need to override the apply method.
enumDefinition
- the enum definition._enum
- the generated class modelprotected EnumDefinition buildEnumDefinition(String nodeName, com.fasterxml.jackson.databind.JsonNode node, com.sun.codemodel.JType backingType)
buildEnumDefinitionWithNoExtensions(String, JsonNode, JsonNode, JType)
For "enum" and "javaEnums" handled by buildEnumDefinitionWithJavaEnumsExtension(String, JsonNode, JsonNode, JsonNode, JType)
For "enum" and "javaEnumNames" handled by buildEnumDefinitionWithJavaEnumNamesExtension(String, JsonNode, JsonNode, JsonNode, JType)
nodeName
- the name of the property which is an "enum"node
- the enum nodebackingType
- the object backing the value of enum, most commonly this is a stringprotected EnumDefinition buildEnumDefinitionWithNoExtensions(String nodeName, com.fasterxml.jackson.databind.JsonNode parentNode, com.fasterxml.jackson.databind.JsonNode enums, com.sun.codemodel.JType backingType)
protected EnumDefinition buildEnumDefinitionWithJavaEnumNamesExtension(String nodeName, com.fasterxml.jackson.databind.JsonNode parentNode, com.fasterxml.jackson.databind.JsonNode enums, com.fasterxml.jackson.databind.JsonNode javaEnumNames, com.sun.codemodel.JType backingType)
protected EnumDefinition buildEnumDefinitionWithJavaEnumsExtension(String nodeName, com.fasterxml.jackson.databind.JsonNode enumNode, com.fasterxml.jackson.databind.JsonNode enums, com.fasterxml.jackson.databind.JsonNode javaEnums, com.sun.codemodel.JType type)
protected com.sun.codemodel.JDefinedClass createEnum(com.fasterxml.jackson.databind.JsonNode node, String nodeName, com.sun.codemodel.JClassContainer container) throws ClassAlreadyExistsException
ClassAlreadyExistsException
protected com.sun.codemodel.JFieldVar addConstructorAndFields(EnumDefinition enumDefinition, com.sun.codemodel.JDefinedClass _enum)
protected void addFactoryMethod(EnumDefinition enumDefinition, com.sun.codemodel.JDefinedClass _enum)
protected void addFieldAccessors(com.sun.codemodel.JDefinedClass _enum, com.sun.codemodel.JFieldVar valueField)
protected com.sun.codemodel.JFieldVar addQuickLookupMap(EnumDefinition enumDefinition, com.sun.codemodel.JDefinedClass _enum)
protected void addToString(com.sun.codemodel.JDefinedClass _enum, com.sun.codemodel.JFieldVar valueField)
protected boolean isString(com.sun.codemodel.JType type)
protected String getEnumName(String nodeName, com.fasterxml.jackson.databind.JsonNode node, com.sun.codemodel.JClassContainer container)
protected String makeUnique(String name, Collection<String> existingNames)
protected void addInterfaces(com.sun.codemodel.JDefinedClass jclass, com.fasterxml.jackson.databind.JsonNode javaInterfaces)
Copyright © 2022. All rights reserved.