Repository: cxf-xjc-utils
Updated Branches:
  refs/heads/master 718f8afa4 -> 6ae96ffed


Create an XJC plugin that can work around  https://java.net/jira/browse/JAXB-986


Project: http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/commit/6ae96ffe
Tree: http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/tree/6ae96ffe
Diff: http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/diff/6ae96ffe

Branch: refs/heads/master
Commit: 6ae96ffedb82f01c3dab3f76841a10395a5595d1
Parents: 718f8af
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Sep 12 12:40:56 2014 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Sep 12 12:40:56 2014 -0400

----------------------------------------------------------------------
 bug986/pom.xml                                  |  60 +++++++++++
 .../addon/apache_cxf/bug986/Bug986Plugin.java   |  65 ++++++++++++
 .../org/apache/cxf/xjc/bug986/Bug986Plugin.java | 103 +++++++++++++++++++
 .../META-INF/services/com.sun.tools.xjc.Plugin  |   1 +
 pom.xml                                         |  51 +++++++++
 5 files changed, 280 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/blob/6ae96ffe/bug986/pom.xml
----------------------------------------------------------------------
diff --git a/bug986/pom.xml b/bug986/pom.xml
new file mode 100644
index 0000000..8ea63df
--- /dev/null
+++ b/bug986/pom.xml
@@ -0,0 +1,60 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.cxf.xjcplugins</groupId>
+    <artifactId>cxf-xjc-bug986</artifactId>
+    <packaging>jar</packaging>
+    <name>Apache CXF XJC Plugin To Workaround JAXB Bug 986</name>
+    <url>http://cxf.apache.org</url>
+
+    <parent>
+        <groupId>org.apache.cxf.xjc-utils</groupId>
+        <artifactId>xjc-utils</artifactId>
+        <version>3.0.2-SNAPSHOT</version>
+    </parent>
+
+
+    <properties>
+        <maven.test.skip>true</maven.test.skip>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-xjc</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/blob/6ae96ffe/bug986/src/main/java/com/sun/tools/xjc/addon/apache_cxf/bug986/Bug986Plugin.java
----------------------------------------------------------------------
diff --git 
a/bug986/src/main/java/com/sun/tools/xjc/addon/apache_cxf/bug986/Bug986Plugin.java
 
