Skip to content

Commit

Permalink
bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
valentin-gauthier-geosiris committed Aug 23, 2023
1 parent 1bfdd95 commit 8e6e8d0
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 35 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<groupId>com.geosiris</groupId>
<artifactId>energyml-utils</artifactId>
<name>${project.groupId}:${project.artifactId}</name>
<version>1.0.6</version>
<version>1.0.7</version>
<organization>
<name>Geosiris</name>
<url>http://www.geosiris.com</url>
Expand Down
53 changes: 19 additions & 34 deletions src/main/java/com/geosiris/energyml/pkg/EPCPackage.java
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public JAXBElement<?> parseXmlContent(String xmlContent, boolean alternateDevVer
private JAXBElement<?> parseXmlFromContext(String xmlContent,
boolean tryWithoutNamespaceIfFail,
boolean testRemarshalling, // test to marshall/unmarshall after first unmarshall
// to verify if everything has been read correctly
// to verify if everything has been read correctly
Schema schema) {
ValidationEventCollector vec = null;

Expand Down Expand Up @@ -289,44 +289,29 @@ public static JAXBElement<?> wrap(Object energymlObject, Object factory) throws
final String typename = class22.getSimpleName();

String[] listOfPotentialRemovablePrefix = { "Obj" };

Class<?> classFactory22 = factory.getClass();

try {
Method create = classFactory22.getMethod("create" + typename, class22);
return (JAXBElement<?>) create.invoke(factory, energymlObject);
} catch (Exception e) {
for (String prefixToRemove : listOfPotentialRemovablePrefix) {
if (typename.startsWith(prefixToRemove)) {
try {
Method create = classFactory22.getMethod("create" + typename.substring(prefixToRemove.length()),
class22);
return (JAXBElement<?>) create.invoke(factory, energymlObject);
} catch (Exception e2) {
logger.error(e.getMessage(), e);
logger.error(e2.getMessage(), e2);
}
}
}
ArrayList<String> methodPotentialName = new ArrayList<>();
methodPotentialName.add("create" + typename);
methodPotentialName.add(typename.substring(0, 1).toLowerCase() + typename.substring(1));
for (String prefixToRemove : listOfPotentialRemovablePrefix) {
String noPrefix = typename.substring(prefixToRemove.length());
methodPotentialName.add("create" + noPrefix);
methodPotentialName.add(noPrefix.substring(0, 1).toLowerCase() + noPrefix.substring(1));
}
// Without "create" prefix
try {
Method create = classFactory22.getMethod(typename, class22);
return (JAXBElement<?>) create.invoke(factory, energymlObject);
} catch (Exception e) {
for (String prefixToRemove : listOfPotentialRemovablePrefix) {
if (typename.startsWith(prefixToRemove)) {
try {
Method create = classFactory22.getMethod(typename.substring(prefixToRemove.length()),
class22);
return (JAXBElement<?>) create.invoke(factory, energymlObject);
} catch (Exception e2) {
logger.error(e.getMessage(), e);
logger.error(e2.getMessage(), e2);
}
}

for(String m_name : methodPotentialName){
try {
Method m = classFactory22.getMethod(m_name, class22);
return (JAXBElement<?>) m.invoke(factory, energymlObject);
}catch (NoSuchMethodException e){
// pass
} catch (Exception e2) {
logger.error(e2.getMessage(), e2);
}
}
logger.error("No method found to create a type " + typename);
logger.error("Tested names " + methodPotentialName.stream().reduce((s1,s2) -> s1 + ", " + s2));
return null;
}

Expand Down

0 comments on commit 8e6e8d0

Please sign in to comment.