[DEV] commit all with new insland
This commit is contained in:
parent
f5f6d34135
commit
139a01063c
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
|
||||
/__pycache__/
|
||||
/bin/
|
||||
/Operator/
|
||||
/DrawerProperties/
|
||||
|
11
.project
11
.project
@ -21,4 +21,15 @@
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1646149232194</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
|
@ -22,10 +22,22 @@ public class BuilderIntrospection implements Builder {
|
||||
this.cacheModel.findOrCreate(model, null, classType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(final Object element) throws ExmlBuilderException {
|
||||
if (element == null) {
|
||||
return;
|
||||
}
|
||||
final IntrospectionObject introspectionObject = (IntrospectionObject) element;
|
||||
if (introspectionObject.getModelIntrospection() == null) {
|
||||
// property on nothing ???
|
||||
return;
|
||||
}
|
||||
introspectionObject.generateTheObject();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newComment(final Object element, final String comment) throws ExmlException {
|
||||
}
|
||||
public void newComment(final Object element, final String comment) throws ExmlException {}
|
||||
|
||||
@Override
|
||||
public Object newDeclaration(final Object parent, final String text) throws ExmlException {
|
||||
@ -38,7 +50,7 @@ public class BuilderIntrospection implements Builder {
|
||||
if (parent == null) {
|
||||
return null;
|
||||
}
|
||||
Log.warning("new element on NodeName=" + nodeName);
|
||||
Log.verbose("new element on NodeName=" + nodeName);
|
||||
final IntrospectionObject introspectionObject = (IntrospectionObject) parent;
|
||||
IntrospectionModel model = introspectionObject.getModelIntrospection();
|
||||
Class<?> typeClass = null;
|
||||
@ -97,6 +109,33 @@ public class BuilderIntrospection implements Builder {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newElementFinished(final Object parent, final String tmpName, final Object element) throws ExmlException {
|
||||
Log.debug("new element fionished : ==> " + tmpName);
|
||||
if (parent == null || element == null) {
|
||||
return;
|
||||
}
|
||||
final IntrospectionObject introspectionElementObject = (IntrospectionObject) element;
|
||||
if (introspectionElementObject.getModelIntrospection() == null) {
|
||||
// property on nothing ???
|
||||
return;
|
||||
}
|
||||
final IntrospectionObject introspectionParentObject = (IntrospectionObject) parent;
|
||||
if (introspectionParentObject.getModelIntrospection() == null) {
|
||||
if (tmpName.equals(this.rootNodeName)) {
|
||||
// this is the root node ...
|
||||
Object tmpp = introspectionParentObject.getData();
|
||||
if (tmpp instanceof List) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> elementsOut = (List<Object>) tmpp;
|
||||
elementsOut.add(introspectionElementObject.getData());
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
introspectionParentObject.addObject(tmpName, introspectionElementObject.getData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newProperty(final Object element, final String propertyName, final String propertyValue) throws ExmlException {
|
||||
if (element == null) {
|
||||
@ -125,8 +164,8 @@ public class BuilderIntrospection implements Builder {
|
||||
String[] elems = propertyValue.split(";");
|
||||
Class<?> subTypeClass = typeClass.getComponentType();
|
||||
IntrospectionModel inferData = this.cacheModel.findOrCreate(ModelType.NORMAL, null, subTypeClass);
|
||||
List<Object> out = new ArrayList<Object>();
|
||||
for (int iii=0; iii<elems.length; iii++) {
|
||||
List<Object> out = new ArrayList<>();
|
||||
for (int iii = 0; iii < elems.length; iii++) {
|
||||
Object tmp = inferData.getValueFromText(elems[iii]);
|
||||
out.add(tmp);
|
||||
}
|
||||
@ -136,8 +175,8 @@ public class BuilderIntrospection implements Builder {
|
||||
Class<?> subTypeClass = introspectionObject.getTypeOfSubProperty(propertyName);
|
||||
Log.verbose("Create List new 'SUB' class: '" + typeClass.getCanonicalName() + "' for property '" + propertyName + "'");
|
||||
IntrospectionModel inferData = this.cacheModel.findOrCreate(ModelType.NORMAL, null, subTypeClass);
|
||||
List<Object> out = new ArrayList<Object>();
|
||||
for (int iii=0; iii<elems.length; iii++) {
|
||||
List<Object> out = new ArrayList<>();
|
||||
for (int iii = 0; iii < elems.length; iii++) {
|
||||
Object tmp = inferData.getValueFromText(elems[iii]);
|
||||
out.add(tmp);
|
||||
}
|
||||
@ -179,45 +218,4 @@ public class BuilderIntrospection implements Builder {
|
||||
}
|
||||
introspectionObject.setText(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(final Object element) throws ExmlBuilderException {
|
||||
if (element == null) {
|
||||
return;
|
||||
}
|
||||
final IntrospectionObject introspectionObject = (IntrospectionObject) element;
|
||||
if (introspectionObject.getModelIntrospection() == null) {
|
||||
// property on nothing ???
|
||||
return;
|
||||
}
|
||||
introspectionObject.generateTheObject();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newElementFinished(final Object parent, final String tmpName, final Object element) throws ExmlException {
|
||||
Log.debug("new element fionished : ==> " + tmpName);
|
||||
if (parent == null || element == null) {
|
||||
return;
|
||||
}
|
||||
final IntrospectionObject introspectionElementObject = (IntrospectionObject) element;
|
||||
if (introspectionElementObject.getModelIntrospection() == null) {
|
||||
// property on nothing ???
|
||||
return;
|
||||
}
|
||||
final IntrospectionObject introspectionParentObject = (IntrospectionObject) parent;
|
||||
if (introspectionParentObject.getModelIntrospection() == null) {
|
||||
if (tmpName.equals(this.rootNodeName)) {
|
||||
// this is the root node ...
|
||||
Object tmpp = introspectionParentObject.getData();
|
||||
if( tmpp instanceof List) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> elementsOut = (List<Object>)tmpp;
|
||||
elementsOut.add(introspectionElementObject.getData());
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
introspectionParentObject.addObject(tmpName, introspectionElementObject.getData());
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ record ConstructorModel(
|
||||
Constructor<?> constructor) {}
|
||||
|
||||
public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
|
||||
private final boolean isRecord;
|
||||
// TODO Optimize this with external object for basic types....
|
||||
private final Method valueof; // used for the set Text if the object is an end point...
|
||||
private final Method tostring; // used for the set Text if the object is an end point...
|
||||
@ -47,10 +47,7 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
} else {
|
||||
this.isSubClass = false;
|
||||
}
|
||||
final boolean isRecord = Record.class.isAssignableFrom(classType);
|
||||
if (isRecord) {
|
||||
Log.error("Detect record !!! ");
|
||||
}
|
||||
this.isRecord = Record.class.isAssignableFrom(classType);
|
||||
if (classType.isPrimitive()) {
|
||||
Log.critical("Detect primitive ==> impossible case !!! ");
|
||||
}
|
||||
@ -198,7 +195,7 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
}
|
||||
final List<String> recordAllPossibleValues = new ArrayList<>();
|
||||
final List<String> recordAllPossibleValuesFiltered = new ArrayList<>();
|
||||
if (isRecord) {
|
||||
if (this.isRecord) {
|
||||
for (ConstructorModel elem : this.constructors) {
|
||||
for (int iii = 0; iii < elem.values().length; iii++) {
|
||||
String tmpp = elem.values()[iii];
|
||||
@ -302,7 +299,7 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (isRecord) {
|
||||
if (this.isRecord) {
|
||||
if (recordAllPossibleValues.contains(o.getName())) {
|
||||
// This list is the real list of record members
|
||||
recordAllPossibleValuesFiltered.add(o.getName());
|
||||
@ -367,7 +364,7 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
List<Method> methodsSet;
|
||||
List<Method> methodsIs;
|
||||
if (!Enum.class.isAssignableFrom(classType)) {
|
||||
if (isRecord) {
|
||||
if (this.isRecord) {
|
||||
methodsGet = methods.stream().filter(o -> recordAllPossibleValues.contains(o.getName())).collect(Collectors.toList());
|
||||
methodsSet = new ArrayList<>();
|
||||
methodsIs = new ArrayList<>();
|
||||
@ -399,13 +396,13 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
}
|
||||
// associate methods by pair.
|
||||
for (final Method method : methodsGet) {
|
||||
final String name = Tools.decapitalizeFirst(isRecord ? method.getName() : method.getName().substring(3));
|
||||
final String name = Tools.decapitalizeFirst(this.isRecord ? method.getName() : method.getName().substring(3));
|
||||
IntrospectionProperty prop = updateForMethod(name, method, ReflectTools.getTypeReturnFunction(method));
|
||||
// generate getter and setter with field.
|
||||
IntrospectionPropertyMethodGetter modifier = new IntrospectionPropertyMethodGetter(method);
|
||||
prop.setGetter(modifier);
|
||||
}
|
||||
if (!isRecord) {
|
||||
if (!this.isRecord) {
|
||||
for (final Method method : methodsIs) {
|
||||
final String name = Tools.decapitalizeFirst(method.getName().substring(2));
|
||||
IntrospectionProperty prop = updateForMethod(name, method, ReflectTools.getTypeReturnFunction(method));
|
||||
@ -561,7 +558,7 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
}
|
||||
inputsTmp[iii + offset] = valueToInject;
|
||||
}
|
||||
if (lastEmpty > empty) {
|
||||
if (lastEmpty >= empty && (inputs == null || inputs.length < inputsTmp.length)) {
|
||||
inputs = inputsTmp;
|
||||
betterModel = elem;
|
||||
lastEmpty = empty;
|
||||
@ -887,7 +884,7 @@ public class IntrospectionModelComplex extends IntrospectionModel {
|
||||
}
|
||||
|
||||
private void setValue(final Object data, final String beanName, final Object value) throws ExmlBuilderException {
|
||||
Log.error(" Set value ='" + beanName + "' propertyValue='" + value + "' " + value.getClass().getCanonicalName());
|
||||
Log.verbose(" Set value ='" + beanName + "' propertyValue='" + value + "' " + value.getClass().getCanonicalName());
|
||||
{
|
||||
// by default use setter to set the property
|
||||
final IntrospectionProperty propMethode = findBeanNodeDescription(beanName);
|
||||
|
@ -25,182 +25,15 @@ import org.atriasoft.exml.exception.ExmlBuilderException;
|
||||
import org.atriasoft.exml.internal.Log;
|
||||
|
||||
public class ReflectTools {
|
||||
private ReflectTools() {}
|
||||
|
||||
public static Class<?>[] getTypeField(final Field fieldDescription) {
|
||||
Class<?> type = fieldDescription.getType();
|
||||
Class<?> subType = null;
|
||||
Type empppe = fieldDescription.getGenericType();
|
||||
if (empppe instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
if (realType.length > 0) {
|
||||
try {
|
||||
subType = Class.forName(realType[0].getTypeName());
|
||||
} catch (ClassNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Class<?>[] {type, subType};
|
||||
}
|
||||
|
||||
|
||||
public static Class<?>[] getTypeReturnFunction(/*@NotNull*/ final Method getter) throws Exception {
|
||||
Class<?> type = null;
|
||||
Class<?> subType = null;
|
||||
type = getter.getReturnType();
|
||||
if (!Enum.class.isAssignableFrom(type)) {
|
||||
Type empppe = getter.getGenericReturnType();
|
||||
if (empppe instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
if (realType.length > 0) {
|
||||
subType = Class.forName(realType[0].getTypeName());
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Class<?>[] {type, subType};
|
||||
}
|
||||
|
||||
public static Class<?>[] getTypeParameterfunction(final Method setter) throws Exception {
|
||||
Class<?> type = null;
|
||||
Class<?> subType = null;
|
||||
|
||||
type = setter.getParameters()[0].getType();
|
||||
if (List.class.isAssignableFrom(type)) {
|
||||
Class<?> internalModelClass = null;
|
||||
Type[] empppe = setter.getGenericParameterTypes();
|
||||
if (empppe.length > 0) {
|
||||
if (empppe[0] instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
if (realType.length > 0) {
|
||||
Log.warning(" -->> " + realType[0]);
|
||||
internalModelClass = Class.forName(realType[0].getTypeName());
|
||||
}
|
||||
}
|
||||
}
|
||||
subType = internalModelClass;
|
||||
}
|
||||
return new Class<?>[] {type, subType};
|
||||
}
|
||||
|
||||
public static Class<?>[] getTypeParameterfunction(final Constructor<?> elem, final int paramId) throws ClassNotFoundException {
|
||||
Class<?> type = null;
|
||||
Class<?> subType = null;
|
||||
|
||||
type = elem.getParameters()[paramId].getType();
|
||||
if (List.class.isAssignableFrom(type)) {
|
||||
Class<?> internalModelClass = null;
|
||||
Type[] empppe = elem.getGenericParameterTypes();
|
||||
if (empppe.length > paramId) {
|
||||
if (empppe[paramId] instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
//Log.info("ppplllppp: " + realType.length);
|
||||
if (realType.length > 0) {
|
||||
Log.warning(" -->> " + realType[0]);
|
||||
internalModelClass = Class.forName(realType[0].getTypeName());
|
||||
}
|
||||
}
|
||||
}
|
||||
subType = internalModelClass;
|
||||
}
|
||||
return new Class<?>[] {type, subType};
|
||||
}
|
||||
|
||||
public static Boolean getIsCaseSensitive(final Field element, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlCaseSensitive on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsCaseSensitive(final Method element, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlCaseSensitive on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
public static Boolean getIsCaseSensitive(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlCaseSensitive.class);
|
||||
public static Boolean getIsAttribute(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlAttribute.class);
|
||||
if (annotation.length == 0) {
|
||||
return parentValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlCaseSensitive on " + constructor.getClass().getCanonicalName());
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlAttribute on " + constructor.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultCaseSensitive(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultCaseSensitive on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultAttribute(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultAttibute.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultAttibute on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultAttibute) annotation[0]).value();
|
||||
}
|
||||
public static Boolean getIsIgnoreUnknown(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlIgnoreUnknow.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlIgnoreUnknow on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlIgnoreUnknow) annotation[0]).value();
|
||||
}
|
||||
public static Boolean getIsDefaultNullValue(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultNullValue.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultNullValue on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultNullValue) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultManaged(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultManaged.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultManaged on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultManaged) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultOptional(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultOptional.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultOptional on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultOptional) annotation[0]).value();
|
||||
return ((XmlAttribute) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsAttribute(final Field element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
@ -225,15 +58,114 @@ public class ReflectTools {
|
||||
return ((XmlAttribute) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsAttribute(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlAttribute.class);
|
||||
public static Boolean getIsCaseSensitive(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return parentValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlAttribute on " + constructor.getClass().getCanonicalName());
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlCaseSensitive on " + constructor.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlAttribute) annotation[0]).value();
|
||||
return ((XmlCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsCaseSensitive(final Field element, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlCaseSensitive on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsCaseSensitive(final Method element, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlCaseSensitive on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultAttribute(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultAttibute.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultAttibute on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultAttibute) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultCaseSensitive(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultCaseSensitive.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultCaseSensitive on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultCaseSensitive) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultManaged(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultManaged.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultManaged on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultManaged) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultNullValue(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultNullValue.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultNullValue on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultNullValue) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsDefaultOptional(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlDefaultOptional.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlDefaultOptional on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlDefaultOptional) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsIgnoreUnknown(final Class<?> classType, final Boolean defaultValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = classType.getDeclaredAnnotationsByType(XmlIgnoreUnknow.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlIgnoreUnknow on " + classType.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlIgnoreUnknow) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsManaged(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlManaged.class);
|
||||
if (annotation.length == 0) {
|
||||
return parentValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlManaged on " + constructor.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlManaged) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsManaged(final Field element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
@ -258,15 +190,15 @@ public class ReflectTools {
|
||||
return ((XmlManaged) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsManaged(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlManaged.class);
|
||||
public static Boolean getIsOptional(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlOptional.class);
|
||||
if (annotation.length == 0) {
|
||||
return parentValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlManaged on " + constructor.getClass().getCanonicalName());
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlOptional on " + constructor.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlManaged) annotation[0]).value();
|
||||
return ((XmlOptional) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsOptional(final Field element, final Boolean parentValue) throws Exception {
|
||||
@ -291,15 +223,92 @@ public class ReflectTools {
|
||||
return ((XmlOptional) annotation[0]).value();
|
||||
}
|
||||
|
||||
public static Boolean getIsOptional(final Constructor<?> constructor, final Parameter element, final Boolean parentValue) throws ExmlBuilderException {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlOptional.class);
|
||||
public static String getListName(final Field element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlList.class);
|
||||
if (annotation.length == 0) {
|
||||
return parentValue;
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new ExmlBuilderException("Must not have more than 1 element @XmlOptional on " + constructor.getClass().getCanonicalName());
|
||||
throw new Exception("Must not have more than 1 element @XmlList on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
return ((XmlOptional) annotation[0]).value();
|
||||
final String tmp = ((XmlList) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlList is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public static String getListName(final Method element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlList.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlList on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
final String tmp = ((XmlList) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlList is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public static String[] getNames(final Constructor<?> constructor, final Parameter element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlName.class);
|
||||
if (annotation.length == 0) {
|
||||
if (defaultValue == null) {
|
||||
return null;
|
||||
}
|
||||
return new String[] { defaultValue };
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlName on " + constructor.getClass().getCanonicalName());
|
||||
}
|
||||
final String[] tmp = ((XmlName) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
if (tmp.length == 0) {
|
||||
throw new Exception("Set empty list value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
for (final String elem : tmp) {
|
||||
if (elem == null) {
|
||||
throw new Exception("Set null String in list of value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
if (elem.isEmpty()) {
|
||||
throw new Exception("Set empty String in list of value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public static String[] getNames(final Constructor<?> element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlName.class);
|
||||
if (annotation.length == 0) {
|
||||
if (defaultValue == null) {
|
||||
return null;
|
||||
}
|
||||
return new String[] { defaultValue };
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlName on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
final String[] tmp = ((XmlName) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
if (tmp.length == 0) {
|
||||
throw new Exception("Set empty list value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
for (final String elem : tmp) {
|
||||
if (elem == null) {
|
||||
throw new Exception("Set null String in list of value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
if (elem.isEmpty()) {
|
||||
throw new Exception("Set empty String in list of value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public static String[] getNames(final Field element, final String defaultValue) throws Exception {
|
||||
@ -359,91 +368,86 @@ public class ReflectTools {
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
public static String[] getNames(final Constructor<?> element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlName.class);
|
||||
if (annotation.length == 0) {
|
||||
if (defaultValue == null) {
|
||||
return null;
|
||||
}
|
||||
return new String[] { defaultValue };
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlName on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
final String[] tmp = ((XmlName) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
if (tmp.length == 0) {
|
||||
throw new Exception("Set empty list value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
for (final String elem : tmp) {
|
||||
if (elem == null) {
|
||||
throw new Exception("Set null String in list of value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
if (elem.isEmpty()) {
|
||||
throw new Exception("Set empty String in list of value in decorator @XmlName is not availlable on: " + element.toGenericString());
|
||||
|
||||
public static Class<?>[] getTypeField(final Field fieldDescription) {
|
||||
Class<?> type = fieldDescription.getType();
|
||||
Class<?> subType = null;
|
||||
Type empppe = fieldDescription.getGenericType();
|
||||
if (empppe instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
if (realType.length > 0) {
|
||||
try {
|
||||
subType = Class.forName(realType[0].getTypeName());
|
||||
} catch (ClassNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
public static String[] getNames(final Constructor<?> constructor, final Parameter element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlName.class);
|
||||
if (annotation.length == 0) {
|
||||
if (defaultValue == null) {
|
||||
return null;
|
||||
}
|
||||
return new String[] { defaultValue };
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlName on " + constructor.getClass().getCanonicalName());
|
||||
}
|
||||
final String[] tmp = ((XmlName) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
if (tmp.length == 0) {
|
||||
throw new Exception("Set empty list value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
for (final String elem : tmp) {
|
||||
if (elem == null) {
|
||||
throw new Exception("Set null String in list of value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
if (elem.isEmpty()) {
|
||||
throw new Exception("Set empty String in list of value in decorator @XmlName is not availlable on: " + constructor.toGenericString());
|
||||
}
|
||||
}
|
||||
return tmp;
|
||||
return new Class<?>[] { type, subType };
|
||||
}
|
||||
|
||||
public static Class<?>[] getTypeParameterfunction(final Constructor<?> elem, final int paramId) throws ClassNotFoundException {
|
||||
Class<?> type = null;
|
||||
Class<?> subType = null;
|
||||
|
||||
public static String getListName(final Field element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlList.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
type = elem.getParameters()[paramId].getType();
|
||||
if (List.class.isAssignableFrom(type)) {
|
||||
Class<?> internalModelClass = null;
|
||||
Type[] empppe = elem.getGenericParameterTypes();
|
||||
if (empppe.length > paramId) {
|
||||
if (empppe[paramId] instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
//Log.info("ppplllppp: " + realType.length);
|
||||
if (realType.length > 0) {
|
||||
Log.verbose(" -->> " + realType[0]);
|
||||
internalModelClass = Class.forName(realType[0].getTypeName());
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlList on " + element.getClass().getCanonicalName());
|
||||
}
|
||||
final String tmp = ((XmlList) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlList is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
return tmp;
|
||||
subType = internalModelClass;
|
||||
}
|
||||
public static String getListName(final Method element, final String defaultValue) throws Exception {
|
||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(XmlList.class);
|
||||
if (annotation.length == 0) {
|
||||
return defaultValue;
|
||||
return new Class<?>[] { type, subType };
|
||||
}
|
||||
if (annotation.length > 1) {
|
||||
throw new Exception("Must not have more than 1 element @XmlList on " + element.getClass().getCanonicalName());
|
||||
|
||||
public static Class<?>[] getTypeParameterfunction(final Method setter) throws Exception {
|
||||
Class<?> type = null;
|
||||
Class<?> subType = null;
|
||||
|
||||
type = setter.getParameters()[0].getType();
|
||||
if (List.class.isAssignableFrom(type)) {
|
||||
Class<?> internalModelClass = null;
|
||||
Type[] empppe = setter.getGenericParameterTypes();
|
||||
if (empppe.length > 0) {
|
||||
if (empppe[0] instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
if (realType.length > 0) {
|
||||
Log.verbose(" -->> " + realType[0]);
|
||||
internalModelClass = Class.forName(realType[0].getTypeName());
|
||||
}
|
||||
final String tmp = ((XmlList) annotation[0]).value();
|
||||
if (tmp == null) {
|
||||
throw new Exception("Set null value in decorator @XmlList is not availlable on: " + element.toGenericString());
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
subType = internalModelClass;
|
||||
}
|
||||
return new Class<?>[] { type, subType };
|
||||
}
|
||||
|
||||
public static Class<?>[] getTypeReturnFunction(/*@NotNull*/ final Method getter) throws Exception {
|
||||
Class<?> type = null;
|
||||
Class<?> subType = null;
|
||||
type = getter.getReturnType();
|
||||
if (!Enum.class.isAssignableFrom(type)) {
|
||||
Type empppe = getter.getGenericReturnType();
|
||||
if (empppe instanceof ParameterizedType plopppppp) {
|
||||
Type[] realType = plopppppp.getActualTypeArguments();
|
||||
if (realType.length > 0) {
|
||||
subType = Class.forName(realType[0].getTypeName());
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Class<?>[] { type, subType };
|
||||
}
|
||||
|
||||
private ReflectTools() {}
|
||||
|
||||
}
|
||||
|
2
test/.gitignore
vendored
2
test/.gitignore
vendored
@ -1 +1,3 @@
|
||||
|
||||
/__pycache__/
|
||||
/bin/
|
||||
|
Loading…
x
Reference in New Issue
Block a user