You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2007/12/23 22:48:05 UTC

svn commit: r606620 - in /incubator/cxf/trunk/rt/javascript: ./ src/main/java/org/apache/cxf/javascript/ src/main/java/org/apache/cxf/javascript/service/ src/main/java/org/apache/cxf/javascript/types/ src/main/resources/org/apache/cxf/javascript/ src/t...

Author: bimargulies
Date: Sun Dec 23 13:48:04 2007
New Revision: 606620

URL: http://svn.apache.org/viewvc?rev=606620&view=rev
Log:
Pass the first test of xs:any from JavaScript to Java. In spite of JAXB's best efforts.

Modified:
    incubator/cxf/trunk/rt/javascript/   (props changed)
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptUtils.java
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
    incubator/cxf/trunk/rt/javascript/src/main/resources/org/apache/cxf/javascript/cxf-utils.js
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AnyTest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitBareClientTest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsXMLHttpRequest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AnyImpl.java
    incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AnyTests.js
    incubator/cxf/trunk/rt/javascript/src/test/resources/wsdl/hello_world_any.wsdl

Propchange: incubator/cxf/trunk/rt/javascript/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Dec 23 13:48:04 2007
@@ -1,7 +1,8 @@
-target
-.settings
-.checkstyle
-.classpath
-.pmd
-.project
-.ruleset
+target
+.settings
+.checkstyle
+.classpath
+.pmd
+.project
+.ruleset
+*.launch

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptUtils.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptUtils.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptUtils.java Sun Dec 23 13:48:04 2007
@@ -258,8 +258,10 @@
         // now for the thing itself.
         if (type instanceof XmlSchemaComplexType) {
             // it has a value
-            appendExpression(jsVar + ".serialize(cxfjsutils, '" 
-                             + elementInfo.getXmlName() + "')");
+            // pass the extra null in the slot for the 'extra namespaces' needed by 'any'.
+            appendExpression(jsVar 
+                             + ".serialize(cxfjsutils, '" 
+                             + elementInfo.getXmlName() + "', null)");
         } else { // simple type
             QName typeName = type.getQName();
             appendString("<" + elementInfo.getXmlName() + ">");
@@ -311,7 +313,7 @@
         appendLine("anySerializer = "
                              + "cxfjsutils.interfaceObject.globalElementSerializers[anyHolder.qname];");
         appendLine("anyXmlTag = '" + prefix + ":' + anyHolder.localName;");
-        appendLine("anyXmlNsDef = 'xmlns:" + prefix + "=' + anyHolder.namespaceURI;");
+        appendLine("anyXmlNsDef = 'xmlns:" + prefix + "=\\'' + anyHolder.namespaceURI" + " + '\\'';");
         appendLine("anyStartTag = '<' + anyXmlTag + ' ' + anyXmlNsDef + '>';");
         appendLine("anyEndTag = '</' + anyXmlTag + '>';");
         appendLine("anyEmptyTag = '<' + anyXmlTag + ' ' + anyXmlNsDef + '/>';");
@@ -341,7 +343,7 @@
         
         startIf("anySerializer"); // if no constructor, a simple type.
             // it has a value
-        appendExpression("anySerializer(cxfjsutils, anyXmlTag)"); 
+        appendExpression("anySerializer.call(" + varRef + ", cxfjsutils, anyXmlTag, anyXmlNsDef)"); 
         appendElse();
         appendExpression("anyStartTag");
         appendExpression("cxfjsutils.escapeXmlEntities(" + varRef + ")");

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java Sun Dec 23 13:48:04 2007
@@ -319,7 +319,7 @@
                     +  opFunctionGlobalName
                     + "("  + responseCallbackParams
                     + ((parameterList.length() > 0 && !currentOperation.isOneWay()) 
-                        ? ", " + parameterList : "") + ") {\n");
+                        ? ", " : "") + parameterList + ") {\n");
         utils.appendLine("var xml = null;");
         if (inputMessage != null) {
             utils.appendLine("var args = new Array(" + inputParameterNames.size() + ");");

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java Sun Dec 23 13:48:04 2007
@@ -296,7 +296,7 @@
         code.append("//\n");
         code.append("// Serialize " + name + "\n");
         code.append("//\n");
-        code.append("function " + functionName + "(cxfjsutils, elementName) {\n");
+        code.append("function " + functionName + "(cxfjsutils, elementName, extraNamespaces) {\n");
         utils.startXmlStringAccumulator("xml");
         utils.startIf("elementName != null");
         utils.appendString("<");
@@ -307,6 +307,9 @@
             utils.appendString(" ");
             utils.appendString(moreNamespaces);
         }
