Author: ffang
Date: Wed Jun 8 10:17:40 2011
New Revision: 1133327
URL: http://svn.apache.org/viewvc?rev=1133327&view=rev
Log:
[CXF-3566]not put serialVersionUID in generated faults by default
Added:
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultSerialVersionUID.java
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/Option.java
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WsdlOption.java
cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/wsdlto.xml
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultGenerator.java
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
(original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
Wed Jun 8 10:17:40 2011
@@ -92,7 +92,7 @@ public final class ToolConstants {
public static final String CFG_NO_ADDRESS_BINDING = "noAddressBinding";
public static final String CFG_ALLOW_ELEMENT_REFS =
"allowElementReferences";
public static final String CFG_RESERVE_NAME = "reserveClass";
- public static final String CFG_USE_FQCN_FAULT_SERIAL_VERSION_UID =
"useFQCNForFaultSerialVersionUID";
+ public static final String CFG_FAULT_SERIAL_VERSION_UID =
"faultSerialVersionUID";
public static final String CFG_MARK_GENERATED = "mark-generated";
Modified:
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/Option.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/Option.java?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/Option.java
(original)
+++
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/Option.java
Wed Jun 8 10:17:40 2011
@@ -23,6 +23,8 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import
org.apache.cxf.tools.wsdlto.frontend.jaxws.generators.FaultSerialVersionUID;
+
public class Option {
static final String DEFAULT_BINDING_FILE_PATH = "src" + File.separator +
"main"
@@ -142,9 +144,9 @@ public class Option {
Boolean noTypes;
/**
- * Enables generation of fault Exception's SUID based on hash of classname.
+ * specify how to generate fault Exception's SUID, default is NONE
*/
- Boolean useFQCNForFaultSerialVersionUID;
+ FaultSerialVersionUID faultSerialVersionUID;
/**
* Uses @Generated annotation in all generated java classes if the flag is
set to true.
@@ -329,12 +331,12 @@ public class Option {
this.noTypes = noTypes;
}
- public boolean isUseFQCNForFaultSerialVersionUID() {
- return useFQCNForFaultSerialVersionUID == null ? false :
useFQCNForFaultSerialVersionUID;
+ public FaultSerialVersionUID getFaultSerialVersionUID() {
+ return faultSerialVersionUID == null ? FaultSerialVersionUID.NONE :
faultSerialVersionUID;
}
- public void setUseFQCNForFaultSerialVersionUID(boolean
useFQCNForFaultSerialVersionUID) {
- this.useFQCNForFaultSerialVersionUID = useFQCNForFaultSerialVersionUID;
+ public void setFaultSerialVersionUID(FaultSerialVersionUID
faultSerialVersionUID) {
+ this.faultSerialVersionUID = faultSerialVersionUID;
}
public Boolean isMarkGenerated() {
@@ -413,7 +415,7 @@ public class Option {
destination.setServiceName(getServiceName());
destination.setValidateWsdl(isValidateWsdl());
destination.setNoTypes(isNoTypes());
-
destination.setUseFQCNForFaultSerialVersionUID(isUseFQCNForFaultSerialVersionUID());
+ destination.setFaultSerialVersionUID(getFaultSerialVersionUID());
destination.setMarkGenerated(isMarkGenerated());
destination.setAllowElementRefs(isAllowElementRefs());
if (isSetWsdlLocation()) {
@@ -434,8 +436,8 @@ public class Option {
extendedSoapHeaders = setIfNull(extendedSoapHeaders,
defaultOptions.extendedSoapHeaders);
noTypes = setIfNull(noTypes, defaultOptions.noTypes);
validateWsdl = setIfNull(validateWsdl, defaultOptions.validateWsdl);
- useFQCNForFaultSerialVersionUID =
setIfNull(useFQCNForFaultSerialVersionUID,
- defaultOptions.useFQCNForFaultSerialVersionUID);
+ faultSerialVersionUID = setIfNull(faultSerialVersionUID,
+ defaultOptions.faultSerialVersionUID);
markGenerated = setIfNull(markGenerated, defaultOptions.markGenerated);
autoNameResolution = setIfNull(autoNameResolution,
defaultOptions.autoNameResolution);
noAddressBinding = setIfNull(noAddressBinding,
defaultOptions.noAddressBinding);
Modified:
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WsdlOption.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WsdlOption.java?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WsdlOption.java
(original)
+++
cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WsdlOption.java
Wed Jun 8 10:17:40 2011
@@ -151,11 +151,11 @@ public class WsdlOption extends Option {
addIfTrue(list, isNoTypes(), "-noTypes");
addIfTrue(list, isAllowElementRefs(), "-allowElementRefs");
addIfTrue(list, isValidateWsdl(), "-validate");
- addIfTrue(list, isUseFQCNForFaultSerialVersionUID(),
"-useFQCNForFaultSerialVersionUID");
addIfTrue(list, isMarkGenerated() != null && isMarkGenerated(),
"-mark-generated");
addIfNotNull(list, getDefaultExcludesNamespace(), "-dex");
addIfNotNull(list, getDefaultNamespacePackageMapping(), "-dns");
addIfNotNull(list, getServiceName(), "-sn");
+ addIfNotNull(list, getFaultSerialVersionUID(),
"-faultSerialVersionUID");
addIfTrue(list, isAutoNameResolution(), "-autoNameResolution");
addIfTrue(list, isNoAddressBinding(), "-noAddressBinding");
addList(list, "-xjc", false, getXJCargs());
Modified:
cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/wsdlto.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/wsdlto.xml?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/wsdlto.xml
(original)
+++
cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/wsdlto.xml
Wed Jun 8 10:17:40 2011
@@ -196,12 +196,11 @@ under the License.
</associatedArgument>
</option>
- <option id="useFQCNForFaultSerialVersionUID" maxOccurs="1">
+ <option id="faultSerialVersionUID" maxOccurs="1">
<annotation>
- Enable generation of Serial Version UID in fault
Exception(s) based on hashcode
- of the fully qualified class name of the Exception.
+ specify how to generate fault Exception's SUID, can use
NONE|TIMESTAMP|FQCN, the default is NONE
</annotation>
- <switch>useFQCNForFaultSerialVersionUID</switch>
+ <switch>faultSerialVersionUID</switch>
</option>
</optionGroup>
Modified:
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultGenerator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultGenerator.java?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultGenerator.java
(original)
+++
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultGenerator.java
Wed Jun 8 10:17:40 2011
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.cxf.tools.wsdlto.frontend.jaxws.generators;
import java.text.SimpleDateFormat;
@@ -81,10 +80,16 @@ public class FaultGenerator extends Abst
exceptionClasses.get(expClassName);
clearAttributes();
- if
(penv.containsKey(ToolConstants.CFG_USE_FQCN_FAULT_SERIAL_VERSION_UID)) {
- setAttributes("suid",
generateHashSUID(expClz.getFullClassName()));
- } else {
- setAttributes("suid", generateTimestampSUID());
+
+ if
(penv.containsKey(ToolConstants.CFG_FAULT_SERIAL_VERSION_UID)) {
+ FaultSerialVersionUID faultSerialVersionUID
+ =
(FaultSerialVersionUID)penv.get(ToolConstants.CFG_FAULT_SERIAL_VERSION_UID);
+ setAttributes("faultSerialVersionUID",
faultSerialVersionUID);
+ if
(faultSerialVersionUID.equals(FaultSerialVersionUID.FQCN)) {
+ setAttributes("suid",
generateHashSUID(expClz.getFullClassName()));
+ } else if
(faultSerialVersionUID.equals(FaultSerialVersionUID.TIMESTAMP)) {
+ setAttributes("suid", generateTimestampSUID());
+ }
}
setAttributes("expClass", expClz);
String exceptionSuperclass = "Exception";
Added:
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultSerialVersionUID.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultSerialVersionUID.java?rev=1133327&view=auto
==============================================================================
---
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultSerialVersionUID.java
(added)
+++
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/FaultSerialVersionUID.java
Wed Jun 8 10:17:40 2011
@@ -0,0 +1,26 @@
+/**
+ * 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.tools.wsdlto.frontend.jaxws.generators;
+
+public enum FaultSerialVersionUID {
+ NONE,
+ TIMESTAMP,
+ FQCN
+}
Modified:
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
(original)
+++
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
Wed Jun 8 10:17:40 2011
@@ -311,12 +311,11 @@ Examples:
<switch>noAddressBinding</switch>
</option>
- <option id="useFQCNForFaultSerialVersionUID" maxOccurs="1">
+ <option id="faultSerialVersionUID" maxOccurs="1">
<annotation>
- Enable generation of Serial Version UID in fault
Exception(s) based on hashcode
- of the fully qualified class name of the Exception.
+ specify how to generate fault Exception's SUID, can use
NONE|TIMESTAMP|FQCN, the default is NONE
</annotation>
- <switch>useFQCNForFaultSerialVersionUID</switch>
+ <switch>faultSerialVersionUID</switch>
</option>
<option id="mark-generated" maxOccurs="1">
@@ -373,4 +372,4 @@ Examples:
wsdl-url</annotation>
</argument>
</usage>
-</toolspec>
\ No newline at end of file
+</toolspec>
Modified:
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
(original)
+++
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
Wed Jun 8 10:17:40 2011
@@ -43,7 +43,9 @@ public class $expClass.Name extends $exc
#if ($mark-generated == "true")
@Generated(value = "org.apache.cxf.tools.wsdlto.WSDLToJava", date =
"$currentdate")
#end
+#if ($faultSerialVersionUID == "TIMESTAMP" || $faultSerialVersionUID == "FQCN")
public static final long serialVersionUID = ${suid}L;
+#end
#foreach ($field in $expClass.Fields)
#if ($mark-generated == "true")
Modified:
cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java?rev=1133327&r1=1133326&r2=1133327&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
(original)
+++
cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
Wed Jun 8 10:17:40 2011
@@ -21,6 +21,7 @@ package org.apache.cxf.tools.wsdlto.jaxw
import java.io.File;
import java.io.ObjectStreamClass;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
@@ -46,6 +47,7 @@ import org.apache.cxf.tools.common.ToolC
import org.apache.cxf.tools.common.ToolException;
import org.apache.cxf.tools.util.AnnotationUtil;
import org.apache.cxf.tools.wsdlto.AbstractCodeGenTest;
+import
org.apache.cxf.tools.wsdlto.frontend.jaxws.generators.FaultSerialVersionUID;
import org.junit.Test;
@@ -1338,7 +1340,7 @@ public class CodeGenTest extends Abstrac
@Test
public void testCXFNotType() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
- env.put(ToolConstants.CFG_USE_FQCN_FAULT_SERIAL_VERSION_UID,
Boolean.TRUE);
+ env.put(ToolConstants.CFG_FAULT_SERIAL_VERSION_UID,
FaultSerialVersionUID.FQCN);
processor.setContext(env);
processor.execute();
@@ -1351,9 +1353,9 @@ public class CodeGenTest extends Abstrac
}
@Test
- public void testCXF2808() throws Exception {
+ public void testFaultSerialVersionUIDNONEFQCN() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
- env.put(ToolConstants.CFG_USE_FQCN_FAULT_SERIAL_VERSION_UID,
Boolean.TRUE);
+ env.put(ToolConstants.CFG_FAULT_SERIAL_VERSION_UID,
FaultSerialVersionUID.FQCN);
processor.setContext(env);
processor.execute();
@@ -1363,6 +1365,8 @@ public class CodeGenTest extends Abstrac
assertTrue(faultFile.exists());
Class<?> fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.NoSuchCodeLitFault");
+ Field serialVersionUID = fault.getDeclaredField("serialVersionUID");
+ assertNotNull(serialVersionUID);
assertEquals(fault.getName().hashCode(),
ObjectStreamClass.lookup(fault).getSerialVersionUID());
fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.BadRecordLitFault");
assertEquals(fault.getName().hashCode(),
ObjectStreamClass.lookup(fault).getSerialVersionUID());
@@ -1370,6 +1374,84 @@ public class CodeGenTest extends Abstrac
@Test
+ public void testNoFaultSerialVersionUID() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
+ processor.setContext(env);
+ processor.execute();
+
+ File faultFile = new File(output,
"org/apache/cxf/w2j/hello_world_soap_http/NoSuchCodeLitFault.java");
+ assertTrue(faultFile.exists());
+ faultFile = new File(output,
"org/apache/cxf/w2j/hello_world_soap_http/BadRecordLitFault.java");
+ assertTrue(faultFile.exists());
+
+ Class<?> fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.NoSuchCodeLitFault");
+ try {
+ fault.getDeclaredField("serialVersionUID");
+ fail("shouldn't have serialVersionUID field");
+ } catch (NoSuchFieldException e) {
+ //
+ }
+ fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.BadRecordLitFault");
+ try {
+ fault.getDeclaredField("serialVersionUID");
+ fail("shouldn't have serialVersionUID field");
+ } catch (NoSuchFieldException e) {
+ //
+ }
+
+ }
+
+ @Test
+ public void testFaultSerialVersionUIDNONE() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
+ env.put(ToolConstants.CFG_FAULT_SERIAL_VERSION_UID,
FaultSerialVersionUID.NONE);
+ processor.setContext(env);
+ processor.execute();
+
+ File faultFile = new File(output,
"org/apache/cxf/w2j/hello_world_soap_http/NoSuchCodeLitFault.java");
+ assertTrue(faultFile.exists());
+ faultFile = new File(output,
"org/apache/cxf/w2j/hello_world_soap_http/BadRecordLitFault.java");
+ assertTrue(faultFile.exists());
+
+ Class<?> fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.NoSuchCodeLitFault");
+ try {
+ fault.getDeclaredField("serialVersionUID");
+ fail("shouldn't have serialVersionUID field");
+ } catch (NoSuchFieldException e) {
+ //
+ }
+ fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.BadRecordLitFault");
+ try {
+ fault.getDeclaredField("serialVersionUID");
+ fail("shouldn't have serialVersionUID field");
+ } catch (NoSuchFieldException e) {
+ //
+ }
+
+ }
+
+ @Test
+ public void testFaultSerialVersionUIDNONETIMESTAMP() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
+ env.put(ToolConstants.CFG_FAULT_SERIAL_VERSION_UID,
FaultSerialVersionUID.TIMESTAMP);
+ processor.setContext(env);
+ processor.execute();
+
+ File faultFile = new File(output,
"org/apache/cxf/w2j/hello_world_soap_http/NoSuchCodeLitFault.java");
+ assertTrue(faultFile.exists());
+ faultFile = new File(output,
"org/apache/cxf/w2j/hello_world_soap_http/BadRecordLitFault.java");
+ assertTrue(faultFile.exists());
+
+ Class<?> fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.NoSuchCodeLitFault");
+ Field serialVersionUID = fault.getDeclaredField("serialVersionUID");
+ assertNotNull(serialVersionUID);
+
+ fault =
classLoader.loadClass("org.apache.cxf.w2j.hello_world_soap_http.BadRecordLitFault");
+ serialVersionUID = fault.getDeclaredField("serialVersionUID");
+ assertNotNull(serialVersionUID);
+ }
+
+ @Test
public void testExtensionWrapper() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/cxf2193/hello_world_extension_wrapped.wsdl"));