b/bug986/src/main/java/com/sun/tools/xjc/addon/apache_cxf/bug986/Bug986Plugin.java
new file mode 100644
index 0000000..365080d
--- /dev/null
+++ 
b/bug986/src/main/java/com/sun/tools/xjc/addon/apache_cxf/bug986/Bug986Plugin.java
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.sun.tools.xjc.addon.apache_cxf.bug986;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+
+import com.sun.tools.xjc.BadCommandLineException;
+import com.sun.tools.xjc.Options;
+import com.sun.tools.xjc.Plugin;
+import com.sun.tools.xjc.outline.Outline;
+
+/**
+ * Thin wrapper around the Bug986Plugin. This must be in the 
com.sun.tools.xjc.addon package
+ * for it to work with Java 6. See 
https://issues.apache.org/jira/browse/CXF-1880.
+ */
+public class Bug986Plugin extends Plugin {
+    
+    org.apache.cxf.xjc.bug986.Bug986Plugin impl = new 
org.apache.cxf.xjc.bug986.Bug986Plugin(this);
+    
+    /* (non-Javadoc)
+     * @see com.sun.tools.xjc.Plugin#getOptionName()
+     */
+    @Override
+    public String getOptionName() {
+        return impl.getOptionName();
+    }
+
+    /* (non-Javadoc)
+     * @see com.sun.tools.xjc.Plugin#getUsage()
+     */
+    @Override
+    public String getUsage() {
+        return impl.getUsage();
+    }
+    public void onActivated(Options opts) throws BadCommandLineException {
+        
+    }
+    /* (non-Javadoc)
+     * @see com.sun.tools.xjc.Plugin#run(com.sun.tools.xjc.outline.Outline,
+     *   com.sun.tools.xjc.Options, org.xml.sax.ErrorHandler)
+     */
+    @Override
+    public boolean run(Outline outline, Options opt, ErrorHandler 
errorHandler) throws SAXException {
+        return impl.run(outline,  opt,  errorHandler);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/blob/6ae96ffe/bug986/src/main/java/org/apache/cxf/xjc/bug986/Bug986Plugin.java
----------------------------------------------------------------------
diff --git a/bug986/src/main/java/org/apache/cxf/xjc/bug986/Bug986Plugin.java 
b/bug986/src/main/java/org/apache/cxf/xjc/bug986/Bug986Plugin.java
new file mode 100644
index 0000000..476c39a
--- /dev/null
+++ b/bug986/src/main/java/org/apache/cxf/xjc/bug986/Bug986Plugin.java
@@ -0,0 +1,103 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.xjc.bug986;
+
+
+import java.io.StringWriter;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import javax.xml.bind.annotation.XmlSchemaType;
+
+import org.xml.sax.ErrorHandler;
+
+import com.sun.codemodel.JAnnotationUse;
+import com.sun.codemodel.JAnnotationValue;
+import com.sun.codemodel.JFieldVar;
+import com.sun.codemodel.JFormatter;
+import com.sun.codemodel.JVar;
+import com.sun.tools.xjc.Options;
+import com.sun.tools.xjc.Plugin;
+import com.sun.tools.xjc.outline.ClassOutline;
+import com.sun.tools.xjc.outline.Outline;
+
+/**
+ * Modifies the JAXB code model to handle package naming that run into:
+ * https://jaxb.dev.java.net/issues/show_bug.cgi?id=671
+ */
+public class Bug986Plugin {
+    private static final Logger LOG = 
Logger.getLogger(Bug986Plugin.class.getName()); //NOPMD
+
+    final Plugin plugin;
+
+    public Bug986Plugin(Plugin p) {
+        plugin = p;
+    }
+    
+    
+    public String getOptionName() {
+        return "Xbug986";
+    }
+
+    public String getUsage() {
+        return "  -Xbug986             : Activate plugin remove 
XmlSchemaType(anySimpleType) from fields that shouldn't have it.";
+    }
+
+    public boolean run(Outline outline, Options opt, ErrorHandler 
errorHandler) {
+        // kind of a bogus thing to have to do to workaround bug:
+        // https://java.net/jira/browse/JAXB-986
+        LOG.info("Running Bug986Plugin plugin.");
+        for (ClassOutline classOutline : outline.getClasses()) {
+            Map<String, JFieldVar> fields = classOutline.implClass.fields();
+            for (JFieldVar field : fields.values()) {
+                Collection<JAnnotationUse> annotations = field.annotations();
+                List<JAnnotationUse> toRemove = new 
ArrayList<JAnnotationUse>();
+                for (JAnnotationUse j : annotations) {
+                    if 
(XmlSchemaType.class.getName().equals(j.getAnnotationClass().fullName())) {
+                        JAnnotationValue st = 
j.getAnnotationMembers().get("name");
+                        StringWriter sw = new StringWriter();
+                        st.generate(new JFormatter(sw));
+                        if (sw.toString().equals("\"anySimpleType\"")
+                            && 
field.type().fullName().startsWith("java.util.List")
+                            && 
!field.type().fullName().contains("<java.lang.String>")) {
+                            toRemove.add(j);
+                        }
+                    }
+                }
+                for (JAnnotationUse j : toRemove) {
+                    try {
+                        Field f = JVar.class.getDeclaredField("annotations");
+                        f.setAccessible(true);
+                        List<?> anns = (List<?>)f.get(field);
+                        anns.remove(j);
+                    } catch (Throwable t) {
+                        //ignore for now
+                        t.printStackTrace();
+                    }
+                }
+            }
+        }
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/blob/6ae96ffe/bug986/src/main/resources/META-INF/services/com.sun.tools.xjc.Plugin
----------------------------------------------------------------------
diff --git 
a/bug986/src/main/resources/META-INF/services/com.sun.tools.xjc.Plugin 
b/bug986/src/main/resources/META-INF/services/com.sun.tools.xjc.Plugin
new file mode 100644
index 0000000..573eead
--- /dev/null
+++ b/bug986/src/main/resources/META-INF/services/com.sun.tools.xjc.Plugin
@@ -0,0 +1 @@
+com.sun.tools.xjc.addon.apache_cxf.bug986.Bug986Plugin
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils/blob/6ae96ffe/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5786851..0c64564 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,7 @@
         <module>wsdlextension</module>
         <module>wsdlextension-test</module>
         <module>bug671</module>
+        <module>bug986</module>
         <module>property-listener</module>
         <module>javadoc</module>
         <module>runtime</module>
@@ -442,6 +443,56 @@
                         </execution>
                     </executions>
                 </plugin>
+                <!--This plugin's configuration is used to store Eclipse m2e 
settings only. It has no influence on the Maven build itself.-->
+                <plugin>
+                       <groupId>org.eclipse.m2e</groupId>
+                       <artifactId>lifecycle-mapping</artifactId>
+                       <version>1.0.0</version>
+                       <configuration>
+                               <lifecycleMappingMetadata>
+                                       <pluginExecutions>
+                                               <pluginExecution>
+                                                       <pluginExecutionFilter>
+                                                               <groupId>
+                                                                       
org.apache.maven.plugins
+                                                               </groupId>
+                                                               <artifactId>
+                                                                       
maven-checkstyle-plugin
+                                                               </artifactId>
+                                                               <versionRange>
+                                                                       [2.9.1,)
+                                                               </versionRange>
+                                                               <goals>
+                                                                       
<goal>checkstyle</goal>
+                                                               </goals>
+                                                       </pluginExecutionFilter>
+                                                       <action>
+                                                               
<ignore></ignore>
+                                                       </action>
+                                               </pluginExecution>
+                                               <pluginExecution>
+                                                       <pluginExecutionFilter>
+                                                               <groupId>
+                                                                       
org.apache.maven.plugins
+                                                               </groupId>
+                                                               <artifactId>
+                                                                       
maven-pmd-plugin
+                                                               </artifactId>
+                                                               <versionRange>
+                                                                       [3.0.1,)
+                                                               </versionRange>
+                                                               <goals>
+                                                                       
<goal>check</goal>
+                                                               </goals>
+                                                       </pluginExecutionFilter>
+                                                       <action>
+                                                               
<ignore></ignore>
+                                                       </action>
+                                               </pluginExecution>
+                                       </pluginExecutions>
+                               </lifecycleMappingMetadata>
+                       </configuration>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>

Reply via email to