Skip to content

Commit a212bda

Browse files
[#338] enable reresolution work around based on jaxb-ri used
1 parent b6f625a commit a212bda

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

maven-plugin/plugin-core/src/main/java/org/jvnet/jaxb/maven/AbstractXJC2Mojo.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,11 @@ public void setCatalogResolver(String catalogResolver) {
443443

444444
/**
445445
* If 'true', the fix for issue #306 will no more be applied.
446+
*
447+
* @deprecated (forRemoval = true, since = "2.0.10")
446448
*/
447-
@Parameter(defaultValue = "false", property = "maven.xjc2.disableSystemIdResolution")
449+
@Parameter(defaultValue = "true", property = "maven.xjc2.disableSystemIdResolution")
450+
@Deprecated
448451
private boolean disableSystemIdResolution;
449452

450453
public boolean getDisableSystemIdResolution() {

maven-plugin/plugin-core/src/main/java/org/jvnet/jaxb/maven/RawXJC2Mojo.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,7 @@ private void setupEntityResolver() {
903903
}
904904

905905
protected EntityResolver createEntityResolver(CatalogResolver catalogResolver) {
906-
final EntityResolver entityResolver = new ReResolvingEntityResolverWrapper(catalogResolver, getLog(), getDisableSystemIdResolution());
906+
final EntityResolver entityResolver = new ReResolvingEntityResolverWrapper(catalogResolver, getLog(), getDisableSystemIdResolution(), getVersion());
907907
return entityResolver;
908908
}
909909

maven-plugin/plugin-core/src/main/java/org/jvnet/jaxb/maven/resolver/tools/ReResolvingEntityResolverWrapper.java

+27-6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Optional;
66

77
import org.apache.maven.plugin.logging.Log;
8+
import org.jvnet.jaxb.maven.XJCVersion;
89
import org.jvnet.jaxb.maven.plugin.logging.NullLog;
910
import org.jvnet.jaxb.maven.util.StringUtils;
1011
import org.xml.sax.EntityResolver;
@@ -17,21 +18,41 @@ public class ReResolvingEntityResolverWrapper implements EntityResolver {
1718
private final Log log;
1819
private final boolean disableSystemIdResolution;
1920

20-
public ReResolvingEntityResolverWrapper(EntityResolver entityResolver, Log log, boolean disableSystemIdResolution) {
21+
public ReResolvingEntityResolverWrapper(EntityResolver entityResolver, Log log, boolean disableSystemIdResolution, XJCVersion version) {
2122
if (entityResolver == null) {
2223
throw new IllegalArgumentException("Provided entity resolver must not be null.");
2324
}
2425
this.entityResolver = entityResolver;
2526
this.log = Optional.ofNullable(log).orElse(NullLog.INSTANCE);
26-
this.disableSystemIdResolution = disableSystemIdResolution;
27-
if (disableSystemIdResolution) {
28-
log.warn("ReResolvingEntityResolverWrapper : systemIdResolution fix is disable, you may have problems with schema resolution.");
27+
this.disableSystemIdResolution = computeDisableSystemIdResolution(disableSystemIdResolution, version);
28+
}
29+
30+
private boolean computeDisableSystemIdResolution(boolean disableSystemIdResolution, XJCVersion version) {
31+
boolean finalDisableSystemIdResolution = disableSystemIdResolution;
32+
boolean versionCheck = false;
33+
if (version.isKnown()) {
34+
versionCheck = true;
35+
if (version.gte(2, 3, 9) && !disableSystemIdResolution) {
36+
log.info("ReResolvingEntityResolverWrapper : systemIdResolution fix has been auto-disabled (current running XJC is " + version.getRaw() + ").");
37+
finalDisableSystemIdResolution = true;
38+
} else if (version.gte(2, 3, 4) && version.lt(2, 3, 9) && disableSystemIdResolution) {
39+
log.info("ReResolvingEntityResolverWrapper : systemIdResolution fix has been auto-enabled (current running XJC is " + version.getRaw() + ").");
40+
finalDisableSystemIdResolution = false;
41+
}
42+
}
43+
if (finalDisableSystemIdResolution) {
44+
if (!versionCheck) {
45+
log.warn("ReResolvingEntityResolverWrapper : systemIdResolution fix is disable, you may have problems with schema resolution.");
46+
} else {
47+
log.debug("ReResolvingEntityResolverWrapper : systemIdResolution fix is disabled");
48+
}
2949
} else {
3050
log.debug("ReResolvingEntityResolverWrapper : systemIdResolution fix is enabled");
3151
}
32-
}
52+
return finalDisableSystemIdResolution;
53+
}
3354

34-
@Override
55+
@Override
3556
public InputSource resolveEntity(String publicId, String systemId)
3657
throws SAXException, IOException {
3758
log.debug(MessageFormat.format("ReResolvingEntityResolverWrapper : Resolving publicId [{0}], systemId [{1}].", publicId, systemId));

0 commit comments

Comments
 (0)