Hi all,

Regarding RPC backends, there is another point that I would like to raise to your attention. My use of RpcJava with latest Qooxdoo releases forced me to change the codebase to make it work. This is due to API change (e.g. qx.io.ScriptTransport removed in 1.0-beta1, after a deprecation period). Identifying and fixing the code is not a problem by itself, but how to maintain it, i.e. what should go into SVN ? If we check-in the change, it breaks pre-0.8 implementations, and if we don't, then it doesn't work with 1.0+.


I see 2 main options (variations could be made) :

* keep a single SVN branch (the trunk) but introduce an indirection through some strategy/delegation pattern to isolate the code that is tightly coupled to the Qooxdoo version of the client-side (the server-side JS generation). Then find a way to instanciate the good strategy based on the Qooxdoo version : - automatically : if there is a way for the client to send its Qooxdoo version when initiating the communication. This would enable support for heterogenous Qooxdoo clients within the same server. - by external configuration : at server startup (e.g. a servlet parameter for RpcJava, don't know for others). Easier but less flexible than the previous one, i.e. only 1 Qooxdoo version supported per server instance.

* setup a clean and uniform branching/tagging policy for contributions. This is true for RpxcXxx but somehow even more important for Qooxdoo contribs that are to be included in the build using the "contrib:/" URL scheme. Linking to a contrib trunk is dangerous, especially when the contribution is quickly evolving and follows the latest Qooxdoo API. This makes the builds of a Qooxdoo app not reproductible and a good branching/tagging policy would at least solve this problem.

BTW, find attached the SVN patch applied to my local RpcJava check-out to make it 1.0-beta1 compliant.

Best,
Vincent
Index: rpc/net/sf/qooxdoo/rpc/RpcServlet.java
===================================================================
--- rpc/net/sf/qooxdoo/rpc/RpcServlet.java      (revision 19559)
+++ rpc/net/sf/qooxdoo/rpc/RpcServlet.java      (working copy)
@@ -204,13 +204,15 @@
                                         propertyType));
                         } catch (Exception e) {
                             // try to instatiate a class of the supplied 
parameter
-                            System.out.println("***** setting '" + 
propertyName + "' to an instance of '" + initParamValue + "'");
+                            // System.out.println("***** setting '" + 
propertyName +
+                            // "' to an instance of '" + initParamValue + "'");
                             PropertyUtils.setSimpleProperty(inst, propertyName,
                                     getServiceInstance(session, 
initParamValue, null, null));
                         }
                     }
                 } else {
-                    System.out.println("***** property '" + propertyName + "' 
not matched");
+                  // System.out.println("***** property '" + propertyName +
+                  // "' not matched");
                 }
             }
 
@@ -269,7 +271,7 @@
     
     private String makeJavaScriptServerInfo(HttpServletRequest request) {
         return "if (!qx || !qx.core || !qx.core.ServerSettings) {" +
-                 "qx.OO.defineClass(\"qx.core.ServerSettings\");" +
+                 "qx.Class.define(\"qx.core.ServerSettings\");" +
                 "}" +
                 "qx.core.ServerSettings.serverPathPrefix = \"" + 
getContextURL(request) + "\";" +
                 "qx.core.ServerSettings.serverPathSuffix = \";jsessionid=" + 
request.getSession().getId() + "\";" +
@@ -407,7 +409,7 @@
                     //System.out.println("Requested session id: " + 
request.getRequestedSessionId());
                     String res = handleRPC(request, requestString);
                     
-                    
responseWriter.write("qx.io.remote.ScriptTransport._requestFinished(\"" +
+                    
responseWriter.write("qx.io.remote.transport.Script._requestFinished(\"" +
                             jsTransportId + "\", " + res + ");");
                 }
             } catch (Exception e) {
@@ -460,7 +462,7 @@
                     requestBuffer.append(readBuffer, 0, length);
                 }
                 String requestString = requestBuffer.toString();
-                System.out.println("Request string: " + requestString);
+                // System.out.println("Request string: " + requestString);
                 res = handleRPC(request, requestString);
             }
             
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to