[DEV] start add element in nodes
This commit is contained in:
parent
2e6f7c3a5f
commit
48fb2da890
@ -6,14 +6,12 @@
|
|||||||
|
|
||||||
package org.atriasoft.exml;
|
package org.atriasoft.exml;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.atriasoft.etk.Uri;
|
import org.atriasoft.etk.Uri;
|
||||||
@ -88,7 +86,7 @@ public class Exml {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
private static String readFile(Path path, Charset encoding) throws IOException
|
private static String readFile(final Path path, final Charset encoding) throws IOException
|
||||||
{
|
{
|
||||||
byte[] encoded = Files.readAllBytes(path);
|
byte[] encoded = Files.readAllBytes(path);
|
||||||
return new String(encoded, encoding);
|
return new String(encoded, encoding);
|
||||||
@ -97,11 +95,11 @@ public class Exml {
|
|||||||
public static <T> T[] parse(final Path path, final Class<T> classType, final String rootNodeName) throws ExmlBuilderException, ExmlParserErrorMulti {
|
public static <T> T[] parse(final Path path, final Class<T> classType, final String rootNodeName) throws ExmlBuilderException, ExmlParserErrorMulti {
|
||||||
String content = null;
|
String content = null;
|
||||||
try {
|
try {
|
||||||
content = readFile(path, StandardCharsets.UTF_8);
|
content = Exml.readFile(path, StandardCharsets.UTF_8);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return parse(content, classType, rootNodeName);
|
return Exml.parse(content, classType, rootNodeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ import java.lang.annotation.Target;
|
|||||||
@Target({ ElementType.FIELD, ElementType.METHOD })
|
@Target({ ElementType.FIELD, ElementType.METHOD })
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@ExmlAnnotation
|
@ExmlAnnotation
|
||||||
public @interface XmlProperty {
|
public @interface XmlAttribute {
|
||||||
/**
|
/**
|
||||||
* Set at true to set the element managed as a property of the Xml node
|
* Set at true to set the element managed as a property of the Xml node
|
||||||
* @return property management.
|
* @return property management.
|
35
src/org/atriasoft/exml/annotation/XmlModel.java
Normal file
35
src/org/atriasoft/exml/annotation/XmlModel.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package org.atriasoft.exml.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marker annotation that can be used to define a group list of element:
|
||||||
|
* {@code
|
||||||
|
* <GROUP>
|
||||||
|
* <ELEMENT ... > ... </ELEMENT>
|
||||||
|
* <ELEMENT ... > ... </ELEMENT>
|
||||||
|
* <ELEMENT ... > ... </ELEMENT>
|
||||||
|
* </GROUP>
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER })
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@ExmlAnnotation
|
||||||
|
public @interface XmlModel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Group names node
|
||||||
|
* @return The name of the group
|
||||||
|
* @apiNote this is incompatible with XmlName
|
||||||
|
*/
|
||||||
|
String group();
|
||||||
|
/**
|
||||||
|
* Element names inside the group
|
||||||
|
* @return The name of the element in the group
|
||||||
|
* @apiNote this is incompatible with XmlName
|
||||||
|
*/
|
||||||
|
String element();
|
||||||
|
}
|
@ -18,6 +18,7 @@ public @interface XmlName {
|
|||||||
* Names of the property of the Element name
|
* Names of the property of the Element name
|
||||||
* @note The first name if the default generated in serialization.
|
* @note The first name if the default generated in serialization.
|
||||||
* @return The list the the possible names
|
* @return The list the the possible names
|
||||||
|
* @apiNote this is incompatible with XmlModel
|
||||||
*/
|
*/
|
||||||
String[] value();
|
String[] value();
|
||||||
}
|
}
|
@ -32,8 +32,6 @@ public class BuilderIntrospection implements Builder {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newComment(final Object element, final String comment) throws ExmlBuilderException {
|
public void newComment(final Object element, final String comment) throws ExmlBuilderException {
|
||||||
// we drop all comment, we have no need of it.
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -44,30 +42,34 @@ public class BuilderIntrospection implements Builder {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object newElement(final Object parent, final String nodeName) throws ExmlBuilderException, Exception {
|
public Object newElement(final Object parent, final String nodeName) throws ExmlBuilderException, Exception {
|
||||||
|
Log.warning("new element on NodeName=" + nodeName);
|
||||||
final IntrospectionObject introspectionObject = (IntrospectionObject) parent;
|
final IntrospectionObject introspectionObject = (IntrospectionObject) parent;
|
||||||
if (introspectionObject.getDataInterface() == null) {
|
if (introspectionObject.getDataInterface() == null) {
|
||||||
final Object previousData = introspectionObject.getData();
|
final Object previousData = introspectionObject.getData();
|
||||||
if (previousData != null && previousData instanceof List) {
|
if ((previousData == null) || !(previousData instanceof List)) {
|
||||||
|
// throw an error...
|
||||||
|
return null;
|
||||||
|
}
|
||||||
final List<Object> rootList = (List<Object>) previousData;
|
final List<Object> rootList = (List<Object>) previousData;
|
||||||
// detect root node...
|
// detect root node...
|
||||||
|
// TODO Pb if the root name appeared multiple time in the XML !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ==> need a urgent correction
|
||||||
if (nodeName.contentEquals(this.rootNodeName)) {
|
if (nodeName.contentEquals(this.rootNodeName)) {
|
||||||
Log.verbose("Create new class: " + this.rootClassType.getCanonicalName());
|
Log.verbose("Create new class: " + this.rootClassType.getCanonicalName());
|
||||||
final IntrospectionData inferData = findOrCreate(this.rootClassType);
|
final IntrospectionData inferData = findOrCreate(this.rootClassType);
|
||||||
final Object newElement = inferData.createObject();
|
final Object newElement = inferData.createObject();
|
||||||
rootList.add(newElement);
|
rootList.add(newElement);
|
||||||
return new IntrospectionObject(inferData, newElement);
|
return new IntrospectionObject(inferData, newElement);
|
||||||
} else {
|
}
|
||||||
// need to add a throw on the node...
|
// need to add a throw on the node...
|
||||||
return null; // ==> disable the parsing..
|
return null; // ==> disable the parsing..
|
||||||
}
|
}
|
||||||
} else {
|
Class<?> typeClass = introspectionObject.getTypeOfSubNode(nodeName);
|
||||||
// throw an error...
|
if (typeClass != null) {
|
||||||
return null;
|
Log.verbose("Create new class: '" + typeClass.getCanonicalName() + "' for node '" + nodeName + "'");
|
||||||
|
final IntrospectionData inferData = findOrCreate(typeClass);
|
||||||
|
// Create the data when object is ended created...
|
||||||
|
return new IntrospectionObject(inferData, null);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +92,11 @@ public class BuilderIntrospection implements Builder {
|
|||||||
@Override
|
@Override
|
||||||
public void newText(final Object parent, final String text) throws ExmlBuilderException {
|
public void newText(final Object parent, final String text) throws ExmlBuilderException {
|
||||||
final IntrospectionObject introspectionObject = (IntrospectionObject) parent;
|
final IntrospectionObject introspectionObject = (IntrospectionObject) parent;
|
||||||
|
if (introspectionObject.getDataInterface() == null) {
|
||||||
|
// property on nothing ???
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
introspectionObject.setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -406,24 +406,50 @@ public class IntrospectionData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setProperty(final Object data, final String propertyName, final String propertyValue) throws Exception {
|
public void setProperty(final Object data, final String propertyName, final String propertyValue) throws Exception {
|
||||||
//Log.error(" propertyName='" + propertyName + "' propertyValue='" + propertyValue + "' ");
|
Log.error(" propertyName='" + propertyName + "' propertyValue='" + propertyValue + "' ");
|
||||||
// by default use setter to set the property
|
// by default use setter to set the property
|
||||||
final IntrospectionProperty propMethode = findMethodDescription(propertyName);
|
final IntrospectionProperty propMethode = findMethodDescription(propertyName);
|
||||||
if (propMethode != null && propMethode.cansetValue()) {
|
if (propMethode != null && propMethode.canSetValue()) {
|
||||||
//Log.error(" ==> find '" + propMethode.getNames());
|
Log.verbose(" ==> find '" + propMethode.getNames());
|
||||||
propMethode.setValue(data, propertyValue);
|
propMethode.setValue(data, propertyValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// try with direct field
|
// try with direct field
|
||||||
final IntrospectionProperty propField = findPropertyDescription(propertyName);
|
final IntrospectionProperty propField = findPropertyDescription(propertyName);
|
||||||
if (propField != null && propField.cansetValue()) {
|
if (propField != null && propField.canSetValue()) {
|
||||||
//Log.error(" ==> find '" + propField.getNames());
|
Log.verbose(" ==> find '" + propField.getNames());
|
||||||
propField.setValue(data, propertyValue);
|
propField.setValue(data, propertyValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw new Exception("can not find the field '" + propertyName + "'");
|
throw new Exception("can not find the field '" + propertyName + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detect a subNode, and ask the type of the node at the parent Class
|
||||||
|
* @param nodeName Name of the node
|
||||||
|
* @return Class of the node to create
|
||||||
|
*/
|
||||||
|
public Class<?> getTypeOfSubNode(final Object data, final String nodeName) throws Exception {
|
||||||
|
Log.error(" nodeType='" + nodeName + "'");
|
||||||
|
// by default use setter to set the property
|
||||||
|
final IntrospectionProperty propMethode = findMethodDescription(nodeName);
|
||||||
|
if (propMethode != null && propMethode.canSetValue()) {
|
||||||
|
Log.error(" ==> find '" + propMethode.getNames());
|
||||||
|
return propMethode.getType();
|
||||||
|
}
|
||||||
|
// try with direct field
|
||||||
|
final IntrospectionProperty propField = findPropertyDescription(nodeName);
|
||||||
|
if (propField != null && propField.canSetValue()) {
|
||||||
|
Log.error(" ==> find '" + propField.getNames());
|
||||||
|
return propMethode.getType();
|
||||||
|
}
|
||||||
|
throw new Exception("can not find the field '" + nodeName + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setText(final Object data, final String text) {
|
||||||
|
Log.todo("add text to element ... '" + text + "' for type : " + this.classType.getCanonicalName());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class OrderData {
|
class OrderData {
|
||||||
|
@ -31,4 +31,17 @@ public class IntrospectionObject {
|
|||||||
this.dataInterface.setProperty(this.data, propertyName, propertyValue);
|
this.dataInterface.setProperty(this.data, propertyName, propertyValue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detect a subNode, and ask the type of the node at the parent Class
|
||||||
|
* @param nodeName Name of the node
|
||||||
|
* @return Class of the node to create
|
||||||
|
*/
|
||||||
|
public Class<?> getTypeOfSubNode(final String nodeName) throws Exception {
|
||||||
|
return this.dataInterface.getTypeOfSubNode(this.data, nodeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setText(final String text) {
|
||||||
|
this.dataInterface.setText(this.data, text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ public abstract class IntrospectionProperty {
|
|||||||
|
|
||||||
public abstract boolean canGetValue();
|
public abstract boolean canGetValue();
|
||||||
|
|
||||||
public abstract boolean cansetValue();
|
public abstract boolean canSetValue();
|
||||||
|
|
||||||
public String[] getNames() {
|
public String[] getNames() {
|
||||||
return this.names;
|
return this.names;
|
||||||
|
@ -19,7 +19,7 @@ public class IntrospectionPropertyField extends IntrospectionProperty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean cansetValue() {
|
public boolean canSetValue() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public class IntrospectionPropertyMethod extends IntrospectionProperty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean cansetValue() {
|
public boolean canSetValue() {
|
||||||
return this.setter != null;
|
return this.setter != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import io.scenarium.logger.LogLevel;
|
|||||||
import io.scenarium.logger.Logger;
|
import io.scenarium.logger.Logger;
|
||||||
|
|
||||||
public class Log {
|
public class Log {
|
||||||
|
private static final boolean FORCE = true;
|
||||||
private static final String LIB_NAME = "exml";
|
private static final String LIB_NAME = "exml";
|
||||||
private static final String LIB_NAME_DRAW = Logger.getDrawableName(Log.LIB_NAME);
|
private static final String LIB_NAME_DRAW = Logger.getDrawableName(Log.LIB_NAME);
|
||||||
private static final boolean PRINT_CRITICAL = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.CRITICAL);
|
private static final boolean PRINT_CRITICAL = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.CRITICAL);
|
||||||
@ -21,13 +22,13 @@ public class Log {
|
|||||||
private static final boolean PRINT_WARNING = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.WARNING);
|
private static final boolean PRINT_WARNING = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.WARNING);
|
||||||
|
|
||||||
public static void critical(final String data) {
|
public static void critical(final String data) {
|
||||||
if (Log.PRINT_CRITICAL) {
|
if (Log.PRINT_CRITICAL || Log.FORCE) {
|
||||||
Logger.critical(Log.LIB_NAME_DRAW, data);
|
Logger.critical(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void debug(final String data) {
|
public static void debug(final String data) {
|
||||||
if (Log.PRINT_DEBUG) {
|
if (Log.PRINT_DEBUG || Log.FORCE) {
|
||||||
Logger.debug(Log.LIB_NAME_DRAW, data);
|
Logger.debug(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,37 +39,37 @@ public class Log {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void error(final String data) {
|
public static void error(final String data) {
|
||||||
if (Log.PRINT_ERROR) {
|
if (Log.PRINT_ERROR || Log.FORCE) {
|
||||||
Logger.error(Log.LIB_NAME_DRAW, data);
|
Logger.error(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void info(final String data) {
|
public static void info(final String data) {
|
||||||
if (Log.PRINT_INFO) {
|
if (Log.PRINT_INFO || Log.FORCE) {
|
||||||
Logger.info(Log.LIB_NAME_DRAW, data);
|
Logger.info(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void print(final String data) {
|
public static void print(final String data) {
|
||||||
if (Log.PRINT_PRINT) {
|
if (Log.PRINT_PRINT || Log.FORCE) {
|
||||||
Logger.print(Log.LIB_NAME_DRAW, data);
|
Logger.print(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void todo(final String data) {
|
public static void todo(final String data) {
|
||||||
if (Log.PRINT_TODO) {
|
if (Log.PRINT_TODO || Log.FORCE) {
|
||||||
Logger.todo(Log.LIB_NAME_DRAW, data);
|
Logger.todo(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void verbose(final String data) {
|
public static void verbose(final String data) {
|
||||||
if (Log.PRINT_VERBOSE) {
|
if (Log.PRINT_VERBOSE || Log.FORCE) {
|
||||||
Logger.verbose(Log.LIB_NAME_DRAW, data);
|
Logger.verbose(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warning(final String data) {
|
public static void warning(final String data) {
|
||||||
if (Log.PRINT_WARNING) {
|
if (Log.PRINT_WARNING || Log.FORCE) {
|
||||||
Logger.warning(Log.LIB_NAME_DRAW, data);
|
Logger.warning(Log.LIB_NAME_DRAW, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public abstract class XmlNode {
|
|||||||
public abstract XmlNodeType getType();
|
public abstract XmlNodeType getType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the current element Value (value in the XML tag <VALUE ... > </VALUE>.
|
* Get the current element Value (value in the XML tag >VALUE ... < >/VALUE<.
|
||||||
* @return the reference of the string value.
|
* @return the reference of the string value.
|
||||||
*/
|
*/
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
|
@ -457,7 +457,7 @@ public class ParseXml {
|
|||||||
}
|
}
|
||||||
if (data.charAt(iii + white + 1) == '/') {
|
if (data.charAt(iii + white + 1) == '/') {
|
||||||
tmpPos.increment();
|
tmpPos.increment();
|
||||||
//EXMLDEBUG("Generate node name : '" << data[iii+1] << "'");
|
Log.debug("Detect END of Node name : '" + nameElement + "'");
|
||||||
int endPosName = iii + white + 1;
|
int endPosName = iii + white + 1;
|
||||||
// generate element name ...
|
// generate element name ...
|
||||||
for (int jjj = iii + white + 2; jjj < data.length(); jjj++) {
|
for (int jjj = iii + white + 2; jjj < data.length(); jjj++) {
|
||||||
@ -469,13 +469,13 @@ public class ParseXml {
|
|||||||
tmpPos.check(data.charAt(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 tmpNameCheck = tmpname;
|
||||||
String nameElementCheck = nameElement;
|
String nameElementCheck = nameElement;
|
||||||
if (parsingProperty.getCaseSensitive()) {
|
if (parsingProperty.getCaseSensitive()) {
|
||||||
tmpnameCheck = tmpname.toLowerCase();
|
tmpNameCheck = tmpname.toLowerCase();
|
||||||
nameElementCheck = nameElement.toLowerCase();
|
nameElementCheck = nameElement.toLowerCase();
|
||||||
}
|
}
|
||||||
if (!tmpnameCheck.contentEquals(nameElementCheck)) {
|
if (!tmpNameCheck.contentEquals(nameElementCheck)) {
|
||||||
parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End node error : '" + tmpname + "' != '" + nameElement + "'"));
|
parsingProperty.createError(new ExmlParserError(Tools.extractLine(data, pos.value), filePos, "End node error : '" + tmpname + "' != '" + nameElement + "'"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -507,7 +507,7 @@ public class ParseXml {
|
|||||||
|
|
||||||
if (Tools.checkAvaillable(data.charAt(iii + white + 1), true)) {
|
if (Tools.checkAvaillable(data.charAt(iii + white + 1), true)) {
|
||||||
tmpPos.increment();
|
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;
|
int endPosName = iii + white + 1;
|
||||||
// generate element name ...
|
// generate element name ...
|
||||||
for (int jjj = iii + white + 2; jjj < data.length(); jjj++) {
|
for (int jjj = iii + white + 2; jjj < data.length(); jjj++) {
|
||||||
|
@ -10,12 +10,15 @@ import java.util.Arrays;
|
|||||||
import org.atriasoft.exml.Exml;
|
import org.atriasoft.exml.Exml;
|
||||||
import org.atriasoft.exml.exception.ExmlBuilderException;
|
import org.atriasoft.exml.exception.ExmlBuilderException;
|
||||||
import org.atriasoft.exml.exception.ExmlParserErrorMulti;
|
import org.atriasoft.exml.exception.ExmlParserErrorMulti;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import test.atriasoft.exml.introspection.ClassPublicMemberOnly;
|
import test.atriasoft.exml.introspection.ClassPublicMemberOnly;
|
||||||
import test.atriasoft.exml.introspection.ClassPublicMethodOnly;
|
import test.atriasoft.exml.introspection.ClassPublicMethodOnly;
|
||||||
|
import test.atriasoft.exml.introspection.ClassPublicMethodeNode;
|
||||||
|
import test.atriasoft.exml.introspection.ClassPublicMethodeStructured;
|
||||||
|
|
||||||
public class ExmlTestIntrospection {
|
public class ExmlTestIntrospection {
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
@ -190,4 +193,146 @@ public class ExmlTestIntrospection {
|
|||||||
Assertions.assertEquals(4, elem.getMemberArrayBooleanClass().length);
|
Assertions.assertEquals(4, elem.getMemberArrayBooleanClass().length);
|
||||||
Assertions.assertArrayEquals(Arrays.asList(false, false, true, true).toArray(), elem.getMemberArrayBooleanClass());
|
Assertions.assertArrayEquals(Arrays.asList(false, false, true, true).toArray(), elem.getMemberArrayBooleanClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test3() {
|
||||||
|
//@formatter:off
|
||||||
|
final String dataToParse = "<elem>\n"
|
||||||
|
+ " <memberByte>12</memberByte>\n"
|
||||||
|
+ " <memberShort>1223</memberShort>\n"
|
||||||
|
+ " <memberInteger>4541542</memberInteger>\n"
|
||||||
|
+ " <memberLong>4564654654</memberLong>\n"
|
||||||
|
+ " <memberBoolean>true</memberBoolean>\n"
|
||||||
|
+ " <memberByteClass>55</memberByteClass>\n"
|
||||||
|
+ " <memberShortClass>1523</memberShortClass>\n"
|
||||||
|
+ " <memberIntegerClass>4654654</memberIntegerClass>\n"
|
||||||
|
+ " <memberLongClass>545645645454</memberLongClass>\n"
|
||||||
|
+ " <memberBooleanClass>true</memberBooleanClass>\n"
|
||||||
|
+ " <memberStringClass>sdfgsdkjfglksqjéé</memberStringClass>\n"
|
||||||
|
+ " <memberArrayByte>12</memberArrayByte>\n"
|
||||||
|
+ " <memberArrayByte>15</memberArrayByte>\n"
|
||||||
|
+ " <memberArrayByte>123</memberArrayByte>\n"
|
||||||
|
+ " <memberArrayByte>100</memberArrayByte>\n"
|
||||||
|
+ " <memberArrayByte>2</memberArrayByte>\n"
|
||||||
|
+ " <memberArrayByteClass>\t\t\r\n 12</memberArrayByteClass>\n"
|
||||||
|
+ " <memberArrayByteClass>1</memberArrayByteClass>\n"
|
||||||
|
+ " <memberArrayByteClass> 100</memberArrayByteClass>\n"
|
||||||
|
+ " <memberArrayByteClass>122</memberArrayByteClass>\n"
|
||||||
|
+ " <memberArrayShort>1245</memberArrayShort>\n"
|
||||||
|
+ " <memberArrayShort>1894</memberArrayShort>\n"
|
||||||
|
+ " <memberArrayShort> -100</memberArrayShort>\n"
|
||||||
|
+ " <memberArrayShort>-12542</memberArrayShort>\n"
|
||||||
|
+ " <memberArrayShortClass>-1245</memberArrayShortClass>\n"
|
||||||
|
+ " <memberArrayShortClass>-1894</memberArrayShortClass>\n"
|
||||||
|
+ " <memberArrayShortClass> 0</memberArrayShortClass>\n"
|
||||||
|
+ " <memberArrayShortClass>2542</memberArrayShortClass>\n"
|
||||||
|
+ " <memberArrayShortClass>15615</memberArrayShortClass>\n"
|
||||||
|
+ " <memberArrayInteger>123456</memberArrayInteger>\n"
|
||||||
|
+ " <memberArrayInteger>-654987</memberArrayInteger>\n"
|
||||||
|
+ " <memberArrayIntegerClass>1567845</memberArrayIntegerClass>\n"
|
||||||
|
+ " <memberArrayIntegerClass>45621354</memberArrayIntegerClass>\n"
|
||||||
|
+ " <memberArrayIntegerClass>-5646544</memberArrayIntegerClass>\n"
|
||||||
|
+ " <memberArrayLong>1651324654</memberArrayLong>\n"
|
||||||
|
+ " <memberArrayLong>65421351685</memberArrayLong>\n"
|
||||||
|
+ " <memberArrayLong>-5</memberArrayLong>\n"
|
||||||
|
+ " <memberArrayLongClass>6746541351</memberArrayLongClass>\n"
|
||||||
|
+ " <memberArrayLongClass>546546546</memberArrayLongClass>\n"
|
||||||
|
+ " <memberArrayLongClass>564654654</memberArrayLongClass>\n"
|
||||||
|
+ " <memberArrayLongClass>654654654654</memberArrayLongClass>\n"
|
||||||
|
+ " <memberArrayLongClass>-45546</memberArrayLongClass>\n"
|
||||||
|
+ " <memberArrayBoolean>true</memberArrayBoolean>\n"
|
||||||
|
+ " <memberArrayBoolean> true</memberArrayBoolean>\n"
|
||||||
|
+ " <memberArrayBoolean>false</memberArrayBoolean>\n"
|
||||||
|
+ " <memberArrayBooleanClass>false</memberArrayBooleanClass>\n"
|
||||||
|
+ " <memberArrayBooleanClass> false</memberArrayBooleanClass>\n"
|
||||||
|
+ " <memberArrayBooleanClass>true</memberArrayBooleanClass>\n"
|
||||||
|
+ " <memberArrayBooleanClass> true</memberArrayBooleanClass>\n"
|
||||||
|
+ "</elem>\n";
|
||||||
|
//@formatter:on
|
||||||
|
final ClassPublicMethodeNode[] root = Assertions.assertDoesNotThrow(() -> Exml.parse(dataToParse, ClassPublicMethodeNode.class, "elem"));
|
||||||
|
Assertions.assertEquals(1, root.length);
|
||||||
|
|
||||||
|
final ClassPublicMethodeNode elem = root[0];
|
||||||
|
Assertions.assertEquals((byte) 12, elem.getMemberByte());
|
||||||
|
Assertions.assertEquals((short) 1223, elem.getMemberShort());
|
||||||
|
Assertions.assertEquals(4541542, elem.getMemberInteger());
|
||||||
|
Assertions.assertEquals(4564654654L, elem.getMemberLong());
|
||||||
|
Assertions.assertEquals(true, elem.isMemberBoolean());
|
||||||
|
Assertions.assertEquals((byte) 55, elem.getMemberByteClass());
|
||||||
|
Assertions.assertEquals((short) 1523, elem.getMemberShortClass());
|
||||||
|
Assertions.assertEquals(4654654, elem.getMemberIntegerClass());
|
||||||
|
Assertions.assertEquals(545645645454L, elem.getMemberLongClass());
|
||||||
|
Assertions.assertEquals(true, elem.isMemberBooleanClass());
|
||||||
|
Assertions.assertEquals("sdfgsdkjfglksqjéé", elem.getMemberStringClass());
|
||||||
|
Assertions.assertEquals(5, elem.getMemberArrayByte().length);
|
||||||
|
Assertions.assertEquals((byte) 12, elem.getMemberArrayByte()[0]);
|
||||||
|
Assertions.assertEquals((byte) 15, elem.getMemberArrayByte()[1]);
|
||||||
|
Assertions.assertEquals((byte) 123, elem.getMemberArrayByte()[2]);
|
||||||
|
Assertions.assertEquals((byte) 100, elem.getMemberArrayByte()[3]);
|
||||||
|
Assertions.assertEquals(2, elem.getMemberArrayByte()[4]);
|
||||||
|
Assertions.assertEquals(4, elem.getMemberArrayByteClass().length);
|
||||||
|
Assertions.assertEquals((byte) 12, elem.getMemberArrayByteClass()[0]);
|
||||||
|
Assertions.assertEquals((byte) 1, elem.getMemberArrayByteClass()[1]);
|
||||||
|
Assertions.assertEquals((byte) 100, elem.getMemberArrayByteClass()[2]);
|
||||||
|
Assertions.assertEquals((byte) 122, elem.getMemberArrayByteClass()[3]);
|
||||||
|
|
||||||
|
Assertions.assertEquals(4, elem.getMemberArrayShort().length);
|
||||||
|
Assertions.assertEquals((short) 1245, elem.getMemberArrayShort()[0]);
|
||||||
|
Assertions.assertEquals((short) 1894, elem.getMemberArrayShort()[1]);
|
||||||
|
Assertions.assertEquals((short) -100, elem.getMemberArrayShort()[2]);
|
||||||
|
Assertions.assertEquals((short) -12542, elem.getMemberArrayShort()[3]);
|
||||||
|
|
||||||
|
Assertions.assertEquals(5, elem.getMemberArrayShortClass().length);
|
||||||
|
Assertions.assertEquals((short) -1245, elem.getMemberArrayShortClass()[0]);
|
||||||
|
Assertions.assertEquals((short) -1894, elem.getMemberArrayShortClass()[1]);
|
||||||
|
Assertions.assertEquals((short) 0, elem.getMemberArrayShortClass()[2]);
|
||||||
|
Assertions.assertEquals((short) 2542, elem.getMemberArrayShortClass()[3]);
|
||||||
|
Assertions.assertEquals((short) 15615, elem.getMemberArrayShortClass()[4]);
|
||||||
|
|
||||||
|
Assertions.assertEquals(2, elem.getMemberArrayInteger().length);
|
||||||
|
//Assertions.assertArrayEquals(Arrays.asList(123456, -654987).toArray(), elem.getMemberArrayInteger());
|
||||||
|
|
||||||
|
Assertions.assertEquals(3, elem.getMemberArrayIntegerClass().length);
|
||||||
|
Assertions.assertArrayEquals(Arrays.asList(1567845, 45621354, -5646544).toArray(), elem.getMemberArrayIntegerClass());
|
||||||
|
|
||||||
|
Assertions.assertEquals(3, elem.getMemberArrayLong().length);
|
||||||
|
//Assertions.assertArrayEquals(Arrays.asList(1651324654L, 65421351685L, -5L).toArray(), elem.getMemberArrayLong());
|
||||||
|
Assertions.assertEquals(5, elem.getMemberArrayLongClass().length);
|
||||||
|
Assertions.assertArrayEquals(Arrays.asList(6746541351L, 546546546L, 564654654L, 654654654654L, -45546L).toArray(), elem.getMemberArrayLongClass());
|
||||||
|
Assertions.assertEquals(3, elem.getMemberArrayBoolean().length);
|
||||||
|
//Assertions.assertArrayEquals(Arrays.asList(true, true, false).toArray(), elem.getMemberArrayBoolean());
|
||||||
|
Assertions.assertEquals(4, elem.getMemberArrayBooleanClass().length);
|
||||||
|
Assertions.assertArrayEquals(Arrays.asList(false, false, true, true).toArray(), elem.getMemberArrayBooleanClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test4() {
|
||||||
|
//@formatter:off
|
||||||
|
final String dataToParse = "<elem>\n"
|
||||||
|
+ " <memberArrayByte>\n"
|
||||||
|
+ " <value>12</value>\n"
|
||||||
|
+ " <value>15</value>\n"
|
||||||
|
+ " <value>123</value>\n"
|
||||||
|
+ " <value>100</value>\n"
|
||||||
|
+ " <value>2</value>\n"
|
||||||
|
+ " </memberArrayByte>\n"
|
||||||
|
+ " <memberListByte>\n"
|
||||||
|
+ " <elem>12</elem>\n"
|
||||||
|
+ " <elem>15</elem>\n"
|
||||||
|
+ " <elem>123</elem>\n"
|
||||||
|
+ " <elem>100</elem>\n"
|
||||||
|
+ " <elem>2</elem>\n"
|
||||||
|
+ " </memberListByte>\n"
|
||||||
|
+ "</elem>\n";
|
||||||
|
//@formatter:on
|
||||||
|
final ClassPublicMethodeStructured[] root = Assertions.assertDoesNotThrow(() -> Exml.parse(dataToParse, ClassPublicMethodeStructured.class, "elem"));
|
||||||
|
Assertions.assertEquals(1, root.length);
|
||||||
|
|
||||||
|
final ClassPublicMethodeStructured elem = root[0];
|
||||||
|
Assertions.assertEquals(5, elem.getMemberArrayByte().length);
|
||||||
|
Assertions.assertEquals((byte) 12, elem.getMemberArrayByte()[0]);
|
||||||
|
Assertions.assertEquals((byte) 15, elem.getMemberArrayByte()[1]);
|
||||||
|
Assertions.assertEquals((byte) 123, elem.getMemberArrayByte()[2]);
|
||||||
|
Assertions.assertEquals((byte) 100, elem.getMemberArrayByte()[3]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,3 +6,4 @@ import org.atriasoft.exml.annotation.XmlDefaultManaged;
|
|||||||
public class ClassInversion {
|
public class ClassInversion {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package test.atriasoft.exml.introspection;
|
package test.atriasoft.exml.introspection;
|
||||||
|
|
||||||
|
import org.atriasoft.exml.annotation.XmlDefaultAttibute;
|
||||||
import org.atriasoft.exml.annotation.XmlName;
|
import org.atriasoft.exml.annotation.XmlName;
|
||||||
|
|
||||||
|
@XmlDefaultAttibute
|
||||||
public class ClassPublicMemberOnly {
|
public class ClassPublicMemberOnly {
|
||||||
public boolean[] memberArrayBoolean;
|
public boolean[] memberArrayBoolean;
|
||||||
public Boolean[] memberArrayBooleanClass;
|
public Boolean[] memberArrayBooleanClass;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package test.atriasoft.exml.introspection;
|
package test.atriasoft.exml.introspection;
|
||||||
|
|
||||||
|
import org.atriasoft.exml.annotation.XmlDefaultAttibute;
|
||||||
|
|
||||||
|
@XmlDefaultAttibute
|
||||||
public class ClassPublicMethodOnly {
|
public class ClassPublicMethodOnly {
|
||||||
private boolean[] memberArrayBoolean;
|
private boolean[] memberArrayBoolean;
|
||||||
private Boolean[] memberArrayBooleanClass;
|
private Boolean[] memberArrayBooleanClass;
|
||||||
|
@ -0,0 +1,198 @@
|
|||||||
|
package test.atriasoft.exml.introspection;
|
||||||
|
|
||||||
|
import org.atriasoft.exml.annotation.XmlDefaultManaged;
|
||||||
|
|
||||||
|
@XmlDefaultManaged(value = false)
|
||||||
|
public class ClassPublicMethodeNode {
|
||||||
|
|
||||||
|
private boolean[] memberArrayBoolean;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean[] getMemberArrayBooleanClass() {
|
||||||
|
return this.memberArrayBooleanClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getMemberArrayByte() {
|
||||||
|
return this.memberArrayByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Byte[] getMemberArrayByteClass() {
|
||||||
|
return this.memberArrayByteClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getMemberArrayInteger() {
|
||||||
|
return this.memberArrayInteger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer[] getMemberArrayIntegerClass() {
|
||||||
|
return this.memberArrayIntegerClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long[] getMemberArrayLong() {
|
||||||
|
return this.memberArrayLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long[] getMemberArrayLongClass() {
|
||||||
|
return this.memberArrayLongClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short[] getMemberArrayShort() {
|
||||||
|
return this.memberArrayShort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short[] getMemberArrayShortClass() {
|
||||||
|
return this.memberArrayShortClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getMemberByte() {
|
||||||
|
return this.memberByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Byte getMemberByteClass() {
|
||||||
|
return this.memberByteClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMemberInteger() {
|
||||||
|
return this.memberInteger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getMemberIntegerClass() {
|
||||||
|
return this.memberIntegerClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getMemberLong() {
|
||||||
|
return this.memberLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getMemberLongClass() {
|
||||||
|
return this.memberLongClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getMemberShort() {
|
||||||
|
return this.memberShort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short getMemberShortClass() {
|
||||||
|
return this.memberShortClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMemberStringClass() {
|
||||||
|
return this.memberStringClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMemberBoolean() {
|
||||||
|
return this.memberBoolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean isMemberBooleanClass() {
|
||||||
|
return this.memberBooleanClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayBoolean(final boolean[] memberArrayBoolean) {
|
||||||
|
this.memberArrayBoolean = memberArrayBoolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayBooleanClass(final Boolean[] memberArrayBooleanClass) {
|
||||||
|
this.memberArrayBooleanClass = memberArrayBooleanClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayByte(final byte[] memberArrayByte) {
|
||||||
|
this.memberArrayByte = memberArrayByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayByteClass(final Byte[] memberArrayByteClass) {
|
||||||
|
this.memberArrayByteClass = memberArrayByteClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayInteger(final int[] memberArrayInteger) {
|
||||||
|
this.memberArrayInteger = memberArrayInteger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayIntegerClass(final Integer[] memberArrayIntegerClass) {
|
||||||
|
this.memberArrayIntegerClass = memberArrayIntegerClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayLong(final long[] memberArrayLong) {
|
||||||
|
this.memberArrayLong = memberArrayLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayLongClass(final Long[] memberArrayLongClass) {
|
||||||
|
this.memberArrayLongClass = memberArrayLongClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayShort(final short[] memberArrayShort) {
|
||||||
|
this.memberArrayShort = memberArrayShort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberArrayShortClass(final Short[] memberArrayShortClass) {
|
||||||
|
this.memberArrayShortClass = memberArrayShortClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberBoolean(final boolean memberBoolean) {
|
||||||
|
this.memberBoolean = memberBoolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberBooleanClass(final Boolean memberBooleanClass) {
|
||||||
|
this.memberBooleanClass = memberBooleanClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberByte(final byte memberByte) {
|
||||||
|
this.memberByte = memberByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberByteClass(final Byte memberByteClass) {
|
||||||
|
this.memberByteClass = memberByteClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberInteger(final int memberInteger) {
|
||||||
|
this.memberInteger = memberInteger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberIntegerClass(final Integer memberIntegerClass) {
|
||||||
|
this.memberIntegerClass = memberIntegerClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberLong(final long memberLong) {
|
||||||
|
this.memberLong = memberLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberLongClass(final Long memberLongClass) {
|
||||||
|
this.memberLongClass = memberLongClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberShort(final short memberShort) {
|
||||||
|
this.memberShort = memberShort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberShortClass(final Short memberShortClass) {
|
||||||
|
this.memberShortClass = memberShortClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberStringClass(final String memberStringClass) {
|
||||||
|
this.memberStringClass = memberStringClass;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
package test.atriasoft.exml.introspection;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.atriasoft.exml.annotation.XmlDefaultManaged;
|
||||||
|
import org.atriasoft.exml.annotation.XmlModel;
|
||||||
|
|
||||||
|
@XmlDefaultManaged(value = false)
|
||||||
|
public class ClassPublicMethodeStructured {
|
||||||
|
@XmlModel(group="memberArrayByte", element="value")
|
||||||
|
private byte[] memberArrayByte;
|
||||||
|
@XmlModel(group="listByte", element="elem")
|
||||||
|
private List<Byte> memberListByte;
|
||||||
|
|
||||||
|
public byte[] getMemberArrayByte() {
|
||||||
|
return this.memberArrayByte;
|
||||||
|
}
|
||||||
|
public void setMemberArrayByte(final byte[] memberArrayByte) {
|
||||||
|
this.memberArrayByte = memberArrayByte;
|
||||||
|
}
|
||||||
|
public List<Byte> getMemberListByte() {
|
||||||
|
return this.memberListByte;
|
||||||
|
}
|
||||||
|
public void setMemberListByte(final List<Byte> memberListByte) {
|
||||||
|
this.memberListByte = memberListByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user