You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2007/05/09 11:53:38 UTC
svn commit: r536470 - in /incubator/cxf/trunk/tools:
common/src/main/java/org/apache/cxf/tools/common/
javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/
javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/
j...
Author: mmao
Date: Wed May 9 02:53:35 2007
New Revision: 536470
URL: http://svn.apache.org/viewvc?view=rev&rev=536470
Log:
CXF-437 Java->WSDL doesn't generate Fault beans
Added:
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/BeanGenerator.java
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGenerator.java
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBean.java
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/GreeterFault.java
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/PingMeFault.java
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGeneratorTest.java
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/DBServiceFaultBean.java.source
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/FaultDetail.java.source
incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBeanTest.java
Modified:
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm
Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java?view=diff&rev=536470&r1=536469&r2=536470
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java Wed May 9 02:53:35 2007
@@ -165,13 +165,19 @@
String rtn = result.toString();
- //remove Apache header
- int headerIndexStart = rtn.indexOf("<!--");
- int headerIndexEnd = rtn.indexOf("-->");
+ rtn = ignoreTokens(rtn, "<!--", "-->");
+ rtn = ignoreTokens(rtn, "/*", "*/");
+ return rtn;
+ }
+
+ private String ignoreTokens(final String contents, final String startToken, final String endToken) {
+ String rtn = contents;
+ int headerIndexStart = rtn.indexOf(startToken);
+ int headerIndexEnd = rtn.indexOf(endToken);
if (headerIndexStart != -1 && headerIndexEnd != -1 && headerIndexStart < headerIndexEnd) {
- rtn = rtn.substring(0, headerIndexStart - 1) + rtn.substring(headerIndexEnd + 4);
+ rtn = rtn.substring(0, headerIndexStart - 1)
+ + rtn.substring(headerIndexEnd + endToken.length() + 1);
}
-
return rtn;
}
}
Added: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/BeanGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/BeanGenerator.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/BeanGenerator.java (added)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/BeanGenerator.java Wed May 9 02:53:35 2007
@@ -0,0 +1,102 @@
+/**
+ * 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.java2wsdl.generator.wsdl11;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.tools.common.VelocityGenerator;
+import org.apache.cxf.tools.common.model.JavaClass;
+import org.apache.cxf.tools.java2wsdl.generator.AbstractGenerator;
+import org.apache.cxf.tools.util.Compiler;
+import org.apache.cxf.tools.util.FileWriterUtil;
+
+public class BeanGenerator extends AbstractGenerator<File> {
+ private static final String TEMPLATE = "org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm";
+ private File compileToDir;
+
+ public void setCompileToDir(File f) {
+ compileToDir = f;
+ }
+
+ protected Collection<JavaClass> generateBeanClasses(final ServiceInfo service) {
+ return null;
+ }
+
+ public File generate(final File sourcedir) {
+ File dir = getOutputBase();
+ if (dir == null) {
+ dir = sourcedir;
+ }
+ if (dir == null) {
+ dir = new File("./");
+ }
+ Collection<JavaClass> wrapperClasses = generateBeanClasses(getServiceModel());
+
+ if (!wrapperClasses.isEmpty()) {
+ generateAndCompile(wrapperClasses, dir);
+ }
+
+ return dir;
+ }
+
+ public void generateAndCompile(Collection<JavaClass> wrapperClasses, File dir) {
+ VelocityGenerator generator = new VelocityGenerator();
+ generator.setBaseDir(dir.toString());
+
+ List<File> generatedFiles = new ArrayList<File>();
+ try {
+ for (JavaClass wrapperClass : wrapperClasses) {
+ generator.setCommonAttributes();
+ generator.setAttributes("bean", wrapperClass);
+
+ File file = generator.parseOutputName(wrapperClass.getPackageName(),
+ wrapperClass.getName());
+ generatedFiles.add(file);
+
+ generator.doWrite(TEMPLATE, FileWriterUtil.getWriter(file));
+
+ generator.clearAttributes();
+ }
+
+
+ if (compileToDir != null) {
+ //compile the classes
+ Compiler compiler = new Compiler();
+
+ List<String> files = new ArrayList<String>(generatedFiles.size());
+ for (File file : generatedFiles) {
+ files.add(file.getAbsolutePath());
+ }
+ if (!compiler.compileFiles(files.toArray(new String[files.size()]),
+ compileToDir)) {
+ //TODO - compile issue
+ }
+
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
Added: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGenerator.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGenerator.java (added)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGenerator.java Wed May 9 02:53:35 2007
@@ -0,0 +1,89 @@
+/**
+ * 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.java2wsdl.generator.wsdl11;
+
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import javax.wsdl.Fault;
+
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.tools.common.model.JavaClass;
+import org.apache.cxf.tools.java2wsdl.processor.internal.jaxws.FaultBean;
+
+
+public final class FaultBeanGenerator extends BeanGenerator {
+
+ private String getSEIPackage(final Method method) {
+ return method.getDeclaringClass().getPackage().getName();
+ }
+
+ protected Collection<JavaClass> generateBeanClasses(final ServiceInfo serviceInfo) {
+ Set<Class> exceptionClasses = new HashSet<Class>();
+ String seiPackageName = null;
+ for (OperationInfo op : serviceInfo.getInterface().getOperations()) {
+ Method method = (Method) op.getProperty("operation.method");
+ exceptionClasses.addAll(getExceptionClasses(method));
+ seiPackageName = getSEIPackage(method);
+ }
+
+ Collection<JavaClass> faultBeanClasses = new HashSet<JavaClass>();
+ String defaultPackage = seiPackageName + ".jaxws";
+ FaultBean bean = new FaultBean();
+ for (Class clz : exceptionClasses) {
+ faultBeanClasses.add(bean.transform(clz, defaultPackage));
+ }
+
+ return faultBeanClasses;
+ }
+
+ protected Set<Class> getExceptionClasses(final Method method) {
+ Set<Class> exps = new HashSet<Class>();
+ final Class[] exceptionClasses = method.getExceptionTypes();
+ for (int i = 0; i < exceptionClasses.length; i++) {
+ boolean exclude = false;
+ Class exClazz = exceptionClasses[i];
+
+ if (exClazz.equals(Exception.class)
+ || Fault.class.isAssignableFrom(exClazz)
+ || exClazz.equals(RuntimeException.class)
+ || exClazz.equals(Throwable.class)
+ || exClazz.equals(RemoteException.class)) {
+ continue;
+ }
+
+ Method[] expMethods = exClazz.getMethods();
+ for (Method expMethod : expMethods) {
+ if ("getFaultInfo".equals(expMethod.getName())) {
+ exclude = true;
+ break;
+ }
+ }
+ if (exclude) {
+ continue;
+ }
+ exps.add(exClazz);
+ }
+ return exps;
+ }
+}
Modified: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java?view=diff&rev=536470&r1=536469&r2=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java (original)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java Wed May 9 02:53:35 2007
@@ -19,41 +19,19 @@
package org.apache.cxf.tools.java2wsdl.generator.wsdl11;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
+
+import java.util.Collection;
+import java.util.HashSet;
import org.apache.cxf.service.model.OperationInfo;
import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.cxf.tools.common.VelocityGenerator;
import org.apache.cxf.tools.common.model.JavaClass;
-import org.apache.cxf.tools.java2wsdl.generator.AbstractGenerator;
import org.apache.cxf.tools.java2wsdl.processor.internal.jaxws.RequestWrapper;
import org.apache.cxf.tools.java2wsdl.processor.internal.jaxws.ResponseWrapper;
-import org.apache.cxf.tools.util.Compiler;
-import org.apache.cxf.tools.util.FileWriterUtil;
-
-public final class WrapperBeanGenerator extends AbstractGenerator<File> {
- private File compileToDir;
-
- public File generate(final File sourcedir) {
- File dir = getOutputBase();
- if (dir == null) {
- dir = sourcedir;
- }
- if (dir == null) {
- dir = new File("./");
- }
- generateWrapperBeanClasses(getServiceModel(), dir);
- return dir;
- }
-
- public void setCompileToDir(File f) {
- compileToDir = f;
- }
- private void generateWrapperBeanClasses(final ServiceInfo serviceInfo, final File dir) {
- List<JavaClass> wrapperClasses = new ArrayList<JavaClass>();
+public final class WrapperBeanGenerator extends BeanGenerator {
+ protected Collection<JavaClass> generateBeanClasses(final ServiceInfo serviceInfo) {
+ Collection<JavaClass> wrapperClasses = new HashSet<JavaClass>();
for (OperationInfo op : serviceInfo.getInterface().getOperations()) {
if (op.getUnwrappedOperation() != null) {
@@ -77,50 +55,6 @@
}
}
}
-
- if (wrapperClasses.isEmpty()) {
- return;
- }
-
- String templateName = "org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm";
- VelocityGenerator generator = new VelocityGenerator();
- generator.setBaseDir(dir.toString());
-
- List<File> generatedFiles = new ArrayList<File>();
- try {
- for (JavaClass wrapperClass : wrapperClasses) {
- generator.setCommonAttributes();
- generator.setAttributes("bean", wrapperClass);
-
- File file = generator.parseOutputName(wrapperClass.getPackageName(),
- wrapperClass.getName());
- generatedFiles.add(file);
-
- generator.doWrite(templateName, FileWriterUtil.getWriter(file));
-
- generator.clearAttributes();
- }
-
-
- if (compileToDir != null) {
- //compile the classes
- Compiler compiler = new Compiler();
-
- List<String> files = new ArrayList<String>(generatedFiles.size());
- for (File file : generatedFiles) {
- files.add(file.getAbsolutePath());
- }
- if (!compiler.compileFiles(files.toArray(new String[files.size()]),
- compileToDir)) {
- //TODO - compile issue
- }
-
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
+ return wrapperClasses;
}
-
}
Modified: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm?view=diff&rev=536470&r1=536469&r2=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm (original)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/wrapperbean.vm Wed May 9 02:53:35 2007
@@ -33,8 +33,9 @@
#end
public class $bean.Name {
+
#foreach ($field in $bean.Fields)
- $field.Annotation
+#if($field.Annotation.length() > 0)$field.Annotation#end
private $field.Type $field.Name;
#end
Added: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBean.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBean.java (added)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBean.java Wed May 9 02:53:35 2007
@@ -0,0 +1,97 @@
+/**
+ * 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.java2wsdl.processor.internal.jaxws;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebFault;
+
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.tools.common.model.JavaClass;
+import org.apache.cxf.tools.common.model.JavaField;
+import org.apache.cxf.tools.java2wsdl.generator.wsdl11.annotator.WrapperBeanAnnotator;
+import org.apache.cxf.tools.java2wsdl.generator.wsdl11.model.WrapperBeanClass;
+import org.apache.cxf.tools.util.URIParserUtil;
+
+public final class FaultBean {
+ private static final String[] EXCLUDED_GETTER = new String[] {"getCause",
+ "getLocalizedMessage",
+ "getStackTrace",
+ "getClass"};
+
+
+ private String getWebFaultBean(final Class<?> exceptionClass) {
+ WebFault fault = exceptionClass.getAnnotation(WebFault.class);
+ if (fault == null) {
+ return null;
+ }
+ return fault.faultBean();
+ }
+
+ private boolean isWebFaultAbsent(final Class exceptionClass) {
+ return StringUtils.isEmpty(getWebFaultBean(exceptionClass));
+ }
+
+ public WrapperBeanClass transform(final Class exceptionClass, final String defaultPackage) {
+ WrapperBeanClass jClass = new WrapperBeanClass();
+ if (isWebFaultAbsent(exceptionClass)) {
+ jClass.setName(exceptionClass.getSimpleName() + "Bean");
+ jClass.setPackageName(defaultPackage);
+ } else {
+ jClass.setFullClassName(getWebFaultBean(exceptionClass));
+ }
+
+ buildBeanFields(exceptionClass, jClass);
+
+ jClass.setElementName(new QName(URIParserUtil.getNamespace(exceptionClass.getPackage().getName()),
+ exceptionClass.getSimpleName()));
+ jClass.annotate(new WrapperBeanAnnotator());
+
+ return jClass;
+ }
+
+ private String getFieldName(final Method method) {
+ String name = method.getName().substring(3);
+ char chars[] = name.toCharArray();
+ chars[0] = Character.toLowerCase(chars[0]);
+ return new String(chars);
+ }
+
+ private boolean isIncludedGetter(final Method method) {
+ return method.getName().startsWith("get")
+ && !Arrays.asList(EXCLUDED_GETTER).contains(method.getName());
+ }
+
+ private void buildBeanFields(final Class exceptionClass, final JavaClass jClass) {
+ for (Method method : exceptionClass.getMethods()) {
+ if (isIncludedGetter(method)) {
+ JavaField field = new JavaField(getFieldName(method),
+ method.getReturnType().getName(),
+ "");
+ field.setOwner(jClass);
+ jClass.addField(field);
+ jClass.appendGetter(field);
+ jClass.appendSetter(field);
+ }
+ }
+ }
+
+}
Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/GreeterFault.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/GreeterFault.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/GreeterFault.java (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/GreeterFault.java Wed May 9 02:53:35 2007
@@ -0,0 +1,32 @@
+/**
+ * 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.fortest.jaxws.rpc;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.Style;
+
+@WebService(name = "Hello", targetNamespace = "http://cxf.apache.org/")
+@SOAPBinding(style = Style.RPC)
+public interface GreeterFault {
+ @WebMethod
+ void pingMeFault() throws PingMeFault;
+}
Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/PingMeFault.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/PingMeFault.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/PingMeFault.java (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/PingMeFault.java Wed May 9 02:53:35 2007
@@ -0,0 +1,36 @@
+/**
+ * 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.fortest.jaxws.rpc;
+
+import javax.xml.ws.WebFault;
+
+
+@WebFault(name = "faultDetail",
+ targetNamespace = "http://apache.org/hello_world_soap_http/types",
+ faultBean = "org.apache.cxf.tools.fortest.jaxws.rpc.types.FaultDetail")
+
+public class PingMeFault extends Exception {
+
+ private int code;
+
+ public int getCode() {
+ return this.code;
+ }
+}
Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGeneratorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGeneratorTest.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGeneratorTest.java (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/FaultBeanGeneratorTest.java Wed May 9 02:53:35 2007
@@ -0,0 +1,111 @@
+/**
+ * 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.java2wsdl.generator.wsdl11;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.tools.common.ProcessorTestBase;
+import org.apache.cxf.tools.common.ToolConstants;
+import org.apache.cxf.tools.java2wsdl.processor.JavaToProcessor;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class FaultBeanGeneratorTest extends ProcessorTestBase {
+ JavaToProcessor processor = new JavaToProcessor();
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ processor.setEnvironment(env);
+ }
+
+ @After
+ public void tearDown() {
+ super.tearDown();
+ }
+
+ private ServiceInfo getServiceInfo() {
+ return processor.getServiceBuilder().build();
+ }
+
+ @Test
+ public void testGenFaultBean() throws Exception {
+ String testingClass = "org.apache.cxf.tools.fortest.cxf523.Database";
+ env.put(ToolConstants.CFG_CLASSNAME, testingClass);
+
+ FaultBeanGenerator generator = new FaultBeanGenerator();
+ generator.setServiceModel(getServiceInfo());
+
+ generator.generate(output);
+
+ String pkgBase = "org/apache/cxf/tools/fortest/cxf523/jaxws";
+ assertEquals(1, new File(output, pkgBase).listFiles().length);
+ File faultBeanClass = new File(output, pkgBase + "/DBServiceFaultBean.java");
+ assertTrue(faultBeanClass.exists());
+
+ String expectedFile = getClass().getResource("expected/DBServiceFaultBean.java.source").getFile();
+ assertFileEquals(new File(expectedFile), faultBeanClass);
+ }
+
+ @Test
+ public void testGenFaultBeanWithCustomization() throws Exception {
+ String testingClass = "org.apache.cxf.tools.fortest.jaxws.rpc.GreeterFault";
+ env.put(ToolConstants.CFG_CLASSNAME, testingClass);
+
+ FaultBeanGenerator generator = new FaultBeanGenerator();
+ generator.setServiceModel(getServiceInfo());
+
+ generator.generate(output);
+
+ String pkgBase = "org/apache/cxf/tools/fortest/jaxws/rpc/types";
+ assertEquals(1, new File(output, pkgBase).listFiles().length);
+ File faultBeanClass = new File(output, pkgBase + "/FaultDetail.java");
+ assertTrue(faultBeanClass.exists());
+
+ String expectedFile = getClass().getResource("expected/FaultDetail.java.source").getFile();
+ assertFileEquals(new File(expectedFile), faultBeanClass);
+ }
+
+ @Test
+ public void testGetExceptionClasses() throws Exception {
+ Class seiClass = Class.forName("org.apache.hello_world.Greeter");
+ FaultBeanGenerator generator = new FaultBeanGenerator();
+ Set<Class> classes = new HashSet<Class>();
+ for (Method method : seiClass.getMethods()) {
+ classes.addAll(generator.getExceptionClasses(method));
+ }
+ assertEquals(0, classes.size());
+
+ classes.clear();
+
+ seiClass = Class.forName("org.apache.cxf.tools.fortest.cxf523.Database");
+ for (Method method : seiClass.getMethods()) {
+ classes.addAll(generator.getExceptionClasses(method));
+ }
+ assertEquals(1, classes.size());
+ assertEquals("org.apache.cxf.tools.fortest.cxf523.DBServiceFault",
+ classes.iterator().next().getName());
+ }
+}
Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/DBServiceFaultBean.java.source
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/DBServiceFaultBean.java.source?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/DBServiceFaultBean.java.source (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/DBServiceFaultBean.java.source Wed May 9 02:53:35 2007
@@ -0,0 +1,33 @@
+
+package org.apache.cxf.tools.fortest.cxf523.jaxws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * This class was generated by the CXF 2.0-incubator-SNAPSHOT
+ * Wed May 09 17:18:10 CST 2007
+ * Generated source version: 2.0-incubator-SNAPSHOT
+ *
+ */
+
+@XmlRootElement(namespace = "http://cxf523.fortest.tools.cxf.apache.org/", name = "DBServiceFault")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(namespace = "http://cxf523.fortest.tools.cxf.apache.org/", name = "DBServiceFault")
+
+public class DBServiceFaultBean {
+
+ private java.lang.String message;
+
+ public java.lang.String getMessage () {
+ return this.message;
+ }
+
+ public void setMessage ( java.lang.String newMessage ) {
+ this.message = newMessage;
+ }
+
+}
+
Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/FaultDetail.java.source
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/FaultDetail.java.source?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/FaultDetail.java.source (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/expected/FaultDetail.java.source Wed May 9 02:53:35 2007
@@ -0,0 +1,42 @@
+
+package org.apache.cxf.tools.fortest.jaxws.rpc.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * This class was generated by the CXF 2.0-incubator-SNAPSHOT
+ * Wed May 09 17:04:04 CST 2007
+ * Generated source version: 2.0-incubator-SNAPSHOT
+ *
+ */
+
+@XmlRootElement(namespace = "http://rpc.jaxws.fortest.tools.cxf.apache.org/", name = "PingMeFault")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(namespace = "http://rpc.jaxws.fortest.tools.cxf.apache.org/", name = "PingMeFault")
+
+public class FaultDetail {
+
+ private int code;
+ private java.lang.String message;
+
+ public int getCode () {
+ return this.code;
+ }
+
+ public void setCode ( int newCode ) {
+ this.code = newCode;
+ }
+
+ public java.lang.String getMessage () {
+ return this.message;
+ }
+
+ public void setMessage ( java.lang.String newMessage ) {
+ this.message = newMessage;
+ }
+
+}
+
Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBeanTest.java?view=auto&rev=536470
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBeanTest.java (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/FaultBeanTest.java Wed May 9 02:53:35 2007
@@ -0,0 +1,52 @@
+/**
+ * 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.java2wsdl.processor.internal.jaxws;
+
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+import org.apache.cxf.tools.common.model.JavaField;
+import org.apache.cxf.tools.java2wsdl.generator.wsdl11.model.WrapperBeanClass;
+import org.junit.Test;
+
+public class FaultBeanTest extends TestCase {
+
+ @Test
+ public void testTransform() throws Exception {
+ Class faultClass = Class.forName("org.apache.cxf.tools.fortest.cxf523.DBServiceFault");
+ FaultBean bean = new FaultBean();
+ WrapperBeanClass beanClass = bean.transform(faultClass, "org.apache.cxf.tools.fortest.cxf523.jaxws");
+
+ assertNotNull(beanClass);
+ assertEquals("DBServiceFaultBean", beanClass.getName());
+ assertEquals("org.apache.cxf.tools.fortest.cxf523.jaxws", beanClass.getPackageName());
+
+ assertEquals(1, beanClass.getFields().size());
+
+ JavaField field = beanClass.getFields().get(0);
+ assertEquals("message", field.getName());
+ assertEquals("java.lang.String", field.getType());
+
+ QName qname = beanClass.getElementName();
+ assertEquals("DBServiceFault", qname.getLocalPart());
+ assertEquals("http://cxf523.fortest.tools.cxf.apache.org/", qname.getNamespaceURI());
+ }
+}