+        utils.startIf("extraNamespaces");
+        utils.appendExpression("' ' + extraNamespaces");
+        utils.endBlock();
         utils.appendString(">");
         utils.endBlock();
         code.append(bodyCode);

Modified: incubator/cxf/trunk/rt/javascript/src/main/resources/org/apache/cxf/javascript/cxf-utils.js
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/resources/org/apache/cxf/javascript/cxf-utils.js?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/resources/org/apache/cxf/javascript/cxf-utils.js (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/resources/org/apache/cxf/javascript/cxf-utils.js Sun Dec 23 13:48:04 2007
@@ -405,14 +405,14 @@
 CxfApacheOrgClient.prototype.onReadyState = org_apache_cxf_client_onReadyState; 
 
 // Holder object used for xs:any
-// The QName of the element goes into 'qname'
+// The namespaceURI and localName identify the global element from the schema.
 // The object to go with it goes into object.
 // If the Any is an array, put the array into the object slot.
 
-function org_apache_cxf_any_holder(qname, object) {
-	this.typeMarker = "org_apache_cxf_any_holder"; 
-	this.qname = qname;
+function org_apache_cxf_any_holder(namespaceURI, localName, object) {
+	this.typeMarker = "org_apache_cxf_any_holder";
+	this.namespaceURI = namespaceURI;
+	this.localName = localName;
+	this.qname = "{" + namespaceURI + "}" + localName;
 	this.object = object;
-	this.namespaceURI = this.qname.split(":", 1)[0];
-	this.localName = this.qname.split(":", 1)[1]; 
 }

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AnyTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AnyTest.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AnyTest.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AnyTest.java Sun Dec 23 13:48:04 2007
@@ -22,10 +22,13 @@
 import java.util.logging.Logger;
 
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.javascript.JavascriptTestUtilities.JSRunnable;
 import org.apache.cxf.javascript.fortest.AnyImpl;
 import org.junit.Before;
 import org.junit.Test;
+import org.mozilla.javascript.Context;
 import org.springframework.context.support.GenericApplicationContext;
+import uri.cxf_apache_org.jstest.types.any.alts.Alternative1;
 
 /*
  * We end up here with a part with isElement == true, a non-array element, 
@@ -61,10 +64,28 @@
         implementor.reset();
     }
     
+    private Void acceptOneChalk(Context context) {
+        LOG.info("About to call accept1 with Chalk" + endpoint.getAddress());
+        testUtilities.rhinoCall("testAny1ToServerChalk",  
+                                testUtilities.javaToJS(endpoint.getAddress()));
+        assertEquals("before chalk", implementor.getBefore());
+        Object someAlternative = implementor.getAny1value();
+        assertTrue(someAlternative instanceof Alternative1);
+        Alternative1 a1 = (Alternative1) someAlternative;
+        assertEquals("bismuth", a1.getChalk());
+        assertEquals("after chalk", implementor.getAfter());
+        return null;
+    }
+    
     @Test
-    public void testServerStartup() throws Exception {
-        LOG.fine("log something");
-        // no need to do anything, just see what happens on init!
+    public void callAcceptOneChalk() {
+        testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
+            public Void run(Context context) {
+                return acceptOneChalk(context);
+            }
+        });
     }
+
+
 
 }

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitBareClientTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitBareClientTest.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitBareClientTest.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitBareClientTest.java Sun Dec 23 13:48:04 2007
@@ -162,7 +162,7 @@
     }
     
     private Void onewayCaller(Context context) {
-        LOG.info("About to call actionMethod" + endpoint.getAddress());
+        LOG.info("About to call onewayMethod" + endpoint.getAddress());
         testUtilities.rhinoCall("actionMethodTest",  
                                 testUtilities.javaToJS(endpoint.getAddress()),
                                 "corrigan");

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsXMLHttpRequest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsXMLHttpRequest.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsXMLHttpRequest.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsXMLHttpRequest.java Sun Dec 23 13:48:04 2007
@@ -369,8 +369,12 @@
             responseText = contentChars.toString();
             LOG.fine(responseText);
             
+            // For a one-way message or whatever, there may not be a content type.
             // throw away any encoding modifier.
-            String contentType = connection.getContentType().split(";")[0];
+            String contentType = "";
+            if (connection.getContentType() != null) {
+                contentType = connection.getContentType().split(";")[0];
+            }
             
             if ("text/xml".equals(contentType)
                 || "application/xml".equals(contentType) 

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AnyImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AnyImpl.java?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AnyImpl.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AnyImpl.java Sun Dec 23 13:48:04 2007
@@ -34,6 +34,7 @@
 /**
  * 
  */
+@org.apache.cxf.feature.Features(features = "org.apache.cxf.feature.LoggingFeature")   
 public class AnyImpl implements AcceptAny {
 
     private Object any1value;
@@ -171,6 +172,10 @@
             r.setAny(null);
         }
         return r;
+    }
+
+    public void dummyAlts(uri.cxf_apache_org.jstest.types.any.alts.Alternative1 in) {
+        // not used, just here to force some types into sight.
     }
 }
 

