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 2008/01/10 04:03:51 UTC

svn commit: r610654 - in /incubator/cxf/trunk/rt/javascript/src: main/java/org/apache/cxf/javascript/types/ test/java/org/apache/cxf/javascript/ test/java/org/apache/cxf/javascript/fortest/ test/java/org/apache/cxf/javascript/fortest/aegis/ test/resour...

Author: bimargulies
Date: Wed Jan  9 19:03:33 2008
New Revision: 610654

URL: http://svn.apache.org/viewvc?rev=610654&view=rev
Log:
Return to chew on anyType in javascript. Fix the dom-returning current implementation, and set up test materials for something better.

Added:
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java   (with props)
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java   (with props)
Modified:
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AegisTest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisService.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisServiceImpl.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Mammal.java
    incubator/cxf/trunk/rt/javascript/src/test/resources/AegisBeans.xml
    incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AegisTests.js

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=610654&r1=610653&r2=610654&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 Wed Jan  9 19:03:33 2008
@@ -593,7 +593,8 @@
         utils.startIf("!cxfjsutils.isElementNil(curElement)");
         if (itemInfo.isAnyType()) {
             // All I can think of to do is deliver the DOM.
-            utils.appendLine("value = curElement;");
+            // unless we have xsi:type
+            utils.appendLine(valueTarget + " = curElement;");
         } else if (simple) {
             utils.appendLine("value = cxfjsutils.getNodeText(curElement);");
             utils.appendLine(valueTarget 

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AegisTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AegisTest.java?rev=610654&r1=610653&r2=610654&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AegisTest.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/AegisTest.java Wed Jan  9 19:03:33 2008
@@ -25,6 +25,7 @@
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.interceptor.LoggingInInterceptor;
 import org.apache.cxf.javascript.JavascriptTestUtilities.JSRunnable;
+import org.apache.cxf.javascript.JavascriptTestUtilities.Notifier;
 import org.apache.cxf.javascript.fortest.AegisServiceImpl;
 import org.junit.Before;
 import org.junit.Test;
@@ -101,4 +102,35 @@
             }
         });
     }
+    
+    private Void returnBeanWithAnyTypeArray(Context context) {
+        Notifier notifier = 
+            testUtilities.rhinoCallConvert("testReturningBeanWithAnyTypeArray", Notifier.class, 
+                                           testUtilities.javaToJS(getAddress()));
+        
+        boolean notified = notifier.waitForJavascript(1000 * 10);
+        assertTrue(notified);
+        Integer errorStatus = testUtilities.rhinoEvaluateConvert("globalErrorStatus", Integer.class);
+        assertNull(errorStatus);
+        String errorText = testUtilities.rhinoEvaluateConvert("globalErrorStatusText", String.class);
+        assertNull(errorText);
+
+        //This method returns a 'BeanWithAnyTypeArray'. 
+        //start by looking at the string.
+        String beanString = (String)testUtilities.rhinoEvaluate("globalResponseObject._return._string");
+        assertEquals("lima", beanString);
+        Object o1 = testUtilities.rhinoEvaluate("globalResponseObject._return._objects._anyType[0]");
+        assertTrue(o1 instanceof JsSimpleDomNode);
+        return null;
+    }
+    
+    @Test
+    public void callReturnBeanWithAnyTypeArray() {
+        testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
+            public Void run(Context context) {
+                return returnBeanWithAnyTypeArray(context);
+            }
+        });
+    }
+
 }

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisService.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisService.java?rev=610654&r1=610653&r2=610654&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisService.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisService.java Wed Jan  9 19:03:33 2008
@@ -21,9 +21,12 @@
 
 import java.util.Collection;
 
+import org.apache.cxf.javascript.fortest.aegis.BeanWithAnyTypeArray;
+
 public interface AegisService {
     void acceptAny(String before, Collection<org.jdom.Element> anything);
     void acceptObjects(Collection<Object> anything);
     void acceptStrings(Collection<String> someStrings);
+    BeanWithAnyTypeArray returnBeanWithAnyTypeArray();
 }
 

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisServiceImpl.java?rev=610654&r1=610653&r2=610654&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisServiceImpl.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/AegisServiceImpl.java Wed Jan  9 19:03:33 2008
@@ -21,6 +21,10 @@
 
 import java.util.Collection;
 
+import org.apache.cxf.javascript.fortest.aegis.BeanWithAnyTypeArray;
+import org.apache.cxf.javascript.fortest.aegis.Mammal;
+import org.apache.cxf.javascript.fortest.aegis.Vegetable;
+
 /**
  * Service used to test out JavaScript talking to Aegis.
  */
