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/24 02:40:25 UTC

svn commit: r606655 - in /incubator/cxf/trunk/rt/javascript/src: main/java/org/apache/cxf/javascript/types/ main/resources/org/apache/cxf/javascript/ test/java/org/apache/cxf/javascript/ test/resources/ test/resources/org/apache/cxf/javascript/

Author: bimargulies
Date: Sun Dec 23 17:40:23 2007
New Revision: 606655

URL: http://svn.apache.org/viewvc?rev=606655&view=rev
Log:
xs:any in both directions.

Added:
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsNamedNodeMap.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/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/JavascriptTestUtilities.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsSimpleDomNode.java
    incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties
    incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/AnyTests.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=606655&r1=606654&r2=606655&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 17:40:23 2007
@@ -476,7 +476,7 @@
                          + matchType
                          + ", '" + schemaInfo.getNamespaceURI() + "'"
                          + ", " + namespaceList
-                         + ", " + nextElement.getQName().getLocalPart()
+                         + ", '" + nextElement.getQName().getLocalPart() + "'"
                          + ");");
         
         if (array) {
@@ -499,12 +499,17 @@
         
         utils.appendLine("anyURI = cxfjsutils.getElementNamespaceURI(curElement);");
         utils.appendLine("anyLocalPart = cxfjsutils.getNodeLocalName(curElement);");
+        utils.appendLine("var anyQName = '{' + anyURI + '}' + anyLocalPart;");
+        utils.appendLine("cxfjsutils.trace('any match: ' + anyQName);"); 
         utils.appendLine("anyMatched = matcher.match(anyURI, anyLocalPart)");
+        utils.appendLine("cxfjsutils.trace(' --> ' + anyMatched);"); 
+
         utils.endBlock(); // curElement != null
         
         utils.startIf("anyMatched"); // if match
         utils.appendLine("anyDeserializer = "
-                         + "cxfjsutils.interfaceObject.globalElementDeserializers[anyURI];");
+                         + "cxfjsutils.interfaceObject.globalElementDeserializers[anyQName];");
+        utils.appendLine("cxfjsutils.trace(' deserializer: ' + anyDeserializer);");
         utils.startIf("anyDeserializer"); // if complex/serializer function
         utils.appendLine("var anyValue = anyDeserializer(cxfjsutils, curElement);");
         utils.appendElse(); // else complex/serializer function
@@ -530,8 +535,8 @@
         utils.endBlock(); // match/non-match.
         utils.endBlock(); // while
 
