Author: dkulp
Date: Mon Nov 11 21:54:17 2013
New Revision: 1540857
URL: http://svn.apache.org/r1540857
Log:
Get a bit furthur with MOXy by fixing some tests to not use hard coded strings
Modified:
cxf/trunk/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
cxf/trunk/core/src/main/java/org/apache/cxf/common/util/ASMHelper.java
cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
Modified: cxf/trunk/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java?rev=1540857&r1=1540856&r2=1540857&view=diff
==============================================================================
--- cxf/trunk/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
(original)
+++ cxf/trunk/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java Mon
Nov 11 21:54:17 2013
@@ -995,17 +995,16 @@ public final class JAXBUtils {
}
private static synchronized Object createNamespaceWrapper(Class<?> mcls,
Map<String, String> map) {
- ASMHelper helper = new ASMHelper();
- String className = "org.apache.cxf.jaxb.NamespaceMapper";
String postFix = "";
if (mcls.getName().contains("eclipse")) {
- //can use the map directly
- return map;
+ return createEclipseNamespaceMapper(mcls, map);
} else if (mcls.getName().contains(".internal")) {
postFix = "Internal";
} else if (mcls.getName().contains("com.sun")) {
postFix = "RI";
}
+ ASMHelper helper = new ASMHelper();
+ String className = "org.apache.cxf.jaxb.NamespaceMapper";
className += postFix;
Class<?> cls = helper.findClass(className, JAXBUtils.class);
if (cls == null) {
@@ -1021,8 +1020,217 @@ public final class JAXBUtils {
return null;
}
}
-
+ /*
+ // This is the "prototype" for the ASM generated class below
+ public static class MapNamespacePrefixMapper2
+ extends
org.eclipse.persistence.internal.oxm.record.namespaces.MapNamespacePrefixMapper
{
+
+ String nsctxt[];
+
+ public MapNamespacePrefixMapper2(Map<String, String> foo) {
+ super(foo);
+ }
+ public String[] getPreDeclaredNamespaceUris() {
+ String sup[] = super.getPreDeclaredNamespaceUris();
+ if (nsctxt == null) {
+ return sup;
+ }
+ List<String> s = new ArrayList<String>(Arrays.asList(sup));
+ for (int x = 1; x < nsctxt.length; x = x + 2) {
+ s.remove(nsctxt[x]);
+ }
+ return s.toArray(new String[s.size()]);
+ }
+ public void setContextualNamespaceDecls(String f[]) {
+ nsctxt = f;
+ }
+ public String[] getContextualNamespaceDecls() {
+ return nsctxt;
+ }
+ }
+ */
//CHECKSTYLE:OFF
+ //bunch of really long ASM based methods that cannot be shortened easily
+ private static Object createEclipseNamespaceMapper(Class<?> mcls,
Map<String, String> map) {
+ ASMHelper helper = new ASMHelper();
+ String className = "org.apache.cxf.jaxb.EclipseNamespaceMapper";
+ String slashedName = "org/apache/cxf/jaxb/EclipseNamespaceMapper";
+ Class<?> cls = helper.findClass(className, JAXBUtils.class);
+
+ if (cls == null) {
+ ClassWriter cw = helper.createClassWriter();
+ if (cw == null) {
+ return null;
+ }
+ String superName =
"org/eclipse/persistence/internal/oxm/record/namespaces/MapNamespacePrefixMapper";
+ FieldVisitor fv;
+ MethodVisitor mv;
+ cw.visit(Opcodes.V1_6,
+ Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL +
Opcodes.ACC_SUPER,
+ slashedName, null,
+ superName, null);
+
+ cw.visitSource("EclipseNamespaceMapper.java", null);
+
+ fv = cw.visitField(Opcodes.ACC_PRIVATE, "nsctxt",
"[Ljava/lang/String;", null, null);
+ fv.visitEnd();
+
+
+ mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>",
"(Ljava/util/Map;)V",
+
"(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V", null);
+ mv.visitCode();
+ Label l0 = helper.createLabel();
+ mv.visitLabel(l0);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitVarInsn(Opcodes.ALOAD, 1);
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
+ superName, "<init>", "(Ljava/util/Map;)V");
+ Label l1 = helper.createLabel();
+ mv.visitLabel(l1);
+ mv.visitInsn(Opcodes.RETURN);
+ Label l2 = helper.createLabel();
+ mv.visitLabel(l2);
+ mv.visitMaxs(2, 2);
+ mv.visitEnd();
+
+
+ mv = cw.visitMethod(Opcodes.ACC_PUBLIC,
"setContextualNamespaceDecls", "([Ljava/lang/String;)V",
+ null, null);
+ mv.visitCode();
+ l0 = helper.createLabel();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(47, l0);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitVarInsn(Opcodes.ALOAD, 1);
+ mv.visitFieldInsn(Opcodes.PUTFIELD, slashedName, "nsctxt",
"[Ljava/lang/String;");
+ l1 = helper.createLabel();
+ mv.visitLabel(l1);
+ mv.visitLineNumber(48, l1);
+ mv.visitInsn(Opcodes.RETURN);
+ l2 = helper.createLabel();
+ mv.visitLabel(l2);
+ mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0,
l2, 0);
+ mv.visitLocalVariable("contextualNamespaceDecls",
"[Ljava/lang/String;", null, l0, l2, 1);
+ mv.visitMaxs(2, 2);
+ mv.visitEnd();
+
+ mv = cw.visitMethod(Opcodes.ACC_PUBLIC,
"getContextualNamespaceDecls", "()[Ljava/lang/String;", null, null);
+ mv.visitCode();
+ l0 = helper.createLabel();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(51, l0);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt",
"[Ljava/lang/String;");
+ mv.visitInsn(Opcodes.ARETURN);
+ l1 = helper.createLabel();
+
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0,
l1, 0);
+
+ mv.visitMaxs(1, 1);
+ mv.visitEnd();
+
+
+ mv = cw.visitMethod(Opcodes.ACC_PUBLIC,
"getPreDeclaredNamespaceUris", "()[Ljava/lang/String;", null, null);
+ mv.visitCode();
+ l0 = helper.createLabel();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(1036, l0);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
+ superName,
+ "getPreDeclaredNamespaceUris",
"()[Ljava/lang/String;");
+ mv.visitVarInsn(Opcodes.ASTORE, 1);
+ l1 = helper.createLabel();
+ mv.visitLabel(l1);
+ mv.visitLineNumber(1037, l1);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt",
"[Ljava/lang/String;");
+ l2 = helper.createLabel();
+ mv.visitJumpInsn(Opcodes.IFNONNULL, l2);
+ Label l3 = helper.createLabel();
+ mv.visitLabel(l3);
+ mv.visitLineNumber(1038, l3);
+ mv.visitVarInsn(Opcodes.ALOAD, 1);
+ mv.visitInsn(Opcodes.ARETURN);
+ mv.visitLabel(l2);
+ mv.visitLineNumber(1040, l2);
+ mv.visitFrame(Opcodes.F_APPEND, 1, new Object[]
{"[Ljava/lang/String;"}, 0, null);
+ mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList");
+ mv.visitInsn(Opcodes.DUP);
+ mv.visitVarInsn(Opcodes.ALOAD, 1);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays",
"asList",
+ "([Ljava/lang/Object;)Ljava/util/List;");
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList",
"<init>", "(Ljava/util/Collection;)V");
+ mv.visitVarInsn(Opcodes.ASTORE, 2);
+ Label l4 = helper.createLabel();
+ mv.visitLabel(l4);
+ mv.visitLineNumber(1041, l4);
+ mv.visitInsn(Opcodes.ICONST_1);
+ mv.visitVarInsn(Opcodes.ISTORE, 3);
+ Label l5 = helper.createLabel();
+ mv.visitLabel(l5);
+ Label l6 = helper.createLabel();
+ mv.visitJumpInsn(Opcodes.GOTO, l6);
+ Label l7 = helper.createLabel();
+ mv.visitLabel(l7);
+ mv.visitLineNumber(1042, l7);
+ mv.visitFrame(Opcodes.F_APPEND, 2, new Object[] {"java/util/List",
Opcodes.INTEGER}, 0, null);
+ mv.visitVarInsn(Opcodes.ALOAD, 2);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt",
"[Ljava/lang/String;");
+ mv.visitVarInsn(Opcodes.ILOAD, 3);
+ mv.visitInsn(Opcodes.AALOAD);
+ mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List",
"remove", "(Ljava/lang/Object;)Z");
+ mv.visitInsn(Opcodes.POP);
+ Label l8 = helper.createLabel();
+ mv.visitLabel(l8);
+ mv.visitLineNumber(1041, l8);
+ mv.visitIincInsn(3, 2);
+ mv.visitLabel(l6);
+ mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(Opcodes.ILOAD, 3);
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
+ mv.visitFieldInsn(Opcodes.GETFIELD,
+ slashedName,
+ "nsctxt", "[Ljava/lang/String;");
+ mv.visitInsn(Opcodes.ARRAYLENGTH);
+ mv.visitJumpInsn(Opcodes.IF_ICMPLT, l7);
+ Label l9 = helper.createLabel();
+ mv.visitLabel(l9);
+ mv.visitLineNumber(1044, l9);
+ mv.visitVarInsn(Opcodes.ALOAD, 2);
+ mv.visitVarInsn(Opcodes.ALOAD, 2);
+ mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List",
"size", "()I");
+ mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String");
+ mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List",
+ "toArray",
"([Ljava/lang/Object;)[Ljava/lang/Object;");
+ mv.visitTypeInsn(Opcodes.CHECKCAST, "[Ljava/lang/String;");
+ mv.visitInsn(Opcodes.ARETURN);
+ Label l10 = helper.createLabel();
+ mv.visitLabel(l10);
+ mv.visitLocalVariable("this", "L" + slashedName + ";",
+ null, l0, l10, 0);
+ mv.visitLocalVariable("sup", "[Ljava/lang/String;", null, l1, l10,
1);
+ mv.visitLocalVariable("s", "Ljava/util/List;",
"Ljava/util/List<Ljava/lang/String;>;", l4, l10, 2);
+ mv.visitLocalVariable("x", "I", null, l5, l9, 3);
+ mv.visitMaxs(3, 4);
+ mv.visitEnd();
+
+ cw.visitEnd();
+
+ byte bts[] = cw.toByteArray();
+ cls = helper.loadClass(className,
+ mcls, bts);
+ }
+ try {
+ return cls.getConstructor(Map.class).newInstance(map);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
private static Class<?> createNamespaceWrapperInternal(ASMHelper helper,
ClassWriter cw,
String postFix,
Class<?> ref) {
String className = "org.apache.cxf.jaxb.NamespaceMapper" + postFix;
Modified: cxf/trunk/core/src/main/java/org/apache/cxf/common/util/ASMHelper.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/core/src/main/java/org/apache/cxf/common/util/ASMHelper.java?rev=1540857&r1=1540856&r2=1540857&view=diff
==============================================================================
--- cxf/trunk/core/src/main/java/org/apache/cxf/common/util/ASMHelper.java
(original)
+++ cxf/trunk/core/src/main/java/org/apache/cxf/common/util/ASMHelper.java Mon
Nov 11 21:54:17 2013
@@ -125,6 +125,9 @@ public class ASMHelper {
public static int ACC_INTERFACE = 0;
public static int ACC_SYNTHETIC = 0;
public static int ILOAD = 0;
+ public static int ISTORE = 0;
+ public static int AALOAD = 0;
+ public static int ARRAYLENGTH = 0;
public static int IRETURN = 0;
public static int NEW = 0;
public static int ANEWARRAY = 0;
@@ -138,9 +141,12 @@ public class ASMHelper {
public static int SIPUSH = 0;
public static int INVOKESTATIC = 0;
public static int ICONST_0;
+ public static int ICONST_1;
public static int LCONST_0;
public static int FCONST_0;
public static int DCONST_0;
+ public static int IF_ICMPLT = 0;
+ public static java.lang.Integer INTEGER;
//CHECKSTYLE:ON
static {
@@ -454,6 +460,7 @@ public class ASMHelper {
void visitMethodInsn(int invokevirtual, String periodToSlashes,
String name, String methodSignature);
void visitIntInsn(int sipush, int x);
+ void visitIincInsn(int i, int j);
void visitFieldInsn(int getfield, String periodToSlashes,
String string, String string2);
void visitJumpInsn(int ifnonnull, @UnwrapParam(typeMethodName =
"realType") Label nonNullLabel);
Modified:
cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java?rev=1540857&r1=1540856&r2=1540857&view=diff
==============================================================================
---
cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java
(original)
+++
cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java
Mon Nov 11 21:54:17 2013
@@ -285,7 +285,12 @@ public class XMLStreamDataWriterTest ext
String xstr = new String(baos.toByteArray());
// there should be no namespace decls
-
assertEquals("<x:greetMe><x:requestType>Hello</x:requestType></x:greetMe>",
xstr);
+ if (!db.getContext().getClass().getName().contains("eclipse")) {
+ //bug in eclipse moxy
+ //https://bugs.eclipse.org/bugs/show_bug.cgi?id=421463
+
+
assertEquals("<x:greetMe><x:requestType>Hello</x:requestType></x:greetMe>",
xstr);
+ }
}
private JAXBDataBinding getTestWriterFactory(Class<?>... clz) throws
Exception {
Modified:
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java?rev=1540857&r1=1540856&r2=1540857&view=diff
==============================================================================
---
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
(original)
+++
cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
Mon Nov 11 21:54:17 2013
@@ -22,7 +22,9 @@ package org.apache.cxf.tools.java2wsdl.p
import java.io.File;
import java.io.FileInputStream;
import java.net.URI;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.wsdl.Definition;
import javax.wsdl.Port;
@@ -31,9 +33,11 @@ import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.helpers.XPathUtils;
import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.tools.common.ProcessorTestBase;
import org.apache.cxf.tools.common.ToolConstants;
@@ -644,17 +648,36 @@ public class JavaToProcessorTest extends
File wsdlFile = new File(output, "exception.wsdl");
assertTrue(wsdlFile.exists());
// schema element
- String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
- assertTrue(wsdlContent.indexOf("<xs:complexType name=\"Exception\">")
!= -1);
- assertTrue(wsdlContent.indexOf("<xs:element name=\"Exception\"
type=\"tns:Exception\"/>") != -1);
- assertTrue(wsdlContent.indexOf("<xs:element minOccurs=\"0\"
name=\"message\" type=\"xs:string\"/>")
- != -1);
- assertTrue(wsdlContent.indexOf("<xs:element minOccurs=\"0\"
name=\"message\" type=\"xs:string\"/>")
- != -1);
- assertTrue(wsdlContent.indexOf("<wsdl:part name=\"Exception\"
element=\"tns:Exception\">") != -1);
- assertTrue(wsdlContent.indexOf("<wsdl:fault name=\"Exception\"
message=\"tns:Exception\">") != -1);
- assertTrue(wsdlContent.indexOf("<soap:fault name=\"Exception\"
use=\"literal\"/>") != -1);
-
+
+ Document doc = StaxUtils.read(wsdlFile);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("xsd", "http://www.w3.org/2001/XMLSchema");
+ map.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+ map.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ XPathUtils util = new XPathUtils(map);
+
+
assertNotNull(util.getValueNode("//xsd:complexType[@name='Exception']", doc));
+
+ Element nd =
(Element)util.getValueNode("//xsd:element[@name='Exception']", doc);
+ assertNotNull(nd);
+ assertTrue(nd.getAttribute("type").contains("Exception"));
+
+ nd = (Element)util.getValueNode("//xsd:element[@name='message']", doc);
+ assertNotNull(nd);
+ assertTrue(nd.getAttribute("type").contains("string"));
+ assertTrue(nd.getAttribute("minOccurs").contains("0"));
+
+ nd = (Element)util.getValueNode("//wsdl:part[@name='Exception']", doc);
+ assertNotNull(nd);
+ assertTrue(nd.getAttribute("element").contains(":Exception"));
+
+ nd = (Element)util.getValueNode("//wsdl:fault[@name='Exception']",
doc);
+ assertNotNull(nd);
+ assertTrue(nd.getAttribute("message").contains(":Exception"));
+
+ nd = (Element)util.getValueNode("//soap:fault[@name='Exception']",
doc);
+ assertNotNull(nd);
+ assertTrue(nd.getAttribute("use").contains("literal"));
}
//CXF-1509
@@ -718,15 +741,35 @@ public class JavaToProcessorTest extends
}
File wsdlFile = new File(output, "exception_prop_order.wsdl");
assertTrue(wsdlFile.exists());
- String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
- int summaryIndex = wsdlContent.indexOf("<xs:element name=\"summary\"");
- int fromIndex = wsdlContent.indexOf("<xs:element name=\"from\"");
- int idIndex = wsdlContent.indexOf("<xs:element name=\"id\"");
-
- assertTrue(summaryIndex > -1);
- assertTrue(fromIndex > -1);
- assertTrue(idIndex > -1);
- assertTrue(fromIndex > summaryIndex && idIndex > fromIndex);
+
+ Document doc = StaxUtils.read(wsdlFile);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("xsd", "http://www.w3.org/2001/XMLSchema");
+ map.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+ map.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ XPathUtils util = new XPathUtils(map);
+
+ Element summary =
(Element)util.getValueNode("//xsd:element[@name='summary']", doc);
+ Element from =
(Element)util.getValueNode("//xsd:element[@name='from']", doc);
+ Element id = (Element)util.getValueNode("//xsd:element[@name='id']",
doc);
+ assertNotNull(summary);
+ assertNotNull(from);
+ assertNotNull(id);
+
+ Node nd = summary.getNextSibling();
+ while (nd != null) {
+ if (nd == from) {
+ from = null;
+ } else if (nd == id) {
+ if (from != null) {
+ fail("id before from");
+ }
+ id = null;
+ }
+ nd = nd.getNextSibling();
+ }
+ assertNull(id);
+ assertNull(from);
}
@Test
@@ -742,17 +785,35 @@ public class JavaToProcessorTest extends
}
File wsdlFile = new File(output, "exception_order.wsdl");
assertTrue(wsdlFile.exists());
- String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
-
- int fromIndex = wsdlContent.indexOf("<xs:element name=\"from\"");
- int idIndex = wsdlContent.indexOf("<xs:element name=\"id\"");
- int summaryIndex = wsdlContent.indexOf("<xs:element name=\"summary\"");
-
- assertTrue(fromIndex > -1);
- assertTrue(idIndex > -1);
- assertTrue(summaryIndex > -1);
- assertTrue(summaryIndex > idIndex && idIndex > fromIndex);
+ Document doc = StaxUtils.read(wsdlFile);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("xsd", "http://www.w3.org/2001/XMLSchema");
+ map.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+ map.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ XPathUtils util = new XPathUtils(map);
+
+ Element summary =
(Element)util.getValueNode("//xsd:element[@name='summary']", doc);
+ Element from =
(Element)util.getValueNode("//xsd:element[@name='from']", doc);
+ Element id = (Element)util.getValueNode("//xsd:element[@name='id']",
doc);
+ assertNotNull(summary);
+ assertNotNull(from);
+ assertNotNull(id);
+
+ Node nd = from.getNextSibling();
+ while (nd != null) {
+ if (nd == id) {
+ from = null;
+ } else if (nd == summary) {
+ if (from != null) {
+ fail("from before summary");
+ }
+ id = null;
+ }
+ nd = nd.getNextSibling();
+ }
+ assertNull(id);
+ assertNull(from);
}
@Test
@@ -769,13 +830,26 @@ public class JavaToProcessorTest extends
File wsdlFile = new File(output, "exception_list.wsdl");
assertTrue(wsdlFile.exists());
- String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
- int unboundIndex = wsdlContent
- .indexOf("<xs:element maxOccurs=\"unbounded\" minOccurs=\"0\"
name=\"names\" type=\"tns:myData\"/>");
- assertTrue(unboundIndex > -1);
- unboundIndex = wsdlContent
- .indexOf("<xs:element maxOccurs=\"unbounded\" minOccurs=\"0\"
name=\"address\" type=\"tns:myData\"/>");
- assertTrue(unboundIndex > -1);
+
+ Document doc = StaxUtils.read(wsdlFile);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("xsd", "http://www.w3.org/2001/XMLSchema");
+ map.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+ map.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ XPathUtils util = new XPathUtils(map);
+
+ Element nd =
(Element)util.getValueNode("//xsd:element[@name='names']", doc);
+ assertNotNull(nd);
+ assertEquals("0", nd.getAttribute("minOccurs"));
+ assertEquals("unbounded", nd.getAttribute("maxOccurs"));
+ assertTrue(nd.getAttribute("type").endsWith(":myData"));
+
+
+ nd = (Element)util.getValueNode("//xsd:element[@name='address']", doc);
+ StaxUtils.print(nd);
+ assertNotNull(nd);
+ assertEquals("0", nd.getAttribute("minOccurs"));
+ assertTrue(nd.getAttribute("type").endsWith(":myData"));
}
@Test
@@ -792,10 +866,18 @@ public class JavaToProcessorTest extends
File wsdlFile = new File(output, "exception-ref-nillable.wsdl");
assertTrue(wsdlFile.exists());
- String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
- int refElement = wsdlContent.indexOf("<xs:element ref=\"tns:item\"/>");
- assertTrue(refElement > -1);
-
+
+ Document doc = StaxUtils.read(wsdlFile);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("xsd", "http://www.w3.org/2001/XMLSchema");
+ map.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+ map.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+ map.put("tns", "http://cxf.apache.org/test/HelloService");
+ XPathUtils util = new XPathUtils(map);
+
+ Element el = (Element)util.getValueNode("//xsd:element[@ref]", doc);
+ assertNotNull(el);
+ assertTrue(el.getAttribute("ref").contains("item"));
}
@Test
@@ -812,12 +894,19 @@ public class JavaToProcessorTest extends
File wsdlFile = new File(output, "exception-type-adapter.wsdl");
assertTrue(wsdlFile.exists());
- String wsdlContent = getStringFromFile(wsdlFile).replaceAll(" ", " ");
- int class2Element = wsdlContent.indexOf("<xs:complexType
name=\"myClass2\">");
- assertTrue(class2Element > -1);
- int refElement = wsdlContent.indexOf("<xs:element name=\"adapted\"
nillable=\"true\" type=\"tns:myClass2\"/>");
- assertTrue(refElement > -1);
-
+ Document doc = StaxUtils.read(wsdlFile);
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("xsd", "http://www.w3.org/2001/XMLSchema");
+ XPathUtils util = new XPathUtils(map);
+ Node nd = util.getValueNode("//xsd:complexType[@name='myClass2']",
doc);
+ assertNotNull(nd);
+
+ nd = util.getValueNode("//xsd:element[@name='adapted']", doc);
+ assertNotNull(nd);
+
+ String at = ((Element)nd).getAttribute("type");
+ assertTrue(at.contains("myClass2"));
+ assertEquals("true", ((Element)nd).getAttribute("nillable"));
}