Return-Path: Delivered-To: apmail-incubator-cxf-commits-archive@locus.apache.org Received: (qmail 83532 invoked from network); 26 Mar 2007 22:13:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Mar 2007 22:13:05 -0000 Received: (qmail 21152 invoked by uid 500); 26 Mar 2007 22:13:13 -0000 Delivered-To: apmail-incubator-cxf-commits-archive@incubator.apache.org Received: (qmail 21098 invoked by uid 500); 26 Mar 2007 22:13:12 -0000 Mailing-List: contact cxf-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cxf-dev@incubator.apache.org Delivered-To: mailing list cxf-commits@incubator.apache.org Received: (qmail 21089 invoked by uid 99); 26 Mar 2007 22:13:12 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Mar 2007 15:13:12 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Mar 2007 15:13:04 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 61CE81A983A; Mon, 26 Mar 2007 15:12:44 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r522644 - in /incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src: main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/ test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/ Date: Mon, 26 Mar 2007 22:12:44 -0000 To: cxf-commits@incubator.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070326221244.61CE81A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Mon Mar 26 15:12:43 2007 New Revision: 522644 URL: http://svn.apache.org/viewvc?view=rev&rev=522644 Log: Fix problems if jaxws customization file doesn't use the same namespace prefixes as the target wsdl Added: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml (with props) Modified: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java Modified: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java?view=diff&rev=522644&r1=522643&r2=522644 ============================================================================== --- incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java (original) +++ incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java Mon Mar 26 15:12:43 2007 @@ -25,8 +25,10 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.logging.Logger; import javax.xml.namespace.NamespaceContext; @@ -161,8 +163,17 @@ } if (isGlobaleBindings(bindings)) { - Node node = queryXPathNode(wsdlNode, "//wsdl:definitions"); - copyBindingsToWsdl(node, bindings); + String pfx = wsdlNode.getPrefix(); + if (pfx == null) { + pfx = ""; + } else { + pfx += ":"; + } + ContextImpl ctx = new ContextImpl(wsdlNode); + Node node = queryXPathNode(wsdlNode, + ctx, + "//" + pfx + "definitions"); + copyBindingsToWsdl(node, bindings, ctx); } if (isJAXWSBindings(bindings) && bindings.getAttributeNode("node") != null) { @@ -171,9 +182,10 @@ Node node = null; NodeList nestedJaxbNodes = getNestedJaxbBinding(bindings); - node = queryXPathNode(wsdlNode, expression); + ContextImpl ctx = new ContextImpl(bindings); + node = queryXPathNode(wsdlNode, ctx, expression); if (node != null && nestedJaxbNodes.getLength() == 0) { - copyBindingsToWsdl(node, bindings); + copyBindingsToWsdl(node, bindings, ctx); } if (node != null && nestedJaxbNodes.getLength() != 0) { @@ -184,7 +196,10 @@ String xpathExpress = DOMUtils.getAttribute(jaxbNode, "node"); Node schemaNode = getSchemaNode(node); - Node targetNode = queryXPathNode(schemaNode, xpathExpress); + + ctx = new ContextImpl(bindings); + Node targetNode = queryXPathNode(schemaNode, ctx, xpathExpress); + //@@TODO - copy namespaces Element schemaElement = (Element)schemaNode; // Element targetElement = (Element)targetNode; @@ -227,10 +242,18 @@ } } - private void copyBindingsToWsdl(Node node, Node bindings) { + private void copyBindingsToWsdl(Node node, Node bindings, ContextImpl ctx) { if (bindings.getNamespaceURI().equals(ToolConstants.JAXWS_BINDINGS.getNamespaceURI())) { bindings.setPrefix("jaxws"); } + + for (Map.Entry ent : ctx.getUsedNamespaces().entrySet()) { + if (node.lookupNamespaceURI(ent.getKey()) == null) { + node.getOwnerDocument().getDocumentElement() + .setAttribute("xmlns:" + ent.getKey(), ent.getValue()); + } + + } for (int i = 0; i < bindings.getChildNodes().getLength(); i++) { Node childNode = bindings.getChildNodes().item(i); @@ -393,13 +416,18 @@ class ContextImpl implements NamespaceContext { private Node targetNode; - + private Map pfxMap = new HashMap(); + public ContextImpl(Node node) { targetNode = node; } public String getNamespaceURI(String prefix) { - return targetNode.getOwnerDocument().lookupNamespaceURI(prefix); + String s = targetNode.lookupNamespaceURI(prefix); + if (prefix != null) { + pfxMap.put(prefix, s); + } + return s; } public String getPrefix(String nsURI) { @@ -409,12 +437,16 @@ public Iterator getPrefixes(String namespaceURI) { throw new UnsupportedOperationException(); } + + public Map getUsedNamespaces() { + return pfxMap; + } } - private Node queryXPathNode(Node target, String expression) { + private Node queryXPathNode(Node target, ContextImpl nsCtx, String expression) { NodeList nlst; try { - xpath.setNamespaceContext(new ContextImpl(target)); + xpath.setNamespaceContext(nsCtx); nlst = (NodeList)xpath.evaluate(expression, target, XPathConstants.NODESET); } catch (XPathExpressionException e) { Message msg = new Message("XPATH_ERROR", LOG, new Object[] {expression}); Modified: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java?view=diff&rev=522644&r1=522643&r2=522644 ============================================================================== --- incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java (original) +++ incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java Mon Mar 26 15:12:43 2007 @@ -50,6 +50,7 @@ env = new ToolContext(); } + public void testBuildDefinitionWithXMLBinding() { String qname = "http://apache.org/hello_world_xml_http/bare"; String wsdlUrl = getClass().getResource("hello_world_xml_bare.wsdl").toString(); @@ -154,4 +155,51 @@ .getJaxwsPara().getMessageName()); assertEquals("customized parameter name does not parsered", "num1", binding.getJaxwsPara().getName()); } + + + + + public void testCustomizationWithDifferentNS() { + env.put(ToolConstants.CFG_WSDLURL, getClass().getResource("./hello_world.wsdl").toString()); + env.put(ToolConstants.CFG_BINDING, getClass().getResource("./binding3.xml").toString()); + JAXWSDefinitionBuilder builder = new JAXWSDefinitionBuilder(); + builder.setContext(env); + builder.build(); + builder.customize(); + + Definition customizedDef = builder.getWSDLModel(); + List defExtensionList = customizedDef.getExtensibilityElements(); + Iterator ite = defExtensionList.iterator(); + + while (ite.hasNext()) { + ExtensibilityElement extElement = (ExtensibilityElement)ite.next(); + JAXWSBinding binding = (JAXWSBinding)extElement; + assertEquals("Customized package name does not been parsered", "com.foo", binding.getPackage()); + assertEquals("Customized enableAsync does not parsered", true, binding.isEnableAsyncMapping()); + } + + PortType portType = customizedDef.getPortType(new QName("http://apache.org/hello_world_soap_http", + "Greeter")); + + List portTypeList = portType.getExtensibilityElements(); + JAXWSBinding binding = (JAXWSBinding)portTypeList.get(0); + + assertEquals("Customized enable EnableWrapperStyle name does not been parsered", true, binding + .isEnableWrapperStyle()); + + List opList = portType.getOperations(); + Operation operation = (Operation)opList.get(0); + List extList = operation.getExtensibilityElements(); + binding = (JAXWSBinding)extList.get(0); + + assertEquals("Customized method name does not parsered", "echoMeOneWay", binding.getMethodName()); + + + assertEquals("Customized parameter element name does not parsered", "tns:number1", binding + .getJaxwsPara().getElementName()); + assertEquals("Customized parameter message name does not parsered", "greetMeOneWayRequest", binding + .getJaxwsPara().getMessageName()); + assertEquals("customized parameter name does not parsered", "num1", binding.getJaxwsPara().getName()); + } + } Added: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml?view=auto&rev=522644 ============================================================================== --- incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml (added) +++ incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml Mon Mar 26 15:12:43 2007 @@ -0,0 +1,47 @@ + + + + true + + + true + + + + + + + + + + + + + + + + \ No newline at end of file Propchange: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/binding3.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml