From 4b91f5fe0b9a76ec51f63a7d64943a04341fa08b Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 21 May 2018 01:06:26 +1200 Subject: [PATCH] #1380 - Make javax.xml an optional dependency (as it is not part of JDK from 9 onwards) --- .../server/core/InternalConfigXmlRead.java | 15 ++++---- .../server/deploy/BeanDescriptorManager.java | 13 +++---- .../server/type/DefaultTypeManager.java | 34 +++++++++++-------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/core/InternalConfigXmlRead.java b/src/main/java/io/ebeaninternal/server/core/InternalConfigXmlRead.java index 8bb1b9be7..6bec6dc65 100644 --- a/src/main/java/io/ebeaninternal/server/core/InternalConfigXmlRead.java +++ b/src/main/java/io/ebeaninternal/server/core/InternalConfigXmlRead.java @@ -34,8 +34,9 @@ class InternalConfigXmlRead { InternalConfigXmlRead(ServerConfig serverConfig) { this.serverConfig = serverConfig; this.classLoader = serverConfig.getClassLoadConfig().getClassLoader(); - - init(); + if (serverConfig.getClassLoadConfig().isJavaxJAXBPresent()) { + init(); + } } private void init() { @@ -73,10 +74,12 @@ class InternalConfigXmlRead { * Return the named queries for Dto beans. */ Map, DtoNamedQueries> readDtoMapping() { - for (XmEbean mapping : xmlEbeanList) { - List dtoList = mapping.getDto(); - for (XmDto dto : dtoList) { - readDtoMapping(dto); + if (xmlEbeanList != null) { + for (XmEbean mapping : xmlEbeanList) { + List dtoList = mapping.getDto(); + for (XmDto dto : dtoList) { + readDtoMapping(dto); + } } } diff --git a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java index 3c95f9515..91738c3ab 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java +++ b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java @@ -394,12 +394,13 @@ public class BeanDescriptorManager implements BeanDescriptorMap { } private void readXmlMapping(List mappings) { - ClassLoader classLoader = serverConfig.getClassLoadConfig().getClassLoader(); - - for (XmEbean mapping : mappings) { - List entityDeploy = mapping.getEntity(); - for (XmEntity deploy : entityDeploy) { - readEntityMapping(classLoader, deploy); + if (mappings != null) { + ClassLoader classLoader = serverConfig.getClassLoadConfig().getClassLoader(); + for (XmEbean mapping : mappings) { + List entityDeploy = mapping.getEntity(); + for (XmEntity deploy : entityDeploy) { + readEntityMapping(classLoader, deploy); + } } } } diff --git a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java index 036c9eea8..eebf80aca 100644 --- a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java +++ b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java @@ -143,6 +143,8 @@ public final class DefaultTypeManager implements TypeManager { private final boolean java7Present; + private final boolean objectMapperPresent; + private final boolean postgres; private final boolean offlineMigrationGeneration; @@ -184,7 +186,7 @@ public final class DefaultTypeManager implements TypeManager { this.nativeMap = new ConcurrentHashMap<>(); this.logicalMap = new ConcurrentHashMap<>(); - boolean objectMapperPresent = config.getClassLoadConfig().isJacksonObjectMapperPresent(); + this.objectMapperPresent = config.getClassLoadConfig().isJacksonObjectMapperPresent(); this.objectMapper = (objectMapperPresent) ? initObjectMapper(config) : null; this.extraTypeFactory = new DefaultTypeFactory(config); @@ -405,20 +407,22 @@ public final class DefaultTypeManager implements TypeManager { } } - if (type.equals(JsonNode.class)) { - switch (dbType) { - case Types.VARCHAR: - return jsonNodeVarchar; - case Types.BLOB: - return jsonNodeBlob; - case Types.CLOB: - return jsonNodeClob; - case DbPlatformType.JSONB: - return jsonNodeJsonb; - case DbPlatformType.JSON: - return jsonNodeJson; - default: - return jsonNodeJson; + if (objectMapperPresent) { + if (type.equals(JsonNode.class)) { + switch (dbType) { + case Types.VARCHAR: + return jsonNodeVarchar; + case Types.BLOB: + return jsonNodeBlob; + case Types.CLOB: + return jsonNodeClob; + case DbPlatformType.JSONB: + return jsonNodeJsonb; + case DbPlatformType.JSON: + return jsonNodeJson; + default: + return jsonNodeJson; + } } }