[MWAR-405] Workaround XStream incompatibility with Java9
Contributed by Enrico Olivelli, reviewed and applied by Robert Scholte
this closes #112
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1792363 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 30e1f35..1778751 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,6 +72,9 @@
<contributor>
<name>Hayarobi Park</name>
</contributor>
+ <contributor>
+ <name>Enrico Olivelli</name>
+ </contributor>
</contributors>
<dependencies>
diff --git a/src/main/java/org/apache/maven/plugins/war/util/WebappStructureSerializer.java b/src/main/java/org/apache/maven/plugins/war/util/WebappStructureSerializer.java
index 2da2519..28969a0 100644
--- a/src/main/java/org/apache/maven/plugins/war/util/WebappStructureSerializer.java
+++ b/src/main/java/org/apache/maven/plugins/war/util/WebappStructureSerializer.java
@@ -20,7 +20,16 @@
*/
import com.thoughtworks.xstream.XStream;
+import static com.thoughtworks.xstream.XStream.PRIORITY_NORMAL;
+import static com.thoughtworks.xstream.XStream.PRIORITY_VERY_LOW;
+import com.thoughtworks.xstream.converters.basic.IntConverter;
+import com.thoughtworks.xstream.converters.basic.StringConverter;
+import com.thoughtworks.xstream.converters.collections.CollectionConverter;
+import com.thoughtworks.xstream.converters.collections.MapConverter;
+import com.thoughtworks.xstream.converters.reflection.ReflectionConverter;
+import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.thoughtworks.xstream.mapper.Mapper;
import org.apache.maven.model.Dependency;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
@@ -44,8 +53,21 @@
static
{
- XSTREAM = new XStream( new DomDriver() );
-
+ XSTREAM = new XStream( new DomDriver() )
+ {
+ @Override
+ protected void setupConverters()
+ {
+ Mapper mapper = getMapper();
+ ReflectionProvider reflectionProvider = getReflectionProvider();
+ registerConverter(
+ new ReflectionConverter( mapper, reflectionProvider ), PRIORITY_VERY_LOW );
+ registerConverter( new StringConverter(), PRIORITY_NORMAL );
+ registerConverter( new IntConverter(), PRIORITY_NORMAL );
+ registerConverter( new CollectionConverter( mapper ), PRIORITY_NORMAL );
+ registerConverter( new MapConverter( mapper ), PRIORITY_NORMAL );
+ }
+ };
// Register aliases
XSTREAM.alias( "webapp-structure", WebappStructure.class );
XSTREAM.alias( "path-set", PathSet.class );