Modified: incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AnyTests.js
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AnyTests.js?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AnyTests.js (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AnyTests.js Sun Dec 23 13:48:04 2007
@@ -36,5 +36,15 @@
 
 function testAny1ToServerChalk(url)
 {
+	var service = new cxf_apache_org_jstest_any_AcceptAny();
+	service.url = url;
+	var param = new cxf_apache_org_jstest_types_any_acceptAny1();
+	param.setBefore("before chalk");
+	var anyOb = new cxf_apache_org_jstest_types_any_alts_alternative1();
+	anyOb.setChalk("bismuth");
+	var holder = new org_apache_cxf_any_holder("uri:cxf.apache.org:jstest:types:any:alts", "alternative1", anyOb);
+	param.setAny(holder);
+	param.setAfter("after chalk");
+	service.acceptAny1(param);
 }
 

Modified: incubator/cxf/trunk/rt/javascript/src/test/resources/wsdl/hello_world_any.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/resources/wsdl/hello_world_any.wsdl?rev=606620&r1=606619&r2=606620&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/wsdl/hello_world_any.wsdl (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/wsdl/hello_world_any.wsdl Sun Dec 23 13:48:04 2007
@@ -23,37 +23,51 @@
 	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 	xmlns:tns="uri:cxf.apache.org:jstest:any"
 	xmlns:x1="uri:cxf.apache.org:jstest:types:any"
+	xmlns:alts="uri:cxf.apache.org:jstest:types:any:alts"
 	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
 	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 	<wsdl:types>
-		<schema targetNamespace="uri:cxf.apache.org:jstest:types:any"
-			xmlns="http://www.w3.org/2001/XMLSchema"
-			xmlns:tns="uri:cxf.apache.org:jstest:types:any"
-			elementFormDefault="qualified">
-
+	    <schema targetNamespace="uri:cxf.apache.org:jstest:types:any:alts"
+	    		xmlns="http://www.w3.org/2001/XMLSchema"
+			          xmlns:tns="uri:cxf.apache.org:jstest:types:any:alts"
+			    elementFormDefault="qualified">
+			    
 			<simpleType name="MyStringType">
 				<restriction base="string">
 					<maxLength value="30" />
 				</restriction>
 			</simpleType>
 
-			<complexType name="alternative1">
-				<sequence>
-					<element name="chalk" type="string" />
-				</sequence>
-			</complexType>
-
-			<complexType name="alternative2">
-				<sequence>
-					<element name="cheese" type="int" />
-				</sequence>
-			</complexType>
+			<element name="restrictedStringAlternative"
+				type="tns:MyStringType" />
+
+			<element name="alternative1">
+				<complexType>
+					<sequence>
+						<element name="chalk" type="string" />
+					</sequence>
+				</complexType>
+			</element>
+
+			<element name="alternative2">
+				<complexType>
+					<sequence>
+						<element name="cheese" type="int" />
+					</sequence>
+				</complexType>
+			</element>
+
+	    </schema>
+		<schema targetNamespace="uri:cxf.apache.org:jstest:types:any"
+			xmlns="http://www.w3.org/2001/XMLSchema"
+			xmlns:tns="uri:cxf.apache.org:jstest:types:any"
+			elementFormDefault="qualified">
 
 			<element name="acceptAny1">
 				<complexType>
 					<sequence>
 						<element name='before' type='string' />
-						<any minOccurs='1' />
+						<any minOccurs='1' namespace='##other' />
 						<element name='after' type='string' />
 					</sequence>
 				</complexType>
@@ -63,7 +77,7 @@
 				<complexType>
 					<sequence>
 						<element name='before' type='string' />
-						<any minOccurs='1' maxOccurs='10' />
+						<any minOccurs='1' maxOccurs='10'  namespace='##other'/>
 						<element name='after' type='string' />
 					</sequence>
 				</complexType>
@@ -73,24 +87,24 @@
 				<complexType>
 					<sequence>
 						<element name='before' type='string' />
-						<any minOccurs='0' maxOccurs='1' />
+						<any minOccurs='0' maxOccurs='1'  namespace='##other' />
 						<element name='after' type='string' />
 					</sequence>
 				</complexType>
 			</element>
-			
-        <element name='returnAny1'>
-			<complexType/>
-		</element>
-		
-		<element name='returnAnyN'>
-			<complexType/>
-		</element>
-		
-		<element name='returnAnyOptional'>
-			<complexType/>
-		</element>
-			
+
+			<element name='returnAny1'>
+				<complexType />
+			</element>
+
+			<element name='returnAnyN'>
+				<complexType />
+			</element>
+
+			<element name='returnAnyOptional'>
+				<complexType />
+			</element>
+
 		</schema>
 
 	</wsdl:types>
@@ -106,7 +120,7 @@
 	<wsdl:message name="acceptAnyOptional">
 		<wsdl:part name="in" element="x1:acceptAnyOptional" />
 	</wsdl:message>
-	
+
 	<wsdl:message name="returnAny1">
 		<wsdl:part name="in" element="x1:returnAny1" />
 	</wsdl:message>
@@ -130,6 +144,13 @@
 	<wsdl:message name="returnAnyOptionalResponse">
 		<wsdl:part name="out" element="x1:acceptAnyOptional" />
 	</wsdl:message>
+	
+	<!--  dummy message to get the alts package into the JAXB universe. -->
+	<!--  there has to be a better way to do this. -->
+	
+	<wsdl:message name="dummyAlts">
+		<wsdl:part name="in" element="alts:alternative1"/>
+	</wsdl:message>
 
 	<wsdl:portType name="AcceptAny">
 		<wsdl:operation name="acceptAny1">
@@ -147,18 +168,27 @@
 
 		<wsdl:operation name="returnAny1">
 			<wsdl:input name="returnAny1" message="tns:returnAny1" />
-			<wsdl:output name="returnAny1Response" message="tns:returnAny1Response" />
+			<wsdl:output name="returnAny1Response"
+				message="tns:returnAny1Response" />
 		</wsdl:operation>
 
 		<wsdl:operation name="returnAnyN">
 			<wsdl:input name="returnAnyN" message="tns:returnAnyN" />
-			<wsdl:output name="returnAnyNResponse" message="tns:returnAnyNResponse" />
+			<wsdl:output name="returnAnyNResponse"
+				message="tns:returnAnyNResponse" />
 		</wsdl:operation>
 
 		<wsdl:operation name="returnAnyOptional">
-			<wsdl:input name="returnAnyOptional" message="tns:returnAnyOptional" />
-			<wsdl:output name="returnAnyOptionalResponse" message="tns:returnAnyOptionalResponse" />
+			<wsdl:input name="returnAnyOptional"
+				message="tns:returnAnyOptional" />
+			<wsdl:output name="returnAnyOptionalResponse"
+				message="tns:returnAnyOptionalResponse" />
 		</wsdl:operation>
+		
+		<!--  dummy -->
+	    <wsdl:operation name="dummyAlts">
+	    	<wsdl:input name="dummyAlts" message="tns:dummyAlts"/>
+	    </wsdl:operation>
 
 	</wsdl:portType>
 	<wsdl:binding name="AcceptAny" type="tns:AcceptAny">
@@ -189,12 +219,12 @@
 			<wsdl:input>
 				<soap:body use="literal" />
 			</wsdl:input>
-			
+
 			<wsdl:output>
 				<soap:body use="literal" />
 			</wsdl:output>
 		</wsdl:operation>
-		
+
 		<wsdl:operation name="returnAnyN">
 			<soap:operation style="document" />
 			<wsdl:input>
@@ -212,6 +242,13 @@
 			<wsdl:output>
 				<soap:body use="literal" />
 			</wsdl:output>
+		</wsdl:operation>
+		
+		<wsdl:operation name="dummyAlts">
+			<soap:operation style="document"/>
+			<wsdl:input>
+				<soap:body use="literal"/>
+			</wsdl:input>
 		</wsdl:operation>
 
 	</wsdl:binding>