@@ -63,7 +67,8 @@
         acceptedStrings = someStrings;
     }
 
-    /** * @return Returns the acceptedStrings.
+    /**
+     * @return Returns the acceptedStrings.
      */
     public Collection<String> getAcceptedStrings() {
         return acceptedStrings;
@@ -71,5 +76,16 @@
 
     public void acceptObjects(Collection<Object> anything) {
         acceptedObjects = anything;
+    }
+
+    public BeanWithAnyTypeArray returnBeanWithAnyTypeArray() {
+        BeanWithAnyTypeArray bwata = new BeanWithAnyTypeArray();
+        bwata.setString("lima");
+        Object[] obs = new Object[3];
+        obs[0] = new Mammal();
+        obs[1] = new Integer(42);
+        obs[2] = new Vegetable(); // this is NOT in the WSDL.
+        bwata.setObjects(obs);
+        return bwata;
     }
 }

Added: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java?rev=610654&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java (added)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java Wed Jan  9 19:03:33 2008
@@ -0,0 +1,40 @@
+/**
+ * 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.javascript.fortest.aegis;
+
+/**
+ * 
+ */
+public class BeanWithAnyTypeArray {
+    private String string;
+    private Object[] objects;
+    public String getString() {
+        return string;
+    }
+    public void setString(String string) {
+        this.string = string;
+    }
+    public Object[] getObjects() {
+        return objects;
+    }
+    public void setObjects(Object[] objects) {
+        this.objects = objects;
+    }
+}

Propchange: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/BeanWithAnyTypeArray.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Mammal.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Mammal.java?rev=610654&r1=610653&r2=610654&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Mammal.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Mammal.java Wed Jan  9 19:03:33 2008
@@ -24,6 +24,10 @@
  */
 public class Mammal {
     private String name;
+    
+    public Mammal() {
+        name = "shrew";
+    }
 
     public String getName() {
         return name;

Added: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java?rev=610654&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java (added)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java Wed Jan  9 19:03:33 2008
@@ -0,0 +1,40 @@
+/**
+ * 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.javascript.fortest.aegis;
+
+/**
+ * 
+ */
+public class Vegetable {
+    
+    private String family;
+    
+    public Vegetable() {
+        family = "brasica";
+    }
+    
+    public String getFamily() {
+        return family;
+    }
+
+    public void setFamily(String family) {
+        this.family = family;
+    }
+}

Propchange: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/aegis/Vegetable.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/javascript/src/test/resources/AegisBeans.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/resources/AegisBeans.xml?rev=610654&r1=610653&r2=610654&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/AegisBeans.xml (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/AegisBeans.xml Wed Jan  9 19:03:33 2008
@@ -31,8 +31,8 @@
 	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
 	<import resource="classpath:META-INF/cxf/cxf-extension-xml.xml" />
 	<import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
-	<import
-		resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />
+	<import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />
+	<import resource="classpath:META-INF/cxf/cxf-extension-javascript-client.xml" />
 
 	<simple:server id="aegis-service"
 		serviceClass="org.apache.cxf.javascript.fortest.AegisService"

Modified: incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AegisTests.js
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AegisTests.js?rev=610654&r1=610653&r2=610654&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AegisTests.js (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AegisTests.js Wed Jan  9 19:03:33 2008
@@ -34,14 +34,17 @@
 	globalResponseObject = null;
 }
 
-// aegis/simple doesn't understand 'oneway'
-
+// aegis/simple doesn't understand 'oneway', so we have a dummy success function.
 function success()
 {
 }
 
-function error()
+function error(httpStatus, httpStatusText) 
 {
+    org_apache_cxf_trace.trace("error");
+	globalErrorStatus = httpStatus;
+	globalStatusText = httpStatusText;
+	globalNotifier.notify();
 }
 
 function testAnyNToServerRaw(url)
@@ -76,5 +79,23 @@
 	holderArray.push(holder);
 	arrayItem.setAnyType(holderArray);
 	service.acceptObjects(success, error, arrayItem);
+}
+
+function returnBeanWithAnyTypeArraySuccess(bean)
+{
+	// let the Java code sort out what we got.
+	globalResponseObject = bean;
+	globalNotifier.notify();
+}
+
+function testReturningBeanWithAnyTypeArray(url) 
+{
+    resetGlobals();
+	globalNotifier = new org_apache_cxf_notifier();
+
+	var service = new fortest_javascript_cxf_apache_org__AegisServicePortType();
+	service.url = url;
+	service.returnBeanWithAnyTypeArray(returnBeanWithAnyTypeArraySuccess, error);
+	return globalNotifier; 
 }