Package org.jibx.binding.def
Class PropertyDefinition
- java.lang.Object
-
- org.jibx.binding.def.PropertyDefinition
-
public class PropertyDefinition extends java.lang.ObjectProperty definition from binding. This organizes shared information for bindings linked to fields or get/set methods of an object, and provides methods for related code generation.- Author:
- Dennis M. Sosnoski
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String[]FLAG_METHOD_SIGNATURESprivate static java.lang.String[]GET_METHOD_SIGNATURESprivate ClassItemm_fieldItemInformation for field (if given, may benull).private ClassItemm_flagMethodInformation for flag method (if given, may benull).private ClassItemm_getMethodInformation for get method (if given, may benull).private java.lang.Stringm_getValueTypeFully qualified name of declared type of value loaded.private booleanm_isImplicitReference to implicit value from collection.private booleanm_isOptionalOptional item flag.private booleanm_isThisReference to "this" property of object flag.private IContextObjm_objContextContaining object context.private ClassItemm_setMethodInformation for set method (if given, may benull).private java.lang.Stringm_setValueTypeFully qualified name of declared type of value stored.private ClassItemm_testMethodInformation for test method (if given, may benull).private java.lang.Stringm_typeNameFully qualified name of actual type of value.private static java.lang.String[]TEST_METHOD_SIGNATURES
-
Constructor Summary
Constructors Constructor Description PropertyDefinition(java.lang.String type, IContextObj obj, boolean opt)Constructor for implicit object reference.PropertyDefinition(IContainer parent, IContextObj obj, java.lang.String type, boolean isthis, boolean opt, java.lang.String fname, java.lang.String test, java.lang.String flag, java.lang.String get, java.lang.String set)Constructor.PropertyDefinition(IContextObj obj, boolean opt)Constructor for "this" object reference.PropertyDefinition(PropertyDefinition original)Copy constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voiddiscardValue(MethodBuilder mb)Append instruction to pop the value from the stack.private voidduplicateValue(MethodBuilder mb)Append instruction to duplicate the value on the stack.voidgenFlag(MethodBuilder mb)Generate code to call flag method with value on stack.voidgenLoad(ContextMethodBuilder mb)Generate code to load property value to stack.voidgenStore(MethodBuilder mb)Generate code to store property value from stack.BranchWrappergenTest(ContextMethodBuilder mb)Generate code to test if property is present.java.lang.StringgetGetValueType()Get value type as fully qualified name for loaded property value.java.lang.StringgetName()Get property name.java.lang.StringgetSetValueType()Get value type as fully qualified name for stored property value.java.lang.StringgetTypeName()Get declared type fully qualified name.booleanhasFlag()Check if property has flag method.booleanhasTest()Check if property has presence test.booleanisFlagOnly()Check if property is flag only.booleanisImplicit()Check if property is implicit value from collection.booleanisLoadable()Check if the value can be loaded.booleanisOptional()Check if property is optional.booleanisTestOnly()Check if property is test only.booleanisThis()Check if property is "this" reference for object.voidsetOptional(boolean opt)Set flag for an optional property.voidswitchProperty()Switch property from "this" to "implicit".java.lang.StringtoString()
-
-
-
Field Detail
-
TEST_METHOD_SIGNATURES
private static final java.lang.String[] TEST_METHOD_SIGNATURES
-
GET_METHOD_SIGNATURES
private static final java.lang.String[] GET_METHOD_SIGNATURES
-
FLAG_METHOD_SIGNATURES
private static final java.lang.String[] FLAG_METHOD_SIGNATURES
-
m_isThis
private boolean m_isThis
Reference to "this" property of object flag.
-
m_isImplicit
private boolean m_isImplicit
Reference to implicit value from collection.
-
m_isOptional
private boolean m_isOptional
Optional item flag.
-
m_objContext
private final IContextObj m_objContext
Containing object context.
-
m_typeName
private final java.lang.String m_typeName
Fully qualified name of actual type of value.
-
m_getValueType
private final java.lang.String m_getValueType
Fully qualified name of declared type of value loaded.
-
m_setValueType
private final java.lang.String m_setValueType
Fully qualified name of declared type of value stored.
-
m_fieldItem
private final ClassItem m_fieldItem
Information for field (if given, may benull).
-
m_testMethod
private final ClassItem m_testMethod
Information for test method (if given, may benull).
-
m_flagMethod
private final ClassItem m_flagMethod
Information for flag method (if given, may benull).
-
m_getMethod
private final ClassItem m_getMethod
Information for get method (if given, may benull).
-
m_setMethod
private final ClassItem m_setMethod
Information for set method (if given, may benull).
-
-
Constructor Detail
-
PropertyDefinition
public PropertyDefinition(IContainer parent, IContextObj obj, java.lang.String type, boolean isthis, boolean opt, java.lang.String fname, java.lang.String test, java.lang.String flag, java.lang.String get, java.lang.String set) throws JiBXException
Constructor.- Parameters:
parent- containing binding definition structureobj- containing object contexttype- fully qualified name of typeisthis- "this" object reference flagopt- optional property flagfname- containing object field name for property (may benull)test- containing object method to test for property present (may benull)flag- containing object method to flag property present (may benull)get- containing object method to get property value (may benull)set- containing object method to set property value (may benull)- Throws:
JiBXException- if configuration error
-
PropertyDefinition
public PropertyDefinition(IContextObj obj, boolean opt)
Constructor for "this" object reference.- Parameters:
obj- containing object contextopt- optional property flag
-
PropertyDefinition
public PropertyDefinition(java.lang.String type, IContextObj obj, boolean opt)Constructor for implicit object reference.- Parameters:
type- object type suppliedobj- containing object contextopt- optional property flag
-
PropertyDefinition
public PropertyDefinition(PropertyDefinition original)
Copy constructor.- Parameters:
original-
-
-
Method Detail
-
isThis
public boolean isThis()
Check if property is "this" reference for object.- Returns:
trueif reference to "this",falseif not
-
isImplicit
public boolean isImplicit()
Check if property is implicit value from collection.- Returns:
trueif implicit,falseif not
-
switchProperty
public void switchProperty()
Switch property from "this" to "implicit".
-
isOptional
public boolean isOptional()
Check if property is optional.- Returns:
trueif optional,falseif required
-
setOptional
public void setOptional(boolean opt)
Set flag for an optional property.- Parameters:
opt-trueif optional property,falseif not
-
isLoadable
public boolean isLoadable()
Check if the value can be loaded.- Returns:
trueif loadable,falseif not
-
getName
public java.lang.String getName()
Get property name. If a field is defined this is the same as the field; otherwise it is either the get method name (with leading "get" stripped, if present) or the set method (with leading "set" stripped, if present), whichever is found.- Returns:
- name for this property
-
getTypeName
public java.lang.String getTypeName()
Get declared type fully qualified name.- Returns:
- fully qualified class name of declared type
-
getGetValueType
public java.lang.String getGetValueType()
Get value type as fully qualified name for loaded property value.- Returns:
- fully qualified class name of value type
-
getSetValueType
public java.lang.String getSetValueType()
Get value type as fully qualified name for stored property value.- Returns:
- fully qualified class name of value type
-
hasTest
public boolean hasTest()
Check if property has presence test. Code needs to be generated to check for the presence of the property if it is optional and either a test method is defined or the value is an object reference.- Returns:
trueif presence test needed,falseif not
-
isTestOnly
public boolean isTestOnly()
Check if property is test only.- Returns:
trueif test-only property,falseif not
-
hasFlag
public boolean hasFlag()
Check if property has flag method.- Returns:
trueif flag method defined,falseif not
-
isFlagOnly
public boolean isFlagOnly()
Check if property is flag only.- Returns:
trueif flag-only property,falseif not
-
duplicateValue
private void duplicateValue(MethodBuilder mb)
Append instruction to duplicate the value on the stack. This will use the appropriate instruction for the size of the value.- Parameters:
mb-
-
discardValue
private void discardValue(MethodBuilder mb)
Append instruction to pop the value from the stack. This will use the appropriate instruction for the size of the value.- Parameters:
mb-
-
genTest
public BranchWrapper genTest(ContextMethodBuilder mb) throws JiBXException
Generate code to test if property is present. The generated code assumes that the top of the stack is the reference for the containing object, and consumes this value for the test. The target for the returned branch instruction must be set by the caller.- Parameters:
mb- method builder- Returns:
- wrapper for branch instruction taken when property is missing
- Throws:
JiBXException
-
genFlag
public void genFlag(MethodBuilder mb) throws JiBXException
Generate code to call flag method with value on stack. The generated code assumes that the reference to the containing object and the value to be stored have already been pushed on the stack. It consumes these, leaving nothing. If the property value is not directly accessible from the context of the method being generated this automatically constructs an access method and uses that method.- Parameters:
mb- method builder- Throws:
JiBXException- if configuration error
-
genLoad
public void genLoad(ContextMethodBuilder mb) throws JiBXException
Generate code to load property value to stack. The generated code assumes that the top of the stack is the reference for the containing object. It consumes this and leaves the actual value on the stack. If the property value is not directly accessible from the context of the method being generated this automatically constructs an access method and uses that method.- Parameters:
mb- method builder- Throws:
JiBXException- if configuration error
-
genStore
public void genStore(MethodBuilder mb) throws JiBXException
Generate code to store property value from stack. The generated code assumes that the reference to the containing object and the value to be stored have already been pushed on the stack. It consumes these, leaving nothing. If the property value is not directly accessible from the context of the method being generated this automatically constructs an access method and uses that method.- Parameters:
mb- method builder- Throws:
JiBXException- if configuration error
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-