-        utils.appendLine("var anyHolder = new org_apache_cxf_any_holder(anyURI, anyObject);");
-        utils.appendLine("this._" + itemInfo.getJavascriptName() + " = anyHolder;");
+        utils.appendLine("var anyHolder = new org_apache_cxf_any_holder(anyURI, anyLocalPart, anyValue);");
+        utils.appendLine("newobject.setAny(anyHolder);");
     }
 
     private void deserializeElement(XmlSchemaComplexType type, XmlSchemaObject thing) {

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=606655&r1=606654&r2=606655&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 17:40:23 2007
@@ -71,6 +71,7 @@
     var attributes = elementNode.attributes;
     if ((attributes!=null) && (attributes.length > 0)) {
         for (var x=0; x<attributes.length; x++) {
+            var attributeNodeName = attributes.item(x).nodeName;
             var attributeNamespacePrefix = org_apache_cxf_getPrefix(attributes.item(x).nodeName);
             var attributeNamespaceSuffix = org_apache_cxf_getLocalName(attributes.item(x).nodeName);
 
@@ -88,8 +89,8 @@
 
 function org_apache_cxf_get_node_namespaceURI(elementNode) 
 {
-	var prefix = org_apache_cxf_get_prefix(elementNode.nodeName);
-	return org_apache_cxf_geNamespaceURI(elementNode, prefix);
+	var prefix = org_apache_cxf_getPrefix(elementNode.nodeName);
+	return org_apache_cxf_getNamespaceURI(elementNode, prefix);
 }
 
 CxfApacheOrgUtil.prototype.getElementNamespaceURI = org_apache_cxf_get_node_namespaceURI;
@@ -109,7 +110,7 @@
 
 function org_apache_cxf_any_ns_matcher_match(namespaceURI, localName)
 {
-	switch(style) {
+	switch(this.style) {
 		// should this match local elements?
 		case org_apache_cxf_any_ns_matcher.ANY:
 			return true;
@@ -134,11 +135,6 @@
 }
 
 org_apache_cxf_any_ns_matcher.prototype.match = org_apache_cxf_any_ns_matcher_match; 
-
-
-
-
-
 
 function org_apache_cxf_getPrefix(tagName)
 {

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=606655&r1=606654&r2=606655&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 17:40:23 2007
@@ -23,6 +23,7 @@
 
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.javascript.JavascriptTestUtilities.JSRunnable;
+import org.apache.cxf.javascript.JavascriptTestUtilities.Notifier;
 import org.apache.cxf.javascript.fortest.AnyImpl;
 import org.junit.Before;
 import org.junit.Test;
@@ -82,6 +83,33 @@
         testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
             public Void run(Context context) {
                 return acceptOneChalk(context);
+            }
+        });
+    }
+    
+    private Void returnAny1(Context context) {
+        Notifier notifier = 
+            testUtilities.rhinoCallConvert("testAny1ToClientChalk", Notifier.class, 
+                                           testUtilities.javaToJS(endpoint.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 String
+        String chalk = (String)testUtilities.rhinoEvaluate("globalResponseObject._any.object._chalk");
+        assertEquals("dover", chalk);
+        return null;
+    }
+    
+    @Test
+    public void callReturnAny1() throws Exception {
+        testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
+            public Void run(Context context) {
+                return returnAny1(context);
             }
         });
     }

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java?rev=606655&r1=606654&r2=606655&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java Sun Dec 23 17:40:23 2007
@@ -154,6 +154,7 @@
         }
         JsSimpleDomNode.register(rhinoScope);
         JsSimpleDomParser.register(rhinoScope);
+        JsNamedNodeMap.register(rhinoScope);
         JsXMLHttpRequest.register(rhinoScope);
     }
 

Added: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsNamedNodeMap.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsNamedNodeMap.java?rev=606655&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsNamedNodeMap.java (added)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsNamedNodeMap.java Sun Dec 23 17:40:23 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.javascript;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.w3c.dom.NamedNodeMap;
+
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Scriptable;
+import org.mozilla.javascript.ScriptableObject;
+
+/**
+ * 
+ */
+public class JsNamedNodeMap extends ScriptableObject {
+    
+    private NamedNodeMap wrappedMap;
+    
+    public JsNamedNodeMap() {
+        // just to make Rhino happy.
+    }
+    
+    @Override
+    public String getClassName() {
+        return "NamedNodeMap";
+    }
+    
+    public static void register(ScriptableObject scope) {
+        try {
+            ScriptableObject.defineClass(scope, JsNamedNodeMap.class);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        } catch (InstantiationException e) {
+            throw new RuntimeException(e);
+        } catch (InvocationTargetException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /** * @return Returns the wrappedMap.
+     */
+    public NamedNodeMap getWrappedMap() {
+        return wrappedMap;
+    }
+
+    /**
+     * @param wrappedMap The wrappedMap to set.
+     */
+    public void setWrappedMap(NamedNodeMap wrappedMap) {
+        this.wrappedMap = wrappedMap;
+    }
+    
+    // Rhino won't let us use a constructor.
+    void initialize(NamedNodeMap map) {
+        wrappedMap = map;
+    }
+    
+    public static JsNamedNodeMap wrapMap(Scriptable scope, NamedNodeMap map) {
+        Context cx = Context.enter();
+        JsNamedNodeMap newObject = (JsNamedNodeMap)cx.newObject(scope, "NamedNodeMap");
+        newObject.initialize(map);
+        return newObject;
+    }
+
+    // CHECKSTYLE:OFF
+    
+    public int jsGet_length() {
+        return wrappedMap.getLength();
+    }
+    
+    public Object jsFunction_getNamedItem(String name) {
+        return JsSimpleDomNode.wrapNode(getParentScope(), wrappedMap.getNamedItem(name));
+    }
+    
+    public Object jsFunction_getNamedItemNS(String uri, String local) {
+        return JsSimpleDomNode.wrapNode(getParentScope(), wrappedMap.getNamedItemNS(uri, local));
+    }
+
+    public Object jsFunction_item(int index) {
+        return JsSimpleDomNode.wrapNode(getParentScope(), wrappedMap.item(index));
+    }
+    
+    // don't implement the 'modify' APIs.
+}

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

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

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsSimpleDomNode.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsSimpleDomNode.java?rev=606655&r1=606654&r2=606655&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsSimpleDomNode.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JsSimpleDomNode.java Sun Dec 23 17:40:23 2007
@@ -36,9 +36,11 @@
 public class JsSimpleDomNode extends ScriptableObject {
     private Node wrappedNode;
     private boolean childrenWrapped;
+    private boolean attributesWrapped;
     private JsSimpleDomNode previousSibling;
     private JsSimpleDomNode nextSibling;
     private JsSimpleDomNode[] children;
+    private JsNamedNodeMap attributes;
 
     /**
      * Only exists to make Rhino happy. Should never be used.
@@ -92,6 +94,11 @@
         return previousSibling; 
     }
     
+    public Object jsGet_parentNode() {
+        // risk errors in object equality ...
+        return wrapNode(this, wrappedNode.getParentNode());
+    }
+    
     public int jsGet_nodeType() {
         return wrappedNode.getNodeType();
     }
@@ -100,6 +107,10 @@
         return wrappedNode.getNodeValue();
     }
     
+    public String jsGet_nodeName() {
+        return wrappedNode.getNodeName();
+    }
+    
     // in a more complete version of this, we'd use a different object type to wrap documents.
     public Object jsGet_documentElement() {
         if(9 /* Document */ != wrappedNode.getNodeType()) {
@@ -115,6 +126,11 @@
         return children;
     }
     
+    public Object jsGet_attributes() {
+        establishAttributes();
+        return attributes;
+    }
+    
     public String jsFunction_getAttributeNS(String namespaceURI, String localName) {
         NamedNodeMap attributes = wrappedNode.getAttributes();
         Node attrNode = attributes.getNamedItemNS(namespaceURI, localName);
@@ -140,6 +156,10 @@
     //CHECKSTYLE:ON
     
     public static JsSimpleDomNode wrapNode(Scriptable scope, Node node) {
+        if (node == null) {
+            return null;
+        }
+        
         Context cx = Context.enter();
         JsSimpleDomNode newObject = (JsSimpleDomNode)cx.newObject(scope, "Node");
         newObject.initialize(node, null);
@@ -172,6 +192,14 @@
                 children = new JsSimpleDomNode[0];
             }
             childrenWrapped = true;
+        }
+    }
+    
+    private void establishAttributes() {
+        if (!attributesWrapped) {
+            NamedNodeMap nodeAttributes = wrappedNode.getAttributes();
+            attributes = JsNamedNodeMap.wrapMap(getParentScope(), nodeAttributes);
+            attributesWrapped = true;
         }
     }
 

Modified: incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties?rev=606655&r1=606654&r2=606655&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties Sun Dec 23 17:40:23 2007
@@ -23,7 +23,7 @@
 .level= INFO
 java.util.logging.ConsoleHandler.level = FINEST
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-#org.apache.cxf.javascript.JavascriptTestUtilities.level=FINEST
+#org.apache.cxf.javascript.JavascriptTestUtilities.level=FINE
 
 
 

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=606655&r1=606654&r2=606655&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 17:40:23 2007
@@ -48,3 +48,30 @@
 	service.acceptAny1(param);
 }
 
+function errorCallback(httpStatus, httpStatusText) 
+{
+    org_apache_cxf_trace.trace("error");
+	globalErrorStatus = httpStatus;
+	globalStatusText = httpStatusText;
+	globalNotifier.notify();
+}
+
+function any1ToClientSuccessCallback(responseObject) 
+{
+    org_apache_cxf_trace.trace("any1ToClient success");
+	globalResponseObject = responseObject;
+	globalNotifier.notify();
+}
+
+function testAny1ToClientChalk(url)
+{
+	resetGlobals();
+	globalNotifier = new org_apache_cxf_notifier();
+	var service = new cxf_apache_org_jstest_any_AcceptAny();
+	service.url = url;
+	
+	var dummyParam = new cxf_apache_org_jstest_types_any_returnAny1();
+	service.url = url;
+	service.returnAny1(any1ToClientSuccessCallback, errorCallback, dummyParam);
+	return globalNotifier; 
+}
\ No newline at end of file