cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bimargul...@apache.org
Subject svn commit: r603809 - in /incubator/cxf/trunk/rt/javascript/src: main/java/org/apache/cxf/javascript/service/ test/java/org/apache/cxf/javascript/ test/java/org/apache/cxf/javascript/fortest/ test/java/org/apache/cxf/javascript/hwdemo/ test/resources/ ...
Date Thu, 13 Dec 2007 03:45:11 GMT
Author: bimargulies
Date: Wed Dec 12 19:45:11 2007
New Revision: 603809

URL: http://svn.apache.org/viewvc?rev=603809&view=rev
Log:
Fix anonymous type problem with explicit @WebReturn on a wrapped method.

Modified:
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/Messages.properties
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/GreeterClientTest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/RPCClientTest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/hwdemo/GreeterImpl.java
    incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties
    incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/GreeterTests.js

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/Messages.properties?rev=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/Messages.properties
(original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/service/Messages.properties
Wed Dec 12 19:45:11 2007
@@ -26,4 +26,5 @@
 MISSING_SERVICE_SCHEMA= Target namespace {0} specified for service {1} is not defined in
the service model.
 MISSING_WRAPPER_TYPE= Part {2} in operation {1} of {0} has no schema type.
 IMPOSSIBLE_OUTPUT_TYPE= Output message {0} has type represented by {1}.
-ANONYMOUS_OUTPUT_TYPE= Output message {0} has anonymous type.
\ No newline at end of file
+ANONYMOUS_OUTPUT_TYPE= Output message {0} has anonymous type.
+NON_ELEMENT_ANON_TYPE_PART= Input message {0} has wrapped part {1} that has no element and
no named type.
\ No newline at end of file

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=603809&r1=603808&r2=603809&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
Wed Dec 12 19:45:11 2007
@@ -386,7 +386,6 @@
         XmlSchemaType type;
         
         if (isRPC) {
-            // in the RPC case, there is an extra level of element for the output message.
             utils.appendLine("cxfjsutils.trace('rpc element: ' + cxfjsutils.traceElementName(partElement));");
             utils.appendLine("partElement = cxfjsutils.getFirstElementChild(partElement);");
             utils.appendLine("cxfjsutils.trace('rpc element: ' + cxfjsutils.traceElementName(partElement));");
@@ -402,13 +401,15 @@
             if (type instanceof XmlSchemaComplexType) {
                 // if there are no response items, the type is likely to have no name and
no particle.
                 XmlSchemaComplexType complexType = (XmlSchemaComplexType)type;
-                // if it is anonymous but not empty, we're in trouble here, as we have no
way to talk
-                // about it. The code in getElementsForParts should have dealt with this.
-                String typeObjectName = null;
+                QName nameToDeserialize = null; 
                 if (null == complexType.getName()) {
-                    throw new RuntimeException("anonymous type unexpected.");
+                    nameToDeserialize = element.getElement().getQName();
+                } else {
+                    nameToDeserialize = complexType.getQName();
                 }
-                typeObjectName = nameManager.getJavascriptName(complexType.getQName());
+                
+                String typeObjectName = nameManager.getJavascriptName(nameToDeserialize);
+                
                 utils
                     .appendLine("var returnObject = " 
                                 + typeObjectName 
@@ -592,7 +593,8 @@
             }
             
             boolean empty = isEmptyType(type, diagnosticName);
-            if (!empty && type instanceof XmlSchemaComplexType && type.getName()
== null) {
+            // In the bare case, if the type is nameless but contains but one element, concentrate
on that.
+            if (!empty && type instanceof XmlSchemaComplexType && type.getName()
== null && !isWrapped) {
                 XmlSchemaElement betterElement = getBuriedElement((XmlSchemaComplexType)
type,
                                                                   diagnosticName);
                 if (betterElement != null) {
@@ -660,7 +662,14 @@
             
             if (inputWrapperComplexType.getQName() == null) {
                 // we should be ignoring this for zero-argument wrappers.
-                inputWrapperClassName = nameManager.getJavascriptName(inputWrapperPartInfo.getName());
+                if (inputWrapperPartInfo.isElement()) {
+                    inputWrapperClassName = nameManager.
+                        getJavascriptName(inputWrapperPartInfo.getElementQName());
+                } else {
+                    unsupportedConstruct("NON_ELEMENT_ANON_TYPE_PART", 
+                                         inputWrapperPartInfo.getMessageInfo().getName(),
+                                         inputWrapperPartInfo.getName());
+                }
             } else {
                 inputWrapperClassName = nameManager.getJavascriptName(inputWrapperComplexType.getQName());
             }

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/GreeterClientTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/GreeterClientTest.java?rev=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/GreeterClientTest.java
(original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/GreeterClientTest.java
Wed Dec 12 19:45:11 2007
@@ -21,8 +21,12 @@
 
 import java.io.File;
 import java.net.URL;
+
+import org.apache.cxf.javascript.JavascriptTestUtilities.JSRunnable;
+import org.apache.cxf.javascript.JavascriptTestUtilities.Notifier;
 import org.junit.Before;
 import org.junit.Test;
+import org.mozilla.javascript.Context;
 import org.springframework.context.support.GenericApplicationContext;
 
 /**
@@ -48,12 +52,34 @@
                    true);
     }
     
-    @Test
-    public void testCallSayHi() throws Exception {
+    private Void sayHiCaller(Context context) {
+        Notifier notifier = 
+            testUtilities.rhinoCallConvert("sayHiTest", 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 inside of an object, since there's an @WebResponse
+        String responseObject = testUtilities.rhinoEvaluateConvert("globalResponseObject.getResponseType()",

+                                                                   String.class);
+        assertEquals("Bonjour", responseObject);
+        return null;
     }
     
-    
+    @Test
+    public void testCallSayHi() throws Exception {
+        testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
+            public Void run(Context context) {
+                return sayHiCaller(context);
+            }
+        });
+    }
+
     public String getStaticResourceURL() throws Exception {
         File staticFile = new File(this.getClass().getResource("test.html").toURI());
         staticFile = staticFile.getParentFile();

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/RPCClientTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/RPCClientTest.java?rev=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/RPCClientTest.java
(original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/RPCClientTest.java
Wed Dec 12 19:45:11 2007
@@ -83,7 +83,6 @@
 
         // this method returns a String.
         String responseObject = testUtilities.rhinoEvaluateConvert("globalResponseObject",
String.class);
-        // there is no response, this thing returns 'void'
         assertEquals("String Parameter", responseObject);
         SimpleRPCImpl impl = getBean(SimpleRPCImpl.class, "rpc-service");
         assertEquals("String Parameter", impl.getLastString());

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java?rev=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
(original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
Wed Dec 12 19:45:11 2007
@@ -28,7 +28,7 @@
  */
 @WebService(endpointInterface = "org.apache.cxf.javascript.fortest.SimpleDocLitWrapped",
             targetNamespace = "uri:org.apache.cxf.javascript.fortest")
-//@Features(features = "org.apache.cxf.feature.LoggingFeature")   
+@org.apache.cxf.feature.Features(features = "org.apache.cxf.feature.LoggingFeature") 
 public class SimpleDocLitWrappedImpl implements SimpleDocLitWrapped {
     
     private String lastString;

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/hwdemo/GreeterImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/hwdemo/GreeterImpl.java?rev=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/hwdemo/GreeterImpl.java
(original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/hwdemo/GreeterImpl.java
Wed Dec 12 19:45:11 2007
@@ -29,7 +29,7 @@
 @javax.jws.WebService(portName = "SoapPort", serviceName = "SOAPService", 
                       targetNamespace = "http://apache.org/hello_world_soap_http", 
                       endpointInterface = "org.apache.hello_world_soap_http.Greeter")
-                  
+@org.apache.cxf.feature.Features(features = "org.apache.cxf.feature.LoggingFeature")    
 
 public class GreeterImpl implements Greeter {
 
     private static final Logger LOG = LogUtils.getL7dLogger(GreeterImpl.class);
@@ -39,8 +39,6 @@
      */
     public String greetMe(String me) {
         LOG.info("Executing operation greetMe");
-        System.out.println("Executing operation greetMe");
-        System.out.println("Message received: " + me + "\n");
         return "Hello " + me;
     }
     
@@ -49,8 +47,6 @@
      */
     public void greetMeOneWay(String me) {
         LOG.info("Executing operation greetMeOneWay");
-        System.out.println("Executing operation greetMeOneWay\n");
-        System.out.println("Hello there " + me);
     }
 
     /* (non-Javadoc)
@@ -58,7 +54,6 @@
      */
     public String sayHi() {
         LOG.info("Executing operation sayHi");
-        System.out.println("Executing operation sayHi\n");
         return "Bonjour";
     }
     
@@ -67,9 +62,6 @@
         faultDetail.setMajor((short)2);
         faultDetail.setMinor((short)1);
         LOG.info("Executing operation pingMe, throwing PingMeFault exception");
-        System.out.println("Executing operation pingMe, throwing PingMeFault exception\n");
         throw new PingMeFault("PingMeFault raised by server", faultDetail);
     }
-
-    
 }

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=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/logging.properties Wed Dec 12 19:45:11
2007
@@ -23,10 +23,7 @@
 .level= INFO
 java.util.logging.ConsoleHandler.level = FINEST
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-#org.apache.cxf.javascript.service.ServiceJavascriptBuilder.level=FINEST
-#org.apache.cxf.javascript.types.SchemaJavascriptBuilder.level=FINEST
-#org.apache.cxf.javascript.JavascriptTestUtilities.level=FINE
-#org.apache.cxf.javascript.JsXMLHttpRequest.level = FINE
-#org.apache.cxf.javascript.service.DocLitWrappedTest.level=FINE
+#org.apache.cxf.javascript.JavascriptTestUtilities.level=FINEST
+
 
 

Modified: incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/GreeterTests.js
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/GreeterTests.js?rev=603809&r1=603808&r2=603809&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/GreeterTests.js
(original)
+++ incubator/cxf/trunk/rt/javascript/src/test/resources/org/apache/cxf/javascript/GreeterTests.js
Wed Dec 12 19:45:11 2007
@@ -21,3 +21,49 @@
 {
  	var assert = new Assert(explanation); // this will throw out in Java.
 }
+
+var globalNotifier = null;
+var globalErrorStatus = null;
+var globalErrorStatusText = null;
+var globalResponseObject = null;
+
+function resetGlobals() {
+	globalNotifier = null;
+	globalErrorStatus = null;
+	globalErrorStatusText = null;
+	globalResponseObject = null;
+}
+
+function testErrorCallback(httpStatus, httpStatusText) 
+{
+    org_apache_cxf_trace.trace("test error");
+	globalErrorStatus = httpStatus;
+	globalStatusText = httpStatusText;
+	globalNotifier.notify();
+}
+
+// Because there is an explicit response wrapper declared, we have a JavaScript
+// object here that wraps up the simple 'string'. It is easier to validate it
+// from Java, I think.
+function testSuccessCallback(responseObject) 
+{
+    org_apache_cxf_trace.trace("test success");
+	globalResponseObject = responseObject;
+	globalNotifier.notify();
+}
+
+function sayHiTest(url)
+{
+	org_apache_cxf_trace.trace("Enter sayHi.");
+	resetGlobals();
+	globalNotifier = new org_apache_cxf_notifier();
+	
+	var intf;
+    intf = new apache_org_hello_world_soap_http_Greeter();
+	  
+	intf.url = url;
+    intf.sayHi(testSuccessCallback, testErrorCallback);
+    // Return the notifier as a convenience to the Java code.
+	return globalNotifier;
+}
+



Mime
View raw message