diff --git a/.checkstyle b/.checkstyle index 34ed486..428926e 100644 --- a/.checkstyle +++ b/.checkstyle @@ -1,7 +1,7 @@ - + diff --git a/exml.iml b/exml.iml new file mode 100644 index 0000000..d47abfb --- /dev/null +++ b/exml.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/org/atriasoft/exml/Exml.java b/src/org/atriasoft/exml/Exml.java index b474740..2e09e65 100644 --- a/src/org/atriasoft/exml/Exml.java +++ b/src/org/atriasoft/exml/Exml.java @@ -24,29 +24,30 @@ import org.atriasoft.exml.serializer.SerializerXml; public class Exml { /** - * Display the Document on console + * Display the Document on console */ - public static void display() { + public static void display(final XmlElement node) { final StringBuilder tmpp = new StringBuilder(); - //iGenerate(tmpp, 0); + Exml.generate(node, tmpp); Log.info("Generated XML : \n" + tmpp.toString()); } public static void generate(final Object root, final StringBuilder data) { - // TODO: ... + // TODO ... } /** * Generate a string that contain the created XML + * * @param data Data where the xml is stored */ public static void generate(final XmlNode root, final StringBuilder data) { - if (root.isElement() == false || ((XmlElement) root).getValue().isEmpty() == false) { + if (!root.isElement() || !((XmlElement) root).getValue().isEmpty()) { SerializerXml.serialize(root, data, 0); } else { SerializerXml.serializeRoot((XmlElement) root, data); } - //return iGenerate(_data, 0); + // return iGenerate(_data, 0); } public static XmlElement parse(final String data) throws ExmlBuilderException, ExmlParserErrorMulti { @@ -57,7 +58,7 @@ public class Exml { return (XmlElement) parser.parse(data, property); } - public static TYPE[] parse(final String data, final Class classType, final String rootNodeName) throws ExmlBuilderException, ExmlParserErrorMulti { + public static T[] parse(final String data, final Class classType, final String rootNodeName) throws ExmlBuilderException, ExmlParserErrorMulti { Builder builder; try { builder = new BuilderIntrospection(classType, rootNodeName); @@ -73,71 +74,46 @@ public class Exml { final IntrospectionObject introspectionObject = (IntrospectionObject) parser.parse(data, property); final Object listRet = introspectionObject.getData(); if (listRet != null && listRet instanceof List) { - final List rootList = (List) listRet; - final TYPE[] strarr = (TYPE[]) Array.newInstance(classType, 0); + final List rootList = (List) listRet; + final T[] strarr = (T[]) Array.newInstance(classType, 0); return rootList.toArray(strarr); - } else { - return null; } + return null; } /** - * Load the file that might contain the xml - * @param[in] _uri URI of the xml + * Load the file that might contain the xml + * + * @param _uri URI of the xml * @return false : An error occured * @return true : Parsing is OK */ /* - public boolean load( Uri _uri){ - // Start loading the XML : - EXML_VERBOSE("open file (xml) " + _uri); - clear(); - auto fileIo = uri::get(_uri); - if (fileIo == null) { - Log.error("File Does not exist : " + _uri); - return false; - } - if (fileIo->open(io::OpenMode::Read) == false) { - Log.error("Can not open (r) the file : " + _uri); - return false; - } - // load data from the file: - String tmpDataUnicode = fileIo->readAllString(); - // close the file: - fileIo->close(); - // parse the data: - boolean ret = parse(tmpDataUnicode); - //Display(); - return ret; - } - */ + * public boolean load( Uri _uri){ // Start loading the XML : + * EXML_VERBOSE("open file (xml) " + _uri); clear(); auto fileIo = + * uri::get(_uri); if (fileIo == null) { Log.error("File Does not exist : " + + * _uri); return false; } if (fileIo->open(io::OpenMode::Read) == false) { + * Log.error("Can not open (r) the file : " + _uri); return false; } // load + * data from the file: String tmpDataUnicode = fileIo->readAllString(); // close + * the file: fileIo->close(); // parse the data: boolean ret = + * parse(tmpDataUnicode); //Display(); return ret; } + */ /** - * Store the Xml in the file - * @param[in] _uri URI of the xml + * Store the Xml in the file + * + * @param _uri URI of the xml * @return false : An error occured * @return true : Parsing is OK */ /* - public boolean store( Uri _uri){ - String createData; - if (generate(createData) == false) { - Log.error("Error while creating the XML: " + _uri); - return false; - } - auto fileIo = uri::get(_uri); - if (fileIo == null) { - Log.error("Can not create the uri: " + _uri); - return false; - } - if (fileIo->open(io::OpenMode::Write) == false) { - Log.error("Can not open (r) the file : " + _uri); - return false; - } - fileIo->writeAll(createData); - fileIo->close(); - return true; - } - */ + * public boolean store( Uri _uri){ String createData; if (generate(createData) + * == false) { Log.error("Error while creating the XML: " + _uri); return false; + * } auto fileIo = uri::get(_uri); if (fileIo == null) { + * Log.error("Can not create the uri: " + _uri); return false; } if + * (fileIo->open(io::OpenMode::Write) == false) { + * Log.error("Can not open (r) the file : " + _uri); return false; } + * fileIo->writeAll(createData); fileIo->close(); return true; } + */ private Exml() {} } diff --git a/src/org/atriasoft/exml/annotation/ExmlAnnotation.java b/src/org/atriasoft/exml/annotation/ExmlAnnotation.java index 815a5d8..edc2a72 100644 --- a/src/org/atriasoft/exml/annotation/ExmlAnnotation.java +++ b/src/org/atriasoft/exml/annotation/ExmlAnnotation.java @@ -12,7 +12,7 @@ import java.lang.annotation.Target; * Exml annotations generically, and in future also for * passing other generic annotation configuration. */ -@Target({ ElementType.ANNOTATION_TYPE }) +@Target(ElementType.ANNOTATION_TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface ExmlAnnotation { // for now, a pure tag annotation, no parameters diff --git a/src/org/atriasoft/exml/annotation/XmlDefaultAttibute.java b/src/org/atriasoft/exml/annotation/XmlDefaultAttibute.java index 5093424..c4ba1b5 100644 --- a/src/org/atriasoft/exml/annotation/XmlDefaultAttibute.java +++ b/src/org/atriasoft/exml/annotation/XmlDefaultAttibute.java @@ -8,7 +8,7 @@ import java.lang.annotation.Target; /** * Marker annotation that permit to set the default parsing as attributes. */ -@Target({ ElementType.TYPE }) +@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @ExmlAnnotation public @interface XmlDefaultAttibute { diff --git a/src/org/atriasoft/exml/annotation/XmlDefaultCaseSensitive.java b/src/org/atriasoft/exml/annotation/XmlDefaultCaseSensitive.java index b075c75..ca31cf1 100644 --- a/src/org/atriasoft/exml/annotation/XmlDefaultCaseSensitive.java +++ b/src/org/atriasoft/exml/annotation/XmlDefaultCaseSensitive.java @@ -8,7 +8,7 @@ import java.lang.annotation.Target; /** * Marker annotation that permit to select if the parsing is case sensitive or not. */ -@Target({ ElementType.TYPE }) +@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @ExmlAnnotation public @interface XmlDefaultCaseSensitive { diff --git a/src/org/atriasoft/exml/annotation/XmlDefaultManaged.java b/src/org/atriasoft/exml/annotation/XmlDefaultManaged.java index d31bad2..3147521 100644 --- a/src/org/atriasoft/exml/annotation/XmlDefaultManaged.java +++ b/src/org/atriasoft/exml/annotation/XmlDefaultManaged.java @@ -9,7 +9,7 @@ import java.lang.annotation.Target; * Marker annotation that set the element are not managed by default. Need to add @XmlManaged to be enable. * */ -@Target({ ElementType.TYPE }) +@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @ExmlAnnotation public @interface XmlDefaultManaged { diff --git a/src/org/atriasoft/exml/annotation/XmlDefaultOptional.java b/src/org/atriasoft/exml/annotation/XmlDefaultOptional.java index bd7c878..52f3be0 100644 --- a/src/org/atriasoft/exml/annotation/XmlDefaultOptional.java +++ b/src/org/atriasoft/exml/annotation/XmlDefaultOptional.java @@ -9,7 +9,7 @@ import java.lang.annotation.Target; * Marker annotation that set the element not found are ignored. * */ -@Target({ ElementType.TYPE }) +@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @ExmlAnnotation public @interface XmlDefaultOptional { diff --git a/src/org/atriasoft/exml/builder/BuilderGeneric.java b/src/org/atriasoft/exml/builder/BuilderGeneric.java index a6bbf48..09302b0 100644 --- a/src/org/atriasoft/exml/builder/BuilderGeneric.java +++ b/src/org/atriasoft/exml/builder/BuilderGeneric.java @@ -17,8 +17,7 @@ public class BuilderGeneric implements Builder { @Override public void newComment(final Object element, final String comment) throws ExmlBuilderException { - if (element instanceof XmlElement) { - final XmlElement elem = (XmlElement) element; + if (element instanceof XmlElement elem) { elem.append(new XmlComment(comment)); return; } @@ -27,8 +26,7 @@ public class BuilderGeneric implements Builder { @Override public Object newDeclaration(final Object parent, final String text) throws ExmlBuilderException { - if (parent instanceof XmlElement) { - final XmlElement elem = (XmlElement) parent; + if (parent instanceof XmlElement elem) { final XmlDeclaration dec = new XmlDeclaration(text); elem.append(dec); return dec; @@ -38,8 +36,7 @@ public class BuilderGeneric implements Builder { @Override public Object newElement(final Object parent, final String nodeName) throws ExmlBuilderException { - if (parent instanceof XmlElement) { - final XmlElement elem = (XmlElement) parent; + if (parent instanceof XmlElement elem) { final XmlElement eee = new XmlElement(nodeName); elem.append(eee); return eee; @@ -49,8 +46,7 @@ public class BuilderGeneric implements Builder { @Override public void newProperty(final Object element, final String propertyName, final String propertyValue) throws ExmlBuilderException { - if (element instanceof XmlAttributeList) { - final XmlAttributeList attr = (XmlAttributeList) element; + if (element instanceof XmlAttributeList attr) { attr.appendAttribute(new XmlAttribute(propertyName, propertyValue)); return; } @@ -64,8 +60,7 @@ public class BuilderGeneric implements Builder { @Override public void newText(final Object parent, final String text) throws ExmlBuilderException { - if (parent instanceof XmlElement) { - final XmlElement attr = (XmlElement) parent; + if (parent instanceof XmlElement attr) { attr.append(new XmlText(text)); return; } diff --git a/src/org/atriasoft/exml/builder/IntrospectionData.java b/src/org/atriasoft/exml/builder/IntrospectionData.java index 0ee4f52..a38792f 100644 --- a/src/org/atriasoft/exml/builder/IntrospectionData.java +++ b/src/org/atriasoft/exml/builder/IntrospectionData.java @@ -20,20 +20,20 @@ import org.atriasoft.exml.internal.Log; import org.atriasoft.exml.parser.Tools; public class IntrospectionData { + private static final Boolean DEFAULT_CASE_SENSITIVE = true; private static final Boolean DEFAULT_MANAGED = true; private static final Boolean DEFAULT_OPTIONAL = false; - private static final Boolean DEFAULT_CASE_SENSITIVE = true; final Class classType; - private final List properties = new ArrayList<>(); - private final List methods = new ArrayList<>(); + private final List properties = new ArrayList<>(); + public IntrospectionData(final Class classType) throws Exception { this.classType = classType; - final Boolean isDefaultManaged = getIsDefaultManaged(classType, DEFAULT_MANAGED); - final Boolean isDefaultOptional = getIsDefaultOptional(classType, DEFAULT_OPTIONAL); - final Boolean isDefaultCaseSensitive = getIsDefaultCaseSensitive(classType, DEFAULT_CASE_SENSITIVE); + final Boolean isDefaultManaged = getIsDefaultManaged(classType, IntrospectionData.DEFAULT_MANAGED); + final Boolean isDefaultOptional = getIsDefaultOptional(classType, IntrospectionData.DEFAULT_OPTIONAL); + final Boolean isDefaultCaseSensitive = getIsDefaultCaseSensitive(classType, IntrospectionData.DEFAULT_CASE_SENSITIVE); Log.verbose("Introspect class: '" + classType.getCanonicalName() + "'"); final Constructor[] constructors = this.classType.getConstructors(); Log.verbose(" Constructors: (" + constructors.length + ")"); @@ -47,8 +47,8 @@ public class IntrospectionData { final Boolean isOptionnal = getIsOptional(elem, isDefaultOptional); final String[] names = getNames(elem, Tools.decapitalizeFirst(elem.getName())); final Boolean caseSensitive = getIsCaseSensitive(elem, isDefaultCaseSensitive); - // TODO: check if property does not already exist ... - if (isManaged == true) { + // TODO check if property does not already exist ... + if (isManaged) { this.properties.add(new IntrospectionPropertyField(elem, names, caseSensitive, isOptionnal)); } Log.verbose(" - " + elem.toGenericString()); @@ -56,7 +56,7 @@ public class IntrospectionData { final Method[] methodsTmp = this.classType.getMethods(); // filter getX setX isX final List methods = List.of(methodsTmp).stream().filter(o -> { - if (o.getName().contentEquals("getClass") == true) { + if (o.getName().contentEquals("getClass")) { return false; } if (o.getName().startsWith("get")) { @@ -113,15 +113,9 @@ public class IntrospectionData { // void setXxx(XXX elem); // [bB]oolean isXxx(); - final List methodsGet = methods.stream().filter(o -> { - return o.getName().startsWith("get"); - }).collect(Collectors.toList()); - final List methodsSet = methods.stream().filter(o -> { - return o.getName().startsWith("set"); - }).collect(Collectors.toList()); - final List methodsIs = methods.stream().filter(o -> { - return o.getName().startsWith("is"); - }).collect(Collectors.toList()); + final List methodsGet = methods.stream().filter(o -> o.getName().startsWith("get")).collect(Collectors.toList()); + final List methodsSet = methods.stream().filter(o -> o.getName().startsWith("set")).collect(Collectors.toList()); + final List methodsIs = methods.stream().filter(o -> o.getName().startsWith("is")).collect(Collectors.toList()); // associate methods by pair. final List elements = new ArrayList<>(); @@ -218,7 +212,7 @@ public class IntrospectionData { } else { Log.info(" getter: null"); } - if (isManaged == true) { + if (isManaged) { this.methods.add(new IntrospectionPropertyMethod(elem.setter, elem.getter, names, isCaseSensitive, isOptionnal)); } } @@ -238,7 +232,7 @@ public class IntrospectionData { protected IntrospectionProperty findMethodDescription(final String propertyName) throws Exception { for (final IntrospectionProperty prop : this.methods) { - if (prop.isCompatible(propertyName) == true) { + if (prop.isCompatible(propertyName)) { return prop; } } @@ -247,7 +241,7 @@ public class IntrospectionData { protected IntrospectionProperty findPropertyDescription(final String propertyName) throws Exception { for (final IntrospectionProperty prop : this.properties) { - if (prop.isCompatible(propertyName) == true) { + if (prop.isCompatible(propertyName)) { return prop; } } @@ -358,9 +352,8 @@ public class IntrospectionData { if (annotation.length == 0) { if (defaultValue == null) { return null; - } else { - return new String[] { defaultValue }; } + return new String[] { defaultValue }; } if (annotation.length > 1) { throw new Exception("Must not hame more that "); @@ -376,7 +369,7 @@ public class IntrospectionData { 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() == true) { + if (elem.isEmpty()) { throw new Exception("Set empty String in list of value in decorator @XmlName is not availlable on: " + element.toGenericString()); } } @@ -388,9 +381,8 @@ public class IntrospectionData { if (annotation.length == 0) { if (defaultValue == null) { return null; - } else { - return new String[] { defaultValue }; } + return new String[] { defaultValue }; } if (annotation.length > 1) { throw new Exception("Must not hame more that "); @@ -406,7 +398,7 @@ public class IntrospectionData { 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() == true) { + if (elem.isEmpty()) { throw new Exception("Set empty String in list of value in decorator @XmlName is not availlable on: " + element.toGenericString()); } } @@ -417,14 +409,14 @@ public class IntrospectionData { //Log.error(" propertyName='" + propertyName + "' propertyValue='" + propertyValue + "' "); // by default use setter to set the property final IntrospectionProperty propMethode = findMethodDescription(propertyName); - if (propMethode != null && propMethode.cansetValue() == true) { + if (propMethode != null && propMethode.cansetValue()) { //Log.error(" ==> find '" + propMethode.getNames()); propMethode.setValue(data, propertyValue); return; } // try with direct field final IntrospectionProperty propField = findPropertyDescription(propertyName); - if (propField != null && propField.cansetValue() == true) { + if (propField != null && propField.cansetValue()) { //Log.error(" ==> find '" + propField.getNames()); propField.setValue(data, propertyValue); return; @@ -435,9 +427,9 @@ public class IntrospectionData { } class OrderData { + public Method getter = null; public final String name; public Method setter = null; - public Method getter = null; public OrderData(final String name) { this.name = name; diff --git a/src/org/atriasoft/exml/builder/IntrospectionProperty.java b/src/org/atriasoft/exml/builder/IntrospectionProperty.java index 34e48b2..51adbf9 100644 --- a/src/org/atriasoft/exml/builder/IntrospectionProperty.java +++ b/src/org/atriasoft/exml/builder/IntrospectionProperty.java @@ -1,10 +1,10 @@ package org.atriasoft.exml.builder; public abstract class IntrospectionProperty { - protected final Class type; - protected final String[] names; protected final Boolean caseSensitive; protected final Boolean isOptionnal; + protected final String[] names; + protected final Class type; public IntrospectionProperty(final Class type, final String[] names, final Boolean caseSensitive, final Boolean isOptionnal) { this.type = type; @@ -32,16 +32,16 @@ public abstract class IntrospectionProperty { } public boolean isCompatible(String name) { - if (this.caseSensitive == true) { + if (this.caseSensitive) { for (final String elem : this.names) { - if (elem.contentEquals(name) == true) { + if (elem.contentEquals(name)) { return true; } } } else { name = name.toLowerCase(); for (final String elem : this.names) { - if (elem.toLowerCase().contentEquals(name) == true) { + if (elem.toLowerCase().contentEquals(name)) { return true; } } diff --git a/src/org/atriasoft/exml/model/XmlAttribute.java b/src/org/atriasoft/exml/model/XmlAttribute.java index c4df358..27f1c5b 100644 --- a/src/org/atriasoft/exml/model/XmlAttribute.java +++ b/src/org/atriasoft/exml/model/XmlAttribute.java @@ -12,9 +12,9 @@ import org.atriasoft.exml.parser.FilePos; */ public class XmlAttribute { + protected String name; //!< Name of the attribute protected FilePos pos; //!< position in the read file (null if the file is not parsed); protected String value; //!< value of the node (for element this is the name, for text it is the inside text ...); - protected String name; //!< Name of the attribute public XmlAttribute() { this.pos = null; @@ -22,25 +22,25 @@ public class XmlAttribute { this.name = ""; } - public XmlAttribute(final String _name) { - this.name = _name; + public XmlAttribute(final String name) { + this.name = name; this.value = ""; } /** * Constructor - * @param[in] _name Name of the attribute. - * @param[in] _value Value of the attribute. + * @param _name Name of the attribute. + * @param _value Value of the attribute. */ - public XmlAttribute(final String _name, final String _value) { - this.name = _name; - this.value = _value; + public XmlAttribute(final String name, final String value) { + this.name = name; + this.value = value; } - public XmlAttribute(final XmlAttribute _obj) { + public XmlAttribute(final XmlAttribute obj) { this.pos = null; - this.value = _obj.value; - this.name = _obj.name; + this.value = obj.value; + this.name = obj.name; } public void clear() { @@ -58,7 +58,7 @@ public class XmlAttribute { */ public String getName() { return this.name; - }; + } /** * get the current element Value. @@ -66,21 +66,21 @@ public class XmlAttribute { */ public String getValue() { return this.value; - }; + } /** * set the name of the attribute - * @param[in] _name New name of the attribute + * @param _name New name of the attribute */ - public void setName(final String _name) { - this.name = _name; + public void setName(final String name) { + this.name = name; } /** * set the value of the node. - * @param[in] _value New value of the node. + * @param _value New value of the node. */ - public final void setValue(final String _value) { - this.value = _value; + public final void setValue(final String value) { + this.value = value; } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/org/atriasoft/exml/model/XmlAttributeList.java b/src/org/atriasoft/exml/model/XmlAttributeList.java index 237ac88..d76c0ab 100644 --- a/src/org/atriasoft/exml/model/XmlAttributeList.java +++ b/src/org/atriasoft/exml/model/XmlAttributeList.java @@ -20,57 +20,55 @@ import org.atriasoft.exml.internal.Log; public abstract class XmlAttributeList extends XmlNode { protected List listAttribute = new ArrayList<>(); //!< list of all attribute; - public XmlAttributeList() { - super(); - }; + public XmlAttributeList() {} /** * Constructor - * @param[in] _value Node value; + * @param value Node value; */ - public XmlAttributeList(final String _value) { - super(_value); + public XmlAttributeList(final String value) { + super(value); } /** * Add attribute on the List - * @param[in] _attr Pointer on the attribute + * @param attr Pointer on the attribute */ - public void appendAttribute(final XmlAttribute _attr) { - if (_attr == null) { + public void appendAttribute(final XmlAttribute attr) { + if (attr == null) { Log.error("Try to set an empty node"); return; } for (int iii = 0; iii < this.listAttribute.size(); iii++) { - if (this.listAttribute.get(iii) == _attr) { + if (this.listAttribute.get(iii) == attr) { Log.error("Try to add a node that is already added before !!!"); return; } - if (this.listAttribute.get(iii).getName().contentEquals(_attr.getName()) == true) { + if (this.listAttribute.get(iii).getName().contentEquals(attr.getName())) { Log.error("Try to add a node that is already added before (same name)"); return; } } - this.listAttribute.add(_attr); + this.listAttribute.add(attr); } @Override public void clear() { super.clear(); this.listAttribute.clear(); - }; + } /** * Check if an attribute exist or not with his name. - * @param[in] _name Attribute Name. + * @param name Attribute Name. * @return true if the attribute exist or False */ - public boolean existAttribute(final String _name) { - if (_name.length() == 0) { + public boolean existAttribute(final String name) { + if (name.length() == 0) { return false; } for (int iii = 0; iii < this.listAttribute.size(); ++iii) { - if (this.listAttribute.get(iii) != null && this.listAttribute.get(iii).getName().contentEquals(_name) == true) { + if (this.listAttribute.get(iii) != null && this.listAttribute.get(iii).getName().contentEquals(name)) { return true; } } @@ -79,33 +77,45 @@ public abstract class XmlAttributeList extends XmlNode { /** * Get attribute whith his ID - * @param[in] _id Identifier of the attribute 0<= _id < sizeAttribute() + * @param id Identifier of the attribute 0<= id < sizeAttribute() * @return Pointer on the attribute or NULL * @throws ExmlAttributeDoesNotExist The attribute does not exist. */ - public XmlAttribute getAttr(final int _id) throws ExmlAttributeDoesNotExist { - if (_id < 0 || _id >= this.listAttribute.size()) { - throw new ExmlAttributeDoesNotExist("Attribute does not exist: " + _id + "/" + this.listAttribute.size()); + public XmlAttribute getAttr(final int id) throws ExmlAttributeDoesNotExist { + if (id < 0 || id >= this.listAttribute.size()) { + throw new ExmlAttributeDoesNotExist("Attribute does not exist: " + id + "/" + this.listAttribute.size()); } - return this.listAttribute.get(_id); + return this.listAttribute.get(id); } /** * get the attribute value with searching in the List with his name - * @param[in] _name Attribute Name. + * @param name Attribute Name. * @return Value of the attribute or no data in the string * @throws ExmlAttributeDoesNotExist The attribute does not exist. */ - public String getAttribute(final String _name) throws ExmlAttributeDoesNotExist { - if (_name.length() == 0) { + public String getAttribute(final String name) throws ExmlAttributeDoesNotExist { + if (name.length() == 0) { throw new ExmlAttributeDoesNotExist("Attribute can not have empty name"); } - for (int iii = 0; iii < this.listAttribute.size(); iii++) { - if (this.listAttribute.get(iii) != null && this.listAttribute.get(iii).getName().contentEquals(_name) == true) { - return this.listAttribute.get(iii).getValue(); + for (final XmlAttribute xmlAttribute : this.listAttribute) { + if (xmlAttribute != null && xmlAttribute.getName().contentEquals(name)) { + return xmlAttribute.getValue(); } } - throw new ExmlAttributeDoesNotExist("Attribute does not exist: " + _name + " in " + this.listAttribute.size() + " attributes"); + throw new ExmlAttributeDoesNotExist("Attribute does not exist: " + name + " in " + this.listAttribute.size() + " attributes"); + } + + public String getAttribute(final String name, final String defaultValue) { + if (name.length() == 0) { + return defaultValue; + } + for (final XmlAttribute xmlAttribute : this.listAttribute) { + if (xmlAttribute != null && xmlAttribute.getName().contentEquals(name)) { + return xmlAttribute.getValue(); + } + } + return defaultValue; } public List getAttributes() { @@ -114,23 +124,23 @@ public abstract class XmlAttributeList extends XmlNode { /** * get attribute whith his ID - * @param[in] _id Identifier of the attribute 0<= _id < sizeAttribute() + * @param id Identifier of the attribute 0<= id < sizeAttribute() * @return Name and value of the attribute * @throws ExmlAttributeDoesNotExist The attribute does not exist. */ - public Pair getAttrPair(final int _id) throws ExmlAttributeDoesNotExist { - final XmlAttribute att = getAttr(_id); + public Pair getAttrPair(final int id) throws ExmlAttributeDoesNotExist { + final XmlAttribute att = getAttr(id); return new Pair(att.getName(), att.getValue()); } /** * Remove an attribute form the list - * @param[in] _name Name of the attribute + * @param name Name of the attribute * @return true The attribute has been removed * @return false An error occured. */ - public boolean removeAttribute(final String _name) { - if (_name.length() == 0) { + public boolean removeAttribute(final String name) { + if (name.length() == 0) { return false; } for (final ListIterator iter = this.listAttribute.listIterator(); iter.hasNext();) { @@ -139,7 +149,7 @@ public abstract class XmlAttributeList extends XmlNode { iter.remove(); continue; } - if (element.getName().contentEquals(_name) == true) { + if (element.getName().contentEquals(name)) { iter.remove(); return true; } @@ -149,19 +159,19 @@ public abstract class XmlAttributeList extends XmlNode { /** * Set A new attribute or replace data of the previous one - * @param[in] _name Name of the attribute - * @param[in] _value Value of the attribute + * @param name Name of the attribute + * @param value Value of the attribute */ - public void setAttribute(final String _name, final String _value) { + public void setAttribute(final String name, final String value) { // check if attribute already det : for (int iii = 0; iii < this.listAttribute.size(); ++iii) { - if (this.listAttribute.get(iii) != null && this.listAttribute.get(iii).getName().contentEquals(_name) == true) { + if (this.listAttribute.get(iii) != null && this.listAttribute.get(iii).getName().contentEquals(name)) { // update the value : - this.listAttribute.get(iii).setValue(_value); + this.listAttribute.get(iii).setValue(value); return; } } - final XmlAttribute attr = new XmlAttribute(_name, _value); + final XmlAttribute attr = new XmlAttribute(name, value); this.listAttribute.add(attr); } diff --git a/src/org/atriasoft/exml/model/XmlComment.java b/src/org/atriasoft/exml/model/XmlComment.java index 03b3841..1397aa0 100644 --- a/src/org/atriasoft/exml/model/XmlComment.java +++ b/src/org/atriasoft/exml/model/XmlComment.java @@ -11,15 +11,14 @@ package org.atriasoft.exml.model; public class XmlComment extends XmlNode { public XmlComment() { - super(); } /** * Constructor - * @param[in] _value comment value + * @param _value comment value */ - public XmlComment(final String _value) { - super(_value); + public XmlComment(final String value) { + super(value); } public XmlComment(final XmlComment obj) { @@ -36,4 +35,4 @@ public class XmlComment extends XmlNode { return XmlNodeType.COMMENT; } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/org/atriasoft/exml/model/XmlDeclaration.java b/src/org/atriasoft/exml/model/XmlDeclaration.java index 46fb3e9..bedd364 100644 --- a/src/org/atriasoft/exml/model/XmlDeclaration.java +++ b/src/org/atriasoft/exml/model/XmlDeclaration.java @@ -13,33 +13,33 @@ import org.atriasoft.exml.internal.Log; public class XmlDeclaration extends XmlAttributeList { public XmlDeclaration() { super(""); - }; + } /** * Constructor - * @param[in] _name name of the declaration (xml, xml:xxxx ...) + * @param name name of the declaration (xml, xml:xxxx ...) */ - public XmlDeclaration(final String _name) { - super(_name); + public XmlDeclaration(final String name) { + super(name); } - public XmlDeclaration(final String _version, final String _format, final boolean _standalone) { + public XmlDeclaration(final String version, final String format, final boolean standalone) { super("xml"); - if (_version.isEmpty() != true) { - setAttribute("version", _version); + if (!version.isEmpty()) { + setAttribute("version", version); } - if (_format.contentEquals("UTF-8")) { + if (format.contentEquals("UTF-8")) { setAttribute("encoding", "UTF-8"); } else { Log.error("Actually does not supported other charset than UTF8"); setAttribute("encoding", "UTF-8"); } - if (_standalone == true) { + if (standalone) { setAttribute("standalone", "true"); } else { setAttribute("standalone", "true"); } - }; + } public XmlDeclaration(final XmlDeclaration obj) { super(obj.value); diff --git a/src/org/atriasoft/exml/model/XmlElement.java b/src/org/atriasoft/exml/model/XmlElement.java index 010d0ca..4aea7b0 100644 --- a/src/org/atriasoft/exml/model/XmlElement.java +++ b/src/org/atriasoft/exml/model/XmlElement.java @@ -29,15 +29,14 @@ public class XmlElement extends XmlAttributeList { * Constructor */ public XmlElement() { - super(); - }; + } /** * Constructor - * @param[in] _value Element name; + * @param value Element name; */ - public XmlElement(final String _value) { - super(_value); + public XmlElement(final String value) { + super(value); } @@ -49,31 +48,31 @@ public class XmlElement extends XmlAttributeList { for (final XmlNode elem : obj.listSub) { this.listSub.add(elem.clone()); } - }; + } /** * add a node at the element (not Attribute (move in the attribute automaticly). - * @param[in] _node Pointer of the node to add. + * @param node Pointer of the node to add. */ - public void append(final XmlNode _node) { - if (_node == null) { + public void append(final XmlNode node) { + if (node == null) { Log.error("Try to set an empty node"); return; } for (int iii = 0; iii < this.listSub.size(); iii++) { - if (this.listSub.get(iii) == _node) { + if (this.listSub.get(iii) == node) { Log.error("Try to add a node that is already added before !!!"); return; } } - this.listSub.add(_node); + this.listSub.add(node); } @Override public void clear() { super.clear(); this.listSub.clear(); - }; + } @Override public XmlElement clone() throws CloneNotSupportedException { @@ -82,11 +81,11 @@ public class XmlElement extends XmlAttributeList { /** * get the Node pointer of the element id. - * @param[in] _id Id of the element. + * @param id Id of the element. * @return true if the Node exist. */ - public boolean existNode(final int _id) { - if (_id < 0 || _id >= this.listSub.size()) { + public boolean existNode(final int id) { + if (id < 0 || id >= this.listSub.size()) { return false; } return true; @@ -94,15 +93,15 @@ public class XmlElement extends XmlAttributeList { /** * get an element with his name (work only with Element) - * @param[in] _name Name of the element that is requested + * @param name Name of the element that is requested * @return true if the Node exist. */ - public boolean existNode(final String _name) { - if (_name.isEmpty() == true) { + public boolean existNode(final String name) { + if (name.isEmpty()) { return false; } for (int iii = 0; iii < this.listSub.size(); iii++) { - if (this.listSub.get(iii) != null && this.listSub.get(iii).getValue().contentEquals(_name) == true) { + if (this.listSub.get(iii) != null && this.listSub.get(iii).getValue().contentEquals(name)) { if (this.listSub.get(iii) == null) { return false; } @@ -114,33 +113,33 @@ public class XmlElement extends XmlAttributeList { /** * get the Node pointer of the element id. - * @param[in] _id Id of the element. + * @param id Id of the element. * @return Pointer on node. * @throws ExmlNodeDoesNotExist The Node does not exist */ - public XmlNode getNode(final int _id) throws ExmlNodeDoesNotExist { - if (_id < 0 || _id >= this.listSub.size()) { - throw new ExmlNodeDoesNotExist("Node does not exist: " + _id + "/" + this.listSub.size()); + public XmlNode getNode(final int id) throws ExmlNodeDoesNotExist { + if (id < 0 || id >= this.listSub.size()) { + throw new ExmlNodeDoesNotExist("Node does not exist: " + id + "/" + this.listSub.size()); } - return this.listSub.get(_id); + return this.listSub.get(id); } /** * get an element with his name (work only with Element) - * @param[in] _name Name of the element that is requested + * @param name Name of the element that is requested * @return Pointer on the node. * @throws ExmlNodeDoesNotExist The Node does not exist */ - public XmlNode getNode(final String _name) throws ExmlNodeDoesNotExist { - if (_name.isEmpty() == true) { + public XmlNode getNode(final String name) throws ExmlNodeDoesNotExist { + if (name.isEmpty()) { throw new ExmlNodeDoesNotExist("Node can not have empty name in " + this.listAttribute.size() + " nodes"); } for (int iii = 0; iii < this.listSub.size(); iii++) { - if (this.listSub.get(iii) != null && this.listSub.get(iii).getValue().contentEquals(_name) == true) { + if (this.listSub.get(iii) != null && this.listSub.get(iii).getValue().contentEquals(name)) { return this.listSub.get(iii); } } - throw new ExmlNodeDoesNotExist("Node does not exist: '" + _name + "' in " + this.listAttribute.size()); + throw new ExmlNodeDoesNotExist("Node does not exist: '" + name + "' in " + this.listAttribute.size()); } /** @@ -180,23 +179,23 @@ public class XmlElement extends XmlAttributeList { /** * get the type of the element id. - * @param[in] _id Id of the element. + * @param id Id of the element. * @return the Current type of the element or typeUnknow. * @throws ExmlNodeDoesNotExist The Node does not exist */ - public XmlNodeType getType(final int _id) throws ExmlNodeDoesNotExist { - if (_id < 0 || _id >= this.listSub.size()) { - throw new ExmlNodeDoesNotExist("Node does not exist: " + _id + "/" + this.listSub.size()); + public XmlNodeType getType(final int id) throws ExmlNodeDoesNotExist { + if (id < 0 || id >= this.listSub.size()) { + throw new ExmlNodeDoesNotExist("Node does not exist: " + id + "/" + this.listSub.size()); } - return this.listSub.get(_id).getType(); + return this.listSub.get(id).getType(); } /** * Remove all element with this name - * @param[in] _nodeName Name of nodes to remove. + * @param nodeName Name of nodes to remove. */ - public void remove(final String _nodeName) { - if (_nodeName == "") { + public void remove(final String nodeName) { + if (nodeName.isEmpty()) { return; } for (final ListIterator iter = this.listSub.listIterator(); iter.hasNext();) { @@ -205,7 +204,7 @@ public class XmlElement extends XmlAttributeList { iter.remove(); continue; } - if (element.getValue().contentEquals(_nodeName) == true) { + if (element.getValue().contentEquals(nodeName)) { iter.remove(); } } @@ -219,4 +218,4 @@ public class XmlElement extends XmlAttributeList { return this.listSub.size(); } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/org/atriasoft/exml/model/XmlNode.java b/src/org/atriasoft/exml/model/XmlNode.java index 8002532..4da9253 100644 --- a/src/org/atriasoft/exml/model/XmlNode.java +++ b/src/org/atriasoft/exml/model/XmlNode.java @@ -19,10 +19,10 @@ public abstract class XmlNode { /** * Basic element of a xml structure - * @param[in] _value value of the node + * @param value value of the node */ - public XmlNode(final String _value) { - setValue(_value); + public XmlNode(final String value) { + setValue(value); } /** @@ -85,13 +85,13 @@ public abstract class XmlNode { /** * set the value of the node. - * @param[in] _value New value of the node. + * @param value New value of the node. */ - public final void setValue(final String _value) { - if (_value.isEmpty() == true || _value.isBlank() == true) { + public final void setValue(final String value) { + if (value.isEmpty() || value.isBlank()) { this.value = null; } else { - this.value = _value; + this.value = value; } } diff --git a/src/org/atriasoft/exml/model/XmlText.java b/src/org/atriasoft/exml/model/XmlText.java index 70a864f..5fd7ce4 100644 --- a/src/org/atriasoft/exml/model/XmlText.java +++ b/src/org/atriasoft/exml/model/XmlText.java @@ -13,14 +13,14 @@ public class XmlText extends XmlNode { /** * Constructor */ - public XmlText() {}; + public XmlText() {} /** * Constructor - * @param[in] _data String data of the current Text + * @param data String data of the current Text */ - public XmlText(final String _data) { - super(_data); + public XmlText(final String data) { + super(data); } /** @@ -42,4 +42,4 @@ public class XmlText extends XmlNode { return XmlNodeType.TEXT; } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/org/atriasoft/exml/parser/FilePos.java b/src/org/atriasoft/exml/parser/FilePos.java index f5759dd..df5af36 100644 --- a/src/org/atriasoft/exml/parser/FilePos.java +++ b/src/org/atriasoft/exml/parser/FilePos.java @@ -28,48 +28,48 @@ public class FilePos { /** * initialize constructor - * @param[in] _line Line in the file - * @param[in] _col Colomn in the file + * @param line Line in the file + * @param col Colomn in the file */ - public FilePos(final int _line, final int _col) { - this.col = _col; - this.line = _line; + public FilePos(final int line, final int col) { + this.col = col; + this.line = line; } /** * Addition operator - * @param[in] _obj Addition object.. + * @param obj Addition object.. * @return Reference on this */ - public FilePos add(final FilePos _obj) { - if (_obj.line == 0) { - this.col += _obj.col; + public FilePos add(final FilePos obj) { + if (obj.line == 0) { + this.col += obj.col; } else { - this.col = _obj.col; - this.line += _obj.line; + this.col = obj.col; + this.line += obj.line; } return this; } /** * Colomn addition operator - * @param[in] _col Number of colomn to add + * @param col Number of colomn to add * @return Reference on this */ - public FilePos add(final int _col) { - this.col += _col; + public FilePos add(final int col) { + this.col += col; return this; } /** * Check if the value is a new line and update internal property - * @param[in] _val Char value to check + * @param val Char value to check * @return true We find a new line * @return false We NOT find a new line */ - public boolean check(final Character _val) { + public boolean check(final Character val) { this.col++; - if (_val == '\n') { + if (val == '\n') { newLine(); return true; } @@ -153,23 +153,23 @@ public class FilePos { /** * Asignment operator - * @param[in] _obj Object to copy + * @param obj Object to copy * @return Reference on this */ - public FilePos set(final FilePos _obj) { - this.col = _obj.col; - this.line = _obj.line; + public FilePos set(final FilePos obj) { + this.col = obj.col; + this.line = obj.line; return this; } /** * Setter of specific data - * @param[in] _line Line in the file - * @param[in] _col Colomn in the file + * @param line Line in the file + * @param col Colomn in the file */ - public void set(final int _line, final int _col) { - this.col = _col; - this.line = _line; + public void set(final int line, final int col) { + this.col = col; + this.line = line; } @Override @@ -182,4 +182,4 @@ public class FilePos { return out; } -}; +} diff --git a/src/org/atriasoft/exml/parser/ParseXml.java b/src/org/atriasoft/exml/parser/ParseXml.java index a621373..d0e60d2 100644 --- a/src/org/atriasoft/exml/parser/ParseXml.java +++ b/src/org/atriasoft/exml/parser/ParseXml.java @@ -14,21 +14,19 @@ public class ParseXml { this.builder = builder; } - protected boolean iParseAttribute(final Object parent, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { + protected boolean iParseAttribute(final Object parent, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { Log.verbose("start parse : 'attribute'"); - final FilePos pos = _filePos.clone(); // search end of the comment : - int lastElementName = _pos.value; - for (int iii = _pos.value; iii < _data.length(); iii++) { - _filePos.check(_data.charAt(iii)); - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (Tools.checkAvaillable(_data.charAt(iii), false) == true) { - lastElementName = iii; - } else { + int lastElementName = pos.value; + for (int iii = pos.value; iii < data.length(); iii++) { + filePos.check(data.charAt(iii)); + Tools.drawElementParsed(data.charAt(iii), filePos); + if (!Tools.checkAvaillable(data.charAt(iii), false)) { break; } + lastElementName = iii; } - String name = _data.substring(_pos.value, lastElementName + 1); + String name = data.substring(pos.value, lastElementName + 1); if (parsingProperty.getStoreMode() == StoreMode.LOWERCASE) { name = name.toLowerCase(); } else if (parsingProperty.getStoreMode() == StoreMode.UPPERCASE) { @@ -40,48 +38,47 @@ public class ParseXml { String value = ""; // count white space : final FilePos tmpPos = new FilePos(); - int white = Tools.countWhiteChar(_data, lastElementName + 1, tmpPos); - _filePos.add(tmpPos); - if (lastElementName + white + 1 >= _data.length()) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, lastElementName + white + 1), _filePos, " parse an xml end with an attribute parsing...")); + int white = Tools.countWhiteChar(data, lastElementName + 1, tmpPos); + filePos.add(tmpPos); + if (lastElementName + white + 1 >= data.length()) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, lastElementName + white + 1), filePos, " parse an xml end with an attribute parsing...")); return false; } - if (_data.charAt(lastElementName + white + 1) != '=') { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, lastElementName + white + 1), _filePos, " error attribute parsing == > missing '=' ...")); + if (data.charAt(lastElementName + white + 1) != '=') { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, lastElementName + white + 1), filePos, " error attribute parsing == > missing '=' ...")); return false; } - white += Tools.countWhiteChar(_data, lastElementName + white + 2, tmpPos); - _filePos.add(tmpPos); + white += Tools.countWhiteChar(data, lastElementName + white + 2, tmpPos); + filePos.add(tmpPos); - if (lastElementName + white + 2 >= _data.length()) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, lastElementName + white + 2), _filePos, " parse an xml end with an attribute parsing...")); + if (lastElementName + white + 2 >= data.length()) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, lastElementName + white + 2), filePos, " parse an xml end with an attribute parsing...")); return false; } boolean simpleQuoteCase = false; - if (_data.charAt(lastElementName + white + 2) == '\'') { // ' + if (data.charAt(lastElementName + white + 2) == '\'') { // ' simpleQuoteCase = true; } - if (_data.charAt(lastElementName + white + 2) != '"' && _data.charAt(lastElementName + white + 2) != '\'') { // ' + if (data.charAt(lastElementName + white + 2) != '"' && data.charAt(lastElementName + white + 2) != '\'') { // ' // parse with no element " == > direct value separate with space ... - _filePos.increment(); + filePos.increment(); int lastAttributePos = lastElementName + white + 2; - for (int iii = lastElementName + white + 2; iii < _data.length(); iii++) { - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (_filePos.check(_data.charAt(iii)) == true) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, iii), _filePos, "unexpected '\\n' in an attribute parsing")); + for (int iii = lastElementName + white + 2; iii < data.length(); iii++) { + Tools.drawElementParsed(data.charAt(iii), filePos); + if (filePos.check(data.charAt(iii))) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, iii), filePos, "unexpected '\\n' in an attribute parsing")); return false; } - if (_data.charAt(iii) != ' ' && _data.charAt(iii) != '/' && _data.charAt(iii) != '?' && _data.charAt(iii) != '>') { - lastAttributePos = iii + 1; - } else { + if ((data.charAt(iii) == ' ') || (data.charAt(iii) == '/') || (data.charAt(iii) == '?') || (data.charAt(iii) == '>')) { break; } + lastAttributePos = iii + 1; } - value = _data.substring(lastElementName + white + 2, lastAttributePos); + value = data.substring(lastElementName + white + 2, lastAttributePos); - //EXML_PARSE_ATTRIBUTE(pos << " attribute : " << name << "=\"" << value << "\""); + //EXMLPARSEATTRIBUTE(pos << " attribute : " << name << "=\"" << value << "\""); - _pos.value = lastAttributePos - 1; + pos.value = lastAttributePos - 1; try { this.builder.newProperty(parent, name, value); } catch (final Exception e) { @@ -91,20 +88,19 @@ public class ParseXml { return true; } int lastAttributePos = lastElementName + white + 3; - for (int iii = lastElementName + white + 3; iii < _data.length(); iii++) { - Tools.drawElementParsed(_data.charAt(iii), _filePos); - _filePos.check(_data.charAt(iii)); - if ((_data.charAt(iii) != '"' && simpleQuoteCase == false) || (_data.charAt(iii) != '\'' && simpleQuoteCase == true)) { // ' - lastAttributePos = iii + 1; - } else { + for (int iii = lastElementName + white + 3; iii < data.length(); iii++) { + Tools.drawElementParsed(data.charAt(iii), filePos); + filePos.check(data.charAt(iii)); + if (((data.charAt(iii) == '"') || simpleQuoteCase) && ((data.charAt(iii) == '\'') || !simpleQuoteCase)) { break; } + lastAttributePos = iii + 1; } - value = _data.substring(lastElementName + white + 3, lastAttributePos); + value = data.substring(lastElementName + white + 3, lastAttributePos); - //EXML_PARSE_ATTRIBUTE(pos << " attribute : " << name << "=\"" << value << "\""); + //EXMLPARSEATTRIBUTE(pos << " attribute : " << name << "=\"" << value << "\""); - _pos.value = lastAttributePos; + pos.value = lastAttributePos; try { this.builder.newProperty(parent, name, value); } catch (final Exception e) { @@ -114,178 +110,170 @@ public class ParseXml { return true; } - protected boolean iParseCDATA(final Object parent, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { + protected boolean iParseCDATA(final Object parent, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { Log.verbose("start parse : 'text::CDATA'"); - final FilePos pos = _filePos.clone(); // search end of the comment : - for (int iii = _pos.value; iii + 2 < _data.length(); iii++) { - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (_filePos.check(_data.charAt(iii)) == true) { + for (int iii = pos.value; iii + 2 < data.length(); iii++) { + Tools.drawElementParsed(data.charAt(iii), filePos); + if (filePos.check(data.charAt(iii))) { continue; } - if (_data.charAt(iii) == ']' && _data.charAt(iii + 1) == ']' && _data.charAt(iii + 2) == '>') { + if (data.charAt(iii) == ']' && data.charAt(iii + 1) == ']' && data.charAt(iii + 2) == '>') { // find end of value: - _filePos.add(2); - final String valueCData = _data.substring(_pos.value, iii); + filePos.add(2); + final String valueCData = data.substring(pos.value, iii); Log.verbose(" find text CDATA '" + valueCData + "'"); - _pos.value = iii + 2; + pos.value = iii + 2; this.builder.newText(parent, valueCData); return true; } } - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "text CDATA got end of file without finding end node")); - _pos.value = _data.length(); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "text CDATA got end of file without finding end node")); + pos.value = data.length(); return false; } - protected boolean iParseComment(final Object parent, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { + protected boolean iParseComment(final Object parent, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { Log.verbose("start parse : 'comment'"); - final FilePos pos = _filePos; final FilePos tmpPos = new FilePos(); - final int white = Tools.countWhiteChar(_data, _pos.value, tmpPos); - _filePos.add(tmpPos); + final int white = Tools.countWhiteChar(data, pos.value, tmpPos); + filePos.add(tmpPos); // search end of the comment : - for (int iii = _pos.value + white; iii + 2 < _data.length(); iii++) { - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (_filePos.check(_data.charAt(iii)) == true) { + for (int iii = pos.value + white; iii + 2 < data.length(); iii++) { + Tools.drawElementParsed(data.charAt(iii), filePos); + if (filePos.check(data.charAt(iii))) { continue; } - if (_data.charAt(iii) == '-' && _data.charAt(iii + 1) == '-' && _data.charAt(iii + 2) == '>') { - _filePos.add(2); + if (data.charAt(iii) == '-' && data.charAt(iii + 1) == '-' && data.charAt(iii + 2) == '>') { + filePos.add(2); // search whitespace : int newEnd = iii; - for (int jjj = iii - 1; jjj > _pos.value; jjj--) { - if (Tools.isWhiteChar(_data.charAt(jjj)) == true) { - newEnd = jjj; - } else { + for (int jjj = iii - 1; jjj > pos.value; jjj--) { + if (!Tools.isWhiteChar(data.charAt(jjj))) { break; } + newEnd = jjj; } // find end of value: - final String value2 = _data.substring(_pos.value + white, newEnd); + final String value2 = data.substring(pos.value + white, newEnd); Log.verbose(" find comment '" + value2 + "'"); this.builder.newComment(parent, value2); - _pos.value = iii + 2; + pos.value = iii + 2; return true; } } - _pos.value = _data.length(); - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "comment got end of file without finding end node")); + pos.value = data.length(); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "comment got end of file without finding end node")); return false; } - protected boolean iParseDeclaration(final Object parent, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) - throws ExmlBuilderException { - final FilePos pos = _filePos; + protected boolean iParseDeclaration(final Object parent, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { // search end of the comment : - for (int iii = _pos.value; iii + 1 < _data.length(); iii++) { - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (_filePos.check(_data.charAt(iii)) == true) { + for (int iii = pos.value; iii + 1 < data.length(); iii++) { + Tools.drawElementParsed(data.charAt(iii), filePos); + if (filePos.check(data.charAt(iii))) { continue; } - if (_data.charAt(iii) == '>' || _data.charAt(iii) == '<') { + if (data.charAt(iii) == '>' || data.charAt(iii) == '<') { // an error occured : - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, " find '>' or '<' instead of '?>'")); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, " find '>' or '<' instead of '?>'")); return false; } - if (_data.charAt(iii) == '?' && _data.charAt(iii + 1) == '>') { - _filePos.increment(); + if (data.charAt(iii) == '?' && data.charAt(iii + 1) == '>') { + filePos.increment(); // find end of declaration: - _pos.value = iii + 1; + pos.value = iii + 1; return true; } - if (Tools.checkAvaillable(_data.charAt(iii), true) == true) { + if (Tools.checkAvaillable(data.charAt(iii), true)) { // we find an attibute ==> parse it: - _pos.value = iii; - if (iParseAttribute(parent, _data, _pos, _filePos, parsingProperty) == false) { + pos.value = iii; + if (!iParseAttribute(parent, data, pos, filePos, parsingProperty)) { return false; } - iii = _pos.value; + iii = pos.value; continue; } } - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Text got end of file without finding end node")); - _pos.value = _data.length(); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Text got end of file without finding end node")); + pos.value = data.length(); return false; } - protected boolean iParseElement(final Object parent, final String nameElement, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) + protected boolean iParseElement(final Object parent, final String nameElement, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { // note : When start parsing the upper element must have set the value of the element and set the position after this one - final FilePos pos = _filePos.clone(); // find a normal node ... - for (int iii = _pos.value; iii < _data.length(); iii++) { - _filePos.check(_data.charAt(iii)); - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (_data.charAt(iii) == '>') { + for (int iii = pos.value; iii < data.length(); iii++) { + filePos.check(data.charAt(iii)); + Tools.drawElementParsed(data.charAt(iii), filePos); + if (data.charAt(iii) == '>') { // we find the end ... - _pos.value = iii + 1; - return subParseElement(parent, nameElement, _data, _pos, _filePos, parsingProperty); + pos.value = iii + 1; + return subParseElement(parent, nameElement, data, pos, filePos, parsingProperty); } - if (_data.charAt(iii) == '/') { + if (data.charAt(iii) == '/') { // standalone node or error... - if (iii + 1 >= _data.length()) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find end of files ... == > bad case")); + if (iii + 1 >= data.length()) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find end of files ... == > bad case")); return false; } // TODO : Can have white spaces .... - if (_data.charAt(iii + 1) == '>') { - _pos.value = iii + 1; + if (data.charAt(iii + 1) == '>') { + pos.value = iii + 1; return true; } // error - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find / without > char ...")); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find / without > char ...")); return false; } - if (Tools.checkAvaillable(_data.charAt(iii), true) == true) { + if (Tools.checkAvaillable(data.charAt(iii), true)) { // we find an attibute ==> parse it: - _pos.value = iii; - if (iParseAttribute(parent, _data, _pos, _filePos, parsingProperty) == false) { + pos.value = iii; + if (!iParseAttribute(parent, data, pos, filePos, parsingProperty)) { return false; } - iii = _pos.value; + iii = pos.value; continue; } - if (Tools.isWhiteChar(_data.charAt(iii)) == false) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, iii), _filePos, "Find an unknow element : '" + _data.charAt(iii) + "'")); + if (!Tools.isWhiteChar(data.charAt(iii))) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, iii), filePos, "Find an unknow element : '" + data.charAt(iii) + "'")); return false; } } - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Unexpecting end of parsing exml::internal::Element : '" + nameElement + "' == > check if the '/>' is set or the end of element")); return false; } - protected boolean iParseText(final Object parent, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { + protected boolean iParseText(final Object parent, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { Log.verbose("start parse : 'text'"); - final FilePos pos = _filePos.clone(); // search end of the comment : - for (int iii = _pos.value; iii < _data.length(); iii++) { - Tools.drawElementParsed(_data.charAt(iii), _filePos); - if (_filePos.check(_data.charAt(iii)) == true) { + for (int iii = pos.value; iii < data.length(); iii++) { + Tools.drawElementParsed(data.charAt(iii), filePos); + if (filePos.check(data.charAt(iii))) { continue; } - if (_data.charAt(iii) == '>' || _data.charAt(iii) == '<') { + if (data.charAt(iii) == '>' || data.charAt(iii) == '<') { // search whitespace : int newEnd = iii; - for (int jjj = iii - 1; jjj > _pos.value; --jjj) { - if (Tools.isWhiteChar(_data.charAt(jjj)) == true) { - newEnd = jjj; - } else { + for (int jjj = iii - 1; jjj > pos.value; --jjj) { + if (!Tools.isWhiteChar(data.charAt(jjj))) { break; } + newEnd = jjj; } // find end of value: - String valueText = _data.substring(_pos.value, newEnd); + String valueText = data.substring(pos.value, newEnd); Log.verbose("find text '" + valueText + "'"); - _pos.value = iii - 1; + pos.value = iii - 1; valueText = Tools.replaceSpecialChar(valueText); this.builder.newText(parent, valueText); return true; } } - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Text got end of file without finding end node")); - _pos.value = _data.length(); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Text got end of file without finding end node")); + pos.value = data.length(); return false; } @@ -297,8 +285,8 @@ public class ParseXml { final Object rootNode = this.builder.newRoot(); subParseElement(rootNode, null, data, parsePos, pos, property); - if (property.isErrorDetected() == true) { - if (property.isThrowOnError() == true) { + if (property.isErrorDetected()) { + if (property.isThrowOnError()) { throw new ExmlParserErrorMulti("Parsing error multiple error detected", property.getErrors()); } return null; @@ -308,58 +296,57 @@ public class ParseXml { /** * Parse sub node string - * @param[in] _data all file string data - * @param[in,out] _pos Position to start parsing in the file and return the end of parsing - * @param[in] _caseSensitive Case sensitive parsing (usefull for html) - * @param[in] _filePos Current File position of the parsing - * @param[in] _doc Document base reference - * @param[in] _mainNode if true, this is the first root node + * @param data all file string data + * @param pos Position to start parsing in the file and return the end of parsing + * @param caseSensitive Case sensitive parsing (usefull for html) + * @param filePos Current File position of the parsing + * @param doc Document base reference + * @param mainNode if true, this is the first root node * @return true parsing is done OK * @return false An error appear in the parsing */ - protected boolean subParseElement(final Object parent, final String nameElement, final String _data, final PositionParsing _pos, final FilePos _filePos, final ParsingProperty parsingProperty) + protected boolean subParseElement(final Object parent, final String nameElement, final String data, final PositionParsing pos, final FilePos filePos, final ParsingProperty parsingProperty) throws ExmlBuilderException { - //EXML_PARSE_ELEMENT(" start subParse ... " << _pos << " " << _filePos); - for (int iii = _pos.value; iii < _data.length(); iii++) { - _filePos.check(_data.charAt(iii)); - Tools.drawElementParsed(_data.charAt(iii), _filePos); + //EXMLPARSEELEMENT(" start subParse ... " << pos << " " << filePos); + for (int iii = pos.value; iii < data.length(); iii++) { + filePos.check(data.charAt(iii)); + Tools.drawElementParsed(data.charAt(iii), filePos); final FilePos tmpPos = new FilePos(); - if (_data.charAt(iii) == '<') { - final int white = Tools.countWhiteChar(_data, iii + 1, tmpPos); - if (iii + white + 1 >= _data.length()) { - _filePos.add(tmpPos); - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "End file with '<' char == > invalide XML")); - _pos.value = iii + white; + if (data.charAt(iii) == '<') { + final int white = Tools.countWhiteChar(data, iii + 1, tmpPos); + if (iii + white + 1 >= data.length()) { + filePos.add(tmpPos); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End file with '<' char == > invalide XML")); + pos.value = iii + white; return false; } // Detect type of the element: - if (_data.charAt(iii + white + 1) == '>') { - _filePos.add(tmpPos); - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find '>' with no element in the element...")); - _pos.value = iii + white + 1; + if (data.charAt(iii + white + 1) == '>') { + filePos.add(tmpPos); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find '>' with no element in the element...")); + pos.value = iii + white + 1; return false; } - if (_data.charAt(iii + white + 1) == '?') { + if (data.charAt(iii + white + 1) == '?') { tmpPos.increment(); // TODO : white space ... - if (Tools.checkAvaillable(_data.charAt(iii + white + 2), true) == false) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find unavaillable name in the Declaration node...")); - _pos.value = iii + white + 1; + if (!Tools.checkAvaillable(data.charAt(iii + white + 2), true)) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find unavaillable name in the Declaration node...")); + pos.value = iii + white + 1; return false; } - //EXML_DEBUG("Generate node name : '" << _data[iii+1] << "'"); + //EXMLDEBUG("Generate node name : '" << data[iii+1] << "'"); int endPosName = iii + white + 1; // generate element name ... - for (int jjj = iii + white + 2; jjj < _data.length(); jjj++) { - if (Tools.checkAvaillable(_data.charAt(jjj), false) == true) { - // we find the end ... - endPosName = jjj; - } else { + for (int jjj = iii + white + 2; jjj < data.length(); jjj++) { + if (!Tools.checkAvaillable(data.charAt(jjj), false)) { break; } - tmpPos.check(_data.charAt(jjj)); + // we find the end ... + endPosName = jjj; + tmpPos.check(data.charAt(jjj)); } - String tmpname = _data.substring(iii + white + 2, endPosName + 1); + String tmpname = data.substring(iii + white + 2, endPosName + 1); if (parsingProperty.getStoreMode() == StoreMode.LOWERCASE) { tmpname = tmpname.toLowerCase(); } else if (parsingProperty.getStoreMode() == StoreMode.UPPERCASE) { @@ -367,135 +354,133 @@ public class ParseXml { } // Find declaration marker final Object declaration = this.builder.newDeclaration(parent, tmpname); - _filePos.add(tmpPos); - _pos.value = endPosName + 1; + filePos.add(tmpPos); + pos.value = endPosName + 1; Log.verbose("start parse : 'declaration' : '" + tmpname + "'"); - if (iParseDeclaration(declaration, _data, _pos, _filePos, parsingProperty) == false) { + if (!iParseDeclaration(declaration, data, pos, filePos, parsingProperty)) { return false; } - iii = _pos.value; + iii = pos.value; continue; } - if (_data.charAt(iii + white + 1) == '!') { + if (data.charAt(iii + white + 1) == '!') { tmpPos.increment(); // Find special block element - if (iii + white + 2 >= _data.length()) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "End file with ' invalide XML")); + if (iii + white + 2 >= data.length()) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End file with ' invalide XML")); return false; } - if (_data.charAt(iii + white + 2) == '-') { + if (data.charAt(iii + white + 2) == '-') { tmpPos.increment(); - if (iii + white + 3 >= _data.length()) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "End file with ' invalide XML")); + if (iii + white + 3 >= data.length()) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End file with ' invalide XML")); return false; } - if (_data.charAt(iii + white + 3) != '-') { + if (data.charAt(iii + white + 3) != '-') { parsingProperty - .createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Element parse with ' invalide XML")); + .createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Element parse with ' invalide XML")); return false; } tmpPos.increment(); // find comment: - _pos.value = iii + white + 4; - _filePos.add(tmpPos); - if (iParseComment(parent, _data, _pos, _filePos, parsingProperty) == false) { + pos.value = iii + white + 4; + filePos.add(tmpPos); + if (!iParseComment(parent, data, pos, filePos, parsingProperty)) { return false; } - iii = _pos.value; - } else if (_data.charAt(iii + white + 2) == '[') { + iii = pos.value; + } else if (data.charAt(iii + white + 2) == '[') { tmpPos.increment(); - if (iii + white + 8 >= _data.length()) { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "End file with ' invalide XML")); + if (iii + white + 8 >= data.length()) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End file with ' invalide XML")); return false; } - if (_data.charAt(iii + white + 3) != 'C' || _data.charAt(iii + white + 4) != 'D' || _data.charAt(iii + white + 5) != 'A' || _data.charAt(iii + white + 6) != 'T' - || _data.charAt(iii + white + 7) != 'A' || _data.charAt(iii + white + 8) != '[') { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, - "Element parse with ' invalide XML")); + if (data.charAt(iii + white + 3) != 'C' || data.charAt(iii + white + 4) != 'D' || data.charAt(iii + white + 5) != 'A' || data.charAt(iii + white + 6) != 'T' + || data.charAt(iii + white + 7) != 'A' || data.charAt(iii + white + 8) != '[') { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, + "Element parse with ' invalide XML")); return false; } tmpPos.add(6); // find text: - _pos.value = iii + 9 + white; - _filePos.add(tmpPos); - if (iParseCDATA(parent, _data, _pos, _filePos, parsingProperty) == false) { + pos.value = iii + 9 + white; + filePos.add(tmpPos); + if (!iParseCDATA(parent, data, pos, filePos, parsingProperty)) { return false; } - iii = _pos.value; + iii = pos.value; } else { parsingProperty - .createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "End file with ' invalide XML")); + .createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End file with ' invalide XML")); return false; } continue; } - if (_data.charAt(iii + white + 1) == '/') { + if (data.charAt(iii + white + 1) == '/') { tmpPos.increment(); - //EXML_DEBUG("Generate node name : '" << _data[iii+1] << "'"); + //EXMLDEBUG("Generate node name : '" << data[iii+1] << "'"); int endPosName = iii + white + 1; // generate element name ... - for (int jjj = iii + white + 2; jjj < _data.length(); jjj++) { - if (Tools.checkAvaillable(_data.charAt(jjj), false) == true) { - // we find the end ... - endPosName = jjj; - } else { + for (int jjj = iii + white + 2; jjj < data.length(); jjj++) { + if (!Tools.checkAvaillable(data.charAt(jjj), false)) { break; } - tmpPos.check(_data.charAt(jjj)); + // we find the end ... + endPosName = jjj; + tmpPos.check(data.charAt(jjj)); } - final String tmpname = _data.substring(iii + white + 2, endPosName + 1); + final String tmpname = data.substring(iii + white + 2, endPosName + 1); String tmpnameCheck = tmpname; String nameElementCheck = nameElement; - if (parsingProperty.getCaseSensitive() == true) { + if (parsingProperty.getCaseSensitive()) { tmpnameCheck = tmpname.toLowerCase(); nameElementCheck = nameElement.toLowerCase(); } - if (tmpnameCheck.contentEquals(nameElementCheck) == true) { - // find end of node : - // find > element ... - for (int jjj = endPosName + 1; jjj < _data.length(); jjj++) { - Tools.drawElementParsed(_data.charAt(jjj), _filePos); - if (tmpPos.check(_data.charAt(jjj)) == true) { - continue; - } - if (_data.charAt(jjj) == '>') { - _pos.value = jjj; - _filePos.add(tmpPos); - return true; - } else if (_data.charAt(jjj) != '\r' && _data.charAt(jjj) != ' ' && _data.charAt(jjj) != '\t') { - _filePos.add(tmpPos); - parsingProperty.createError( - new ExmlParserError(Tools.extractLine(_data, jjj), _filePos, "End node error : have data inside end node other than [ \\n\\t\\r] " + nameElement + "'")); - return false; - } - } - } else { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "End node error : '" + tmpname + "' != '" + nameElement + "'")); + if (!tmpnameCheck.contentEquals(nameElementCheck)) { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End node error : '" + tmpname + "' != '" + nameElement + "'")); return false; } + // find end of node : + // find > element ... + for (int jjj = endPosName + 1; jjj < data.length(); jjj++) { + Tools.drawElementParsed(data.charAt(jjj), filePos); + if (tmpPos.check(data.charAt(jjj))) { + continue; + } + if (data.charAt(jjj) == '>') { + pos.value = jjj; + filePos.add(tmpPos); + return true; + } + if (data.charAt(jjj) != '\r' && data.charAt(jjj) != ' ' && data.charAt(jjj) != '\t') { + filePos.add(tmpPos); + parsingProperty + .createError(new ExmlParserError(Tools.extractLine(data, jjj), filePos, "End node error : have data inside end node other than [ \\n\\t\\r] " + nameElement + "'")); + return false; + } + } } - if (_data.charAt(iii + white + 1) == '>') { + if (data.charAt(iii + white + 1) == '>') { // end of something == > this is really bad - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find '>' chars == > invalide XML")); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find '>' chars == > invalide XML")); return false; } - if (Tools.checkAvaillable(_data.charAt(iii + white + 1), true) == true) { + if (Tools.checkAvaillable(data.charAt(iii + white + 1), true)) { tmpPos.increment(); - Log.debug("Generate node name : '" + _data.charAt(iii + 1) + "'"); + Log.debug("Generate node name : '" + data.charAt(iii + 1) + "'"); int endPosName = iii + white + 1; // generate element name ... - for (int jjj = iii + white + 2; jjj < _data.length(); jjj++) { - if (Tools.checkAvaillable(_data.charAt(jjj), false) == true) { - // we find the end ... - endPosName = jjj; - } else { + for (int jjj = iii + white + 2; jjj < data.length(); jjj++) { + if (!Tools.checkAvaillable(data.charAt(jjj), false)) { break; } - tmpPos.check(_data.charAt(jjj)); + // we find the end ... + endPosName = jjj; + tmpPos.check(data.charAt(jjj)); } - String tmpname = _data.substring(iii + white + 1, endPosName + 1); + String tmpname = data.substring(iii + white + 1, endPosName + 1); final String tmpnameOriginal = tmpname; if (parsingProperty.getStoreMode() == StoreMode.LOWERCASE) { tmpname = tmpname.toLowerCase(); @@ -512,42 +497,41 @@ public class ParseXml { // TODO Auto-generated catch block e.printStackTrace(); } - _pos.value = endPosName + 1; - _filePos.add(tmpPos); + pos.value = endPosName + 1; + filePos.add(tmpPos); Log.verbose("start parse : 'element' named='" + tmpname + "'"); - if (iParseElement(element, tmpnameOriginal, _data, _pos, _filePos, parsingProperty) == false) { + if (!iParseElement(element, tmpnameOriginal, data, pos, filePos, parsingProperty)) { return false; } - iii = _pos.value; + iii = pos.value; continue; } - _filePos.add(tmpPos); + filePos.add(tmpPos); // here we have an error : - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find an ununderstanding element : '" + _data.charAt(iii + white + 1) + "'")); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find an ununderstanding element : '" + data.charAt(iii + white + 1) + "'")); return false; + } + if (data.charAt(iii) == '>') { + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Find elemement '>' == > no reason to be here ...")); + return false; + } + // might to be data text ... + if (data.charAt(iii) == '\n' || data.charAt(iii) == ' ' || data.charAt(iii) == '\t' || data.charAt(iii) == '\r') { + // empty spaces == > nothing to do .... } else { - if (_data.charAt(iii) == '>') { - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Find elemement '>' == > no reason to be here ...")); + // find data == > parse it... + pos.value = iii; + filePos.add(tmpPos); + if (!iParseText(parent, data, pos, filePos, parsingProperty)) { return false; } - // might to be data text ... - if (_data.charAt(iii) == '\n' || _data.charAt(iii) == ' ' || _data.charAt(iii) == '\t' || _data.charAt(iii) == '\r') { - // empty spaces == > nothing to do .... - } else { - // find data == > parse it... - _pos.value = iii; - _filePos.add(tmpPos); - if (iParseText(parent, _data, _pos, _filePos, parsingProperty) == false) { - return false; - } - iii = _pos.value; - } + iii = pos.value; } } if (nameElement == null) { return true; } - parsingProperty.createError(new ExmlParserError(Tools.extractLine(_data, _pos.value), _filePos, "Did not find end of the Element : '" + nameElement + "'")); + parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "Did not find end of the Element : '" + nameElement + "'")); return false; } } diff --git a/src/org/atriasoft/exml/parser/ParsingProperty.java b/src/org/atriasoft/exml/parser/ParsingProperty.java index a7498b6..e78c2a4 100644 --- a/src/org/atriasoft/exml/parser/ParsingProperty.java +++ b/src/org/atriasoft/exml/parser/ParsingProperty.java @@ -10,16 +10,16 @@ import org.atriasoft.exml.internal.Log; public class ParsingProperty { /// check the case sensitive of the nodes (end marker) and attribute (duplicates) private boolean caseSensitive = true; - // Mode to store the Element name or the Attibute name - private StoreMode storeMode = StoreMode.NORMAL; - /// write error when not throw on error. - private boolean writeError = false; - /// throw when an error when it is detected (if permissive XML it throw only at the end of parsing). - private boolean throwOnError = true; - /// Permissive XML parsing (allows some errors must not be critical). - private boolean permisiveXML = false; // List of all error detected private final List errors = new ArrayList<>(); + /// Permissive XML parsing (allows some errors must not be critical). + private boolean permisiveXML = false; + // Mode to store the Element name or the Attibute name + private StoreMode storeMode = StoreMode.NORMAL; + /// throw when an error when it is detected (if permissive XML it throw only at the end of parsing). + private boolean throwOnError = true; + /// write error when not throw on error. + private boolean writeError = false; /** * Constructor @@ -48,23 +48,23 @@ public class ParsingProperty { */ public boolean createError(final ExmlParserError error) throws ExmlParserError { // need display the error - if (this.writeError == true) { + if (this.writeError) { displayError(error); } // need throw the error - if (this.throwOnError == true && this.permisiveXML == false) { + if (this.throwOnError && !this.permisiveXML) { throw error; } // Keep it in case this.errors.add(error); - return this.permisiveXML == false; + return !this.permisiveXML; } /** * Request Display in log all the errors. */ public void displayError() { - this.errors.forEach(o -> displayError(o)); + this.errors.forEach(this::displayError); } /** @@ -113,7 +113,7 @@ public class ParsingProperty { * @return true if some error are stored. */ public boolean isErrorDetected() { - return this.errors.isEmpty() == false; + return !this.errors.isEmpty(); } /** @@ -134,18 +134,18 @@ public class ParsingProperty { /** * Enable or diasable the case sensitive (must be done before the call of parsing) - * @param[in] _val true if enable; false else. + * @param val true if enable; false else. */ - public void setCaseSensitive(final boolean _val) { - this.caseSensitive = _val; + public void setCaseSensitive(final boolean val) { + this.caseSensitive = val; } /** * Set the display of the error when detected. - * @param[in] _value true: display error, false not display error (get it at end) + * @param value true: display error, false not display error (get it at end) */ - public void setDisplayError(final boolean _value) { - this.writeError = _value; + public void setDisplayError(final boolean value) { + this.writeError = value; } /** diff --git a/src/org/atriasoft/exml/parser/Tools.java b/src/org/atriasoft/exml/parser/Tools.java index fe47658..05d5e76 100644 --- a/src/org/atriasoft/exml/parser/Tools.java +++ b/src/org/atriasoft/exml/parser/Tools.java @@ -3,31 +3,30 @@ package org.atriasoft.exml.parser; public class Tools { /** * add indentation of the string input. - * @param[in,out] _data String where the indentation is done. - * @param[in] _indent Number of tab to add at the string. + * @param data String where the indentation is done. + * @param indent Number of tab to add at the string. */ - public static void addIndent(final StringBuilder _data, final int _indent) { - for (int iii = 0; iii < _indent; iii++) { - _data.append("\t"); + public static void addIndent(final StringBuilder data, final int indent) { + for (int iii = 0; iii < indent; iii++) { + data.append("\t"); } } /** * check if an element or attribute is availlable (not : !"#$%&'()*+,/;<=>?@[\]^`{|}~ \\n\\t\\r and for first char : not -.0123456789). - * @param[in] _val Value to check the conformity. - * @param[in] _firstChar True if the element check is the first char. + * @param val Value to check the conformity. + * @param firstChar True if the element check is the first char. * @return true The value can be a part of attribute name * @return false The value can NOT be a part of attribute name */ - public static boolean checkAvaillable(final Character _val, final boolean _firstChar) { - if (_val == '!' || _val == '"' || _val == '#' || _val == '$' || _val == '%' || _val == '&' || _val == '\'' // ' - || _val == '(' || _val == ')' || _val == '*' || _val == '+' || _val == ',' || _val == '/' || _val == ';' || _val == '<' || _val == '=' || _val == '>' || _val == '?' || _val == '@' - || _val == '[' || _val == '\\' || _val == ']' || _val == '^' || _val == '`' || _val == '{' || _val == '|' || _val == '}' || _val == '~' || _val == ' ' || _val == '\n' || _val == '\t' - || _val == '\r') { + public static boolean checkAvaillable(final Character val, final boolean firstChar) { + if (val == '!' || val == '"' || val == '#' || val == '$' || val == '%' || val == '&' || val == '\'' // ' + || val == '(' || val == ')' || val == '*' || val == '+' || val == ',' || val == '/' || val == ';' || val == '<' || val == '=' || val == '>' || val == '?' || val == '@' || val == '[' + || val == '\\' || val == ']' || val == '^' || val == '`' || val == '{' || val == '|' || val == '}' || val == '~' || val == ' ' || val == '\n' || val == '\t' || val == '\r') { return false; } - if (_firstChar == true) { - if (_val == '-' || _val == '.' || (_val >= '0' && _val <= '9')) { + if (firstChar) { + if (val == '-' || val == '.' || (val >= '0' && val <= '9')) { return false; } } @@ -40,37 +39,36 @@ public class Tools { /** * count the number of white char in the string from the specify position (stop at the first element that is not a white char) - * @param[in] _data Data to parse. - * @param[in] _pos Start position in the string. - * @param[out] _filePos new poistion of te file to add. + * @param data Data to parse. + * @param pos Start position in the string. + * @param filePos new poistion of te file to add. * @return number of white element. */ - public static int countWhiteChar(final String _data, final int _pos, final FilePos _filePos) { - _filePos.clear(); + public static int countWhiteChar(final String data, final int pos, final FilePos filePos) { + filePos.clear(); int white = 0; - for (int iii = _pos; iii < _data.length(); iii++) { - _filePos.check(_data.charAt(iii)); - if (Tools.isWhiteChar(_data.charAt(iii)) == true) { - white++; - } else { + for (int iii = pos; iii < data.length(); iii++) { + filePos.check(data.charAt(iii)); + if (!Tools.isWhiteChar(data.charAt(iii))) { break; } + white++; } - _filePos.decrement(); + filePos.decrement(); return white; } - public static String createPosPointer(final String _line, final int _pos) { + public static String createPosPointer(final String line, final int pos) { String out = ""; int iii; - for (iii = 0; iii < _pos && iii < _line.length(); iii++) { - if (_line.charAt(iii) == '\t') { + for (iii = 0; iii < pos && iii < line.length(); iii++) { + if (line.charAt(iii) == '\t') { out += "\t"; } else { out += " "; } } - for (; iii < _pos; iii++) { + for (; iii < pos; iii++) { out += " "; } out += "^"; @@ -82,41 +80,41 @@ public class Tools { if (string == null || string.length() == 0) { return string; } - final char c[] = string.toCharArray(); + final char[] c = string.toCharArray(); c[0] = Character.toLowerCase(c[0]); return new String(c); } /** * Display the cuurent element that is curently parse. - * @param[in] _val Char that is parsed. - * @param[in] _filePos Position of the char in the file. + * @param val Char that is parsed. + * @param filePos Position of the char in the file. */ - public static void drawElementParsed(final Character _val, final FilePos _filePos) { - // if (_val == '\n') { - // Log.debug(_filePos + " parse '\\n'"); - // } else if (_val == '\t') { - // Log.debug(_filePos + " parse '\\t'"); + public static void drawElementParsed(final Character val, final FilePos filePos) { + // if (val == '\n') { + // Log.debug(filePos + " parse '\\n'"); + // } else if (val == '\t') { + // Log.debug(filePos + " parse '\\t'"); // } else { - // Log.debug(_filePos + " parse '" + _val + "'"); + // Log.debug(filePos + " parse '" + val + "'"); // } } - public static String extractLine(final String data, final int _pos) { + public static String extractLine(final String data, final int pos) { // search back : '\n' - int startPos = data.lastIndexOf('\n', _pos); - if (startPos == _pos) { + int startPos = data.lastIndexOf('\n', pos); + if (startPos == pos) { startPos = 0; } else { startPos++; } // search forward : '\n' - int stopPos = _pos; - if (data.length() == _pos) { - stopPos = _pos; - } else if (data.charAt(_pos) != '\n') { - stopPos = data.indexOf('\n', _pos); - if (stopPos == _pos) { + int stopPos = pos; + if (data.length() == pos) { + stopPos = pos; + } else if (data.charAt(pos) != '\n') { + stopPos = data.indexOf('\n', pos); + if (stopPos == pos) { stopPos = data.length(); } } @@ -127,22 +125,23 @@ public class Tools { } if (stopPos == -1) { return ""; - } else if (stopPos >= data.length()) { + } + if (stopPos >= data.length()) { stopPos = data.length(); } return data.substring(startPos, stopPos); } - public static boolean isWhiteChar(final Character _val) { - if (_val == ' ' || _val == '\t' || _val == '\n' || _val == '\r') { + public static boolean isWhiteChar(final Character val) { + if (val == ' ' || val == '\t' || val == '\n' || val == '\r') { return true; } return false; } public static Boolean[] parseBooleanClassStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final Boolean[] out = new Boolean[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -152,19 +151,19 @@ public class Tools { } public static boolean[] parseBooleanStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final boolean[] out = new boolean[dataArray.length]; int count = 0; for (final String str : dataArray) { - out[count++] = Boolean.valueOf(str); + out[count++] = Boolean.parseBoolean(str); } return out; } public static Byte[] parseByteClassStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final Byte[] out = new Byte[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -174,8 +173,8 @@ public class Tools { } public static byte[] parseByteStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final byte[] out = new byte[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -185,8 +184,8 @@ public class Tools { } public static Integer[] parseIntegerClassStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final Integer[] out = new Integer[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -196,8 +195,8 @@ public class Tools { } public static int[] parseIntegerStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final int[] out = new int[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -207,8 +206,8 @@ public class Tools { } public static Long[] parseLongClassStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final Long[] out = new Long[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -218,8 +217,8 @@ public class Tools { } public static long[] parseLongStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final long[] out = new long[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -229,8 +228,8 @@ public class Tools { } public static Short[] parseShortClassStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final Short[] out = new Short[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -240,8 +239,8 @@ public class Tools { } public static short[] parseShortStringList(String data) { // throws NumberFormatException - data = cleanNumberList(data); - final String dataArray[] = data.split(";"); + data = Tools.cleanNumberList(data); + final String[] dataArray = data.split(";"); final short[] out = new short[dataArray.length]; int count = 0; for (final String str : dataArray) { @@ -256,25 +255,25 @@ public class Tools { // "&" == "&" // "'" == "'" // """ == """ - public static String replaceSpecialChar(final String _inval) { - final String out = _inval; - out.replace("<", "<"); - out.replace(">", ">"); - out.replace("'", "'"); - out.replace(""", "\""); - out.replace("&", "&"); - //EXML_ERROR("INNN '"<< _inval << "' => '" << out << "'"); + public static String replaceSpecialChar(final String inval) { + String out = inval; + out = out.replace("<", "<"); + out = out.replace(">", ">"); + out = out.replace("'", "'"); + out = out.replace(""", "\""); + out = out.replace("&", "&"); + //EXMLERROR("INNN '"<< inval << "' => '" << out << "'"); return out; } - public static String replaceSpecialCharOut(final String _inval) { - final String out = _inval; - out.replace("<", "<"); - out.replace(">", ">"); - out.replace("'", "'"); - out.replace("\"", """); - out.replace("&", "&"); - //EXML_ERROR("OUTTT '"<< _inval << "' => '" << out << "'"); + public static String replaceSpecialCharOut(final String inval) { + String out = inval; + out = out.replace("<", "<"); + out = out.replace(">", ">"); + out = out.replace("'", "'"); + out = out.replace("\"", """); + out = out.replace("&", "&"); + //EXMLERROR("OUTTT '"<< inval << "' => '" << out << "'"); return out; } diff --git a/src/org/atriasoft/exml/serializer/SerializerXml.java b/src/org/atriasoft/exml/serializer/SerializerXml.java index dc7d2e1..f467e87 100644 --- a/src/org/atriasoft/exml/serializer/SerializerXml.java +++ b/src/org/atriasoft/exml/serializer/SerializerXml.java @@ -14,16 +14,15 @@ import org.atriasoft.exml.model.XmlText; import org.atriasoft.exml.parser.Tools; public class SerializerXml { - public static void serialize(final XmlNode node, final StringBuilder data, final int indent) { if (node instanceof XmlElement) { - serializeElement((XmlElement) node, data, indent); + SerializerXml.serializeElement((XmlElement) node, data, indent); } else if (node instanceof XmlText) { - serializeText((XmlText) node, data, indent); + SerializerXml.serializeText((XmlText) node, data, indent); } else if (node instanceof XmlDeclaration) { - serializeDeclaration((XmlDeclaration) node, data, indent); + SerializerXml.serializeDeclaration((XmlDeclaration) node, data, indent); } else if (node instanceof XmlComment) { - serializeComment((XmlComment) node, data, indent); + SerializerXml.serializeComment((XmlComment) node, data, indent); } else { // TODO throw an error ... } @@ -39,7 +38,7 @@ public class SerializerXml { private static void serializeAttributeList(final XmlAttributeList list, final StringBuilder data, final int indent) { for (int iii = 0; iii < list.getAttributes().size(); iii++) { - serializeAttribute(list.getAttributes().get(iii), data, indent); + SerializerXml.serializeAttribute(list.getAttributes().get(iii), data, indent); } } @@ -54,7 +53,7 @@ public class SerializerXml { Tools.addIndent(data, indent); data.append("\n"); } @@ -64,19 +63,19 @@ public class SerializerXml { Tools.addIndent(data, indent); data.append("<"); data.append(element.getValue()); - serializeAttributeList(element, data, indent); + SerializerXml.serializeAttributeList(element, data, indent); final List nodes = element.getNodes(); if (nodes.size() > 0) { if (nodes.size() == 1 && nodes.get(0) != null && nodes.get(0).getType() == XmlNodeType.TEXT && ((XmlText) nodes.get(0)).countLines() == 1) { data.append(">"); - serialize(nodes.get(0), data, 0); + SerializerXml.serialize(nodes.get(0), data, 0); Log.verbose(" generate : '" + data + "'"); } else { data.append(">\n"); - for (int iii = 0; iii < nodes.size(); iii++) { - if (nodes.get(iii) != null) { - serialize(nodes.get(iii), data, indent + 1); + for (XmlNode node : nodes) { + if (node != null) { + SerializerXml.serialize(node, data, indent + 1); } } Tools.addIndent(data, indent); @@ -92,7 +91,7 @@ public class SerializerXml { public static void serializeRoot(final XmlElement root, final StringBuilder data) { for (int iii = 0; iii < root.getNodes().size(); iii++) { final XmlNode node = root.getNodes().get(iii); - serialize(node, data, 0); + SerializerXml.serialize(node, data, 0); } } @@ -109,4 +108,6 @@ public class SerializerXml { return true; } */ + + private SerializerXml() {} } diff --git a/test/src/test/atriasoft/exml/ExmlLocal.java b/test/src/test/atriasoft/exml/ExmlLocal.java index 14c81cb..e3177f1 100644 --- a/test/src/test/atriasoft/exml/ExmlLocal.java +++ b/test/src/test/atriasoft/exml/ExmlLocal.java @@ -11,37 +11,36 @@ import org.atriasoft.exml.model.XmlNode; import org.junit.jupiter.api.Assertions; class ExmlLocal { - // _errorPos : -1 : no error , 1 : parsing error, 2 generation error, 3 comparaison error ???? - public static void test(final String _ref, final String _input, final int _errorPos) { - test(_ref, _input, _errorPos, false); + // errorPos : -1 : no error , 1 : parsing error, 2 generation error, 3 comparaison error ???? + public static void test(final String ref, final String input, final int errorPos) { + ExmlLocal.test(ref, input, errorPos, false); } - public static void test(final String _ref, final String _input, final int _errorPos, final boolean _caseInSensitive) { - //doc.setCaseSensitive(!_caseInSensitive); - Log.verbose("parse : \n" + _input); + public static void test(final String ref, final String input, final int errorPos, final boolean caseInSensitive) { + //doc.setCaseSensitive(!caseInSensitive); + Log.verbose("parse : \n" + input); XmlNode root = null; try { - root = Exml.parse(_input); - if (_errorPos == 1) { + root = Exml.parse(input); + if (errorPos == 1) { Assertions.fail("Must have detected an error"); return; } } catch (final ExmlBuilderException e) { - if (_errorPos == 1) { + if (errorPos == 1) { return; - } else { - Assertions.fail("Must have NOT detected an error"); } + Assertions.fail("Must have NOT detected an error"); } final StringBuilder out = new StringBuilder(); - // TODO: 2 is for failing in generate ... + // TODO 2 is for failing in generate ... Exml.generate(root, out); final String data = out.toString(); - if (_errorPos == 3) { - Assertions.assertNotEquals(_ref, data); - return; - } else { - Assertions.assertEquals(_ref, data); + if (errorPos == 3) { + Assertions.assertNotEquals(ref, data); } + Assertions.assertEquals(ref, data); } + + private ExmlLocal() {} } diff --git a/test/src/test/atriasoft/exml/ExmlTestAttribute.java b/test/src/test/atriasoft/exml/ExmlTestAttribute.java index 4d6aeab..80a2344 100644 --- a/test/src/test/atriasoft/exml/ExmlTestAttribute.java +++ b/test/src/test/atriasoft/exml/ExmlTestAttribute.java @@ -20,7 +20,7 @@ public class ExmlTestAttribute { } @Test - public void AttributeElementNotExist() { + public void attributeElementNotExist() { final XmlElement myElement = new XmlElement("NodeName"); Assertions.assertThrows(ExmlAttributeDoesNotExist.class, () -> myElement.getAttr(65465465)); } diff --git a/test/src/test/atriasoft/exml/introspection/ClassPublicMemberOnly.java b/test/src/test/atriasoft/exml/introspection/ClassPublicMemberOnly.java index 78b6385..594c12e 100644 --- a/test/src/test/atriasoft/exml/introspection/ClassPublicMemberOnly.java +++ b/test/src/test/atriasoft/exml/introspection/ClassPublicMemberOnly.java @@ -3,26 +3,26 @@ package test.atriasoft.exml.introspection; import org.atriasoft.exml.annotation.XmlName; public class ClassPublicMemberOnly { - @XmlName(value = { "jhkjhhkj" }) - public byte memberByte; - public short memberShort; - public int memberInteger; - public long memberLong; - public boolean memberBoolean; - public Byte memberByteClass; - public Short memberShortClass; - public Integer memberIntegerClass; - public Long memberLongClass; - public Boolean memberBooleanClass; - public String memberStringClass; - public byte[] memberArrayByte; - public short[] memberArrayShort; - public int[] memberArrayInteger; - public long[] memberArrayLong; public boolean[] memberArrayBoolean; - public Byte[] memberArrayByteClass; - public Short[] memberArrayShortClass; - public Integer[] memberArrayIntegerClass; - public Long[] memberArrayLongClass; public Boolean[] memberArrayBooleanClass; + public byte[] memberArrayByte; + public Byte[] memberArrayByteClass; + public int[] memberArrayInteger; + public Integer[] memberArrayIntegerClass; + public long[] memberArrayLong; + public Long[] memberArrayLongClass; + public short[] memberArrayShort; + public Short[] memberArrayShortClass; + public boolean memberBoolean; + public Boolean memberBooleanClass; + @XmlName(value = "jhkjhhkj") + public byte memberByte; + public Byte memberByteClass; + public int memberInteger; + public Integer memberIntegerClass; + public long memberLong; + public Long memberLongClass; + public short memberShort; + public Short memberShortClass; + public String memberStringClass; } diff --git a/test/src/test/atriasoft/exml/introspection/ClassPublicMethodOnly.java b/test/src/test/atriasoft/exml/introspection/ClassPublicMethodOnly.java index 15d6a6a..bdfbcb4 100644 --- a/test/src/test/atriasoft/exml/introspection/ClassPublicMethodOnly.java +++ b/test/src/test/atriasoft/exml/introspection/ClassPublicMethodOnly.java @@ -1,27 +1,27 @@ package test.atriasoft.exml.introspection; public class ClassPublicMethodOnly { - private byte memberByte; - private short memberShort; - private int memberInteger; - private long memberLong; - private boolean memberBoolean; - private Byte memberByteClass; - private Short memberShortClass; - private Integer memberIntegerClass; - private Long memberLongClass; - private Boolean memberBooleanClass; - private String memberStringClass; - private byte[] memberArrayByte; - private short[] memberArrayShort; - private int[] memberArrayInteger; - private long[] memberArrayLong; private boolean[] memberArrayBoolean; - private Byte[] memberArrayByteClass; - private Short[] memberArrayShortClass; - private Integer[] memberArrayIntegerClass; - private Long[] memberArrayLongClass; private Boolean[] memberArrayBooleanClass; + private byte[] memberArrayByte; + private Byte[] memberArrayByteClass; + private int[] memberArrayInteger; + private Integer[] memberArrayIntegerClass; + private long[] memberArrayLong; + private Long[] memberArrayLongClass; + private short[] memberArrayShort; + private Short[] memberArrayShortClass; + private boolean memberBoolean; + private Boolean memberBooleanClass; + private byte memberByte; + private Byte memberByteClass; + private int memberInteger; + private Integer memberIntegerClass; + private long memberLong; + private Long memberLongClass; + private short memberShort; + private Short memberShortClass; + private String memberStringClass; public boolean[] getMemberArrayBoolean() { return this.memberArrayBoolean;