[seam-commits] Seam SVN: r11760 - in modules/remoting/trunk/src/main: java/org/jboss/seam/remoting/model and 2 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Sun Dec 6 08:24:46 EST 2009


Author: shane.bryzak at jboss.com
Date: 2009-12-06 08:24:44 -0500 (Sun, 06 Dec 2009)
New Revision: 11760

Added:
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ChangeSet.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/Model.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ModelRegistry.java
Modified:
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/AnnotationsParser.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BagWrapper.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BeanWrapper.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/DateWrapper.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/NumberWrapper.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/StringWrapper.java
   modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/Wrapper.java
   modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js
Log:
flesh out the fetch model request method, fix some compiler warnings


Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/AnnotationsParser.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/AnnotationsParser.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/AnnotationsParser.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -71,6 +71,7 @@
       }
    }
    
+   @SuppressWarnings("all")
    private class AnyQualifier extends AnnotationLiteral<Any> implements Any {};
 
    private Class<?> beanType;

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -42,10 +42,8 @@
    private static final byte[] CONTEXT_TAG_OPEN = "<context>".getBytes();
    private static final byte[] CONTEXT_TAG_CLOSE = "</context>".getBytes();
 
-   @Inject
-   BeanManager beanManager;
-   @Inject
-   Conversation conversation;
+   @Inject BeanManager beanManager;
+   @Inject Conversation conversation;
 
    /**
     * The entry point for handling a request.
@@ -81,6 +79,12 @@
       Document doc = xmlReader.read(new StringReader(requestData));
       final Element env = doc.getRootElement();
       final RequestContext ctx = unmarshalContext(env);
+      
+      if (!ctx.getConversationId().isEmpty())
+      { 
+         // TODO restore the conversation if there is a conversation ID in the context
+         //conversation.
+      }
 
       // Extract the calls from the request
       List<Call> calls = unmarshalCalls(env);

Added: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ChangeSet.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ChangeSet.java	                        (rev 0)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ChangeSet.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -0,0 +1,6 @@
+package org.jboss.seam.remoting.model;
+
+public class ChangeSet
+{
+
+}

Added: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/Model.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/Model.java	                        (rev 0)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/Model.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -0,0 +1,42 @@
+package org.jboss.seam.remoting.model;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+
+public class Model implements Serializable
+{
+   private static final long serialVersionUID = 8318288750036758325L;
+   
+   private BeanManager beanManager;
+   private String id;
+   private Map<Integer,Object> refs;
+   
+   private Set<Bean<?>> beans;
+   
+   public Model(BeanManager beanManager)
+   {
+      this.beanManager = beanManager;
+      id = UUID.randomUUID().toString();
+      refs = new HashMap<Integer,Object>();
+      beans = new HashSet<Bean<?>>();
+   }
+   
+   public String getId()
+   {
+      return id;
+   }
+   
+   public void addBean()
+   
+   public void applyChanges(Set<ChangeSet> delta)
+   {
+      
+   }
+}

Added: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ModelRegistry.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ModelRegistry.java	                        (rev 0)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/model/ModelRegistry.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -0,0 +1,37 @@
+package org.jboss.seam.remoting.model;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.enterprise.context.ConversationScoped;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
+
+ at ConversationScoped
+public class ModelRegistry implements Serializable
+{
+   private static final long serialVersionUID = -2952670948046596460L;
+   
+   @Inject BeanManager beanManager;
+   private Map<String,Model> models;
+   
+   public ModelRegistry()
+   {
+      models = new HashMap<String,Model>();
+   }
+   
+   public Model createModel()
+   {
+      Model model = new Model(beanManager);
+      models.put(model.getId(), model);
+      return model;
+   }
+   
+   public Model getModel(String id)
+   {
+      return models.get(id);
+   }
+   
+   
+}

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BagWrapper.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BagWrapper.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BagWrapper.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -36,6 +36,7 @@
    private static final byte[] ELEMENT_TAG_OPEN = "<element>".getBytes();
    private static final byte[] ELEMENT_TAG_CLOSE = "</element>".getBytes();
 
+   @SuppressWarnings("unchecked")
    public void marshal(OutputStream out) throws IOException
    {
       out.write(BAG_TAG_OPEN);
@@ -50,12 +51,12 @@
          }
       }
 
-      Collection vals = null;
+      Collection<Object> vals = null;
 
       // If the value is an array, convert it to a Collection
       if (value.getClass().isArray())
       {
-         vals = new ArrayList();
+         vals = new ArrayList<Object>();
          for (int i = 0; i < Array.getLength(value); i++)
             vals.add(Array.get(value, i));
       } else if (Collection.class.isAssignableFrom(value.getClass()))
@@ -133,7 +134,7 @@
       return value;
    }
 
-   private Class getConcreteClass(Class c)
+   private Class<?> getConcreteClass(Class<?> c)
    {
       if (c.isInterface())
       {
@@ -154,7 +155,7 @@
     *           Class
     * @return ConversionScore
     */
-   public ConversionScore conversionScore(Class cls)
+   public ConversionScore conversionScore(Class<?> cls)
    {
       // There's no such thing as an exact match for a bag, so we'll just look
       // for

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BeanWrapper.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BeanWrapper.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/BeanWrapper.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -314,7 +314,7 @@
       out.write(BEAN_CLOSE_TAG);
    }
 
-   public ConversionScore conversionScore(Class cls)
+   public ConversionScore conversionScore(Class<?> cls)
    {
       if (cls.equals(value.getClass()))
          return ConversionScore.exact;

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/DateWrapper.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/DateWrapper.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/DateWrapper.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -86,7 +86,7 @@
       return value;
    }
 
-   public ConversionScore conversionScore(Class cls)
+   public ConversionScore conversionScore(Class<?> cls)
    {
       if (Date.class.isAssignableFrom(cls)
             || Calendar.class.isAssignableFrom(cls))

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/NumberWrapper.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/NumberWrapper.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/NumberWrapper.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -94,7 +94,7 @@
     *           Class
     * @return ConversionScore
     */
-   public ConversionScore conversionScore(Class cls)
+   public ConversionScore conversionScore(Class<?> cls)
    {
       if (cls.equals(Integer.class) || cls.equals(Integer.TYPE)
             || cls.equals(Long.class) || cls.equals(Long.TYPE)

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/StringWrapper.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/StringWrapper.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/StringWrapper.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -217,12 +217,13 @@
       }
    }
 
-   public ConversionScore conversionScore(Class cls)
+   @SuppressWarnings("unchecked")
+   public ConversionScore conversionScore(Class<?> cls)
    {
       if (cls.equals(String.class) || StringBuffer.class.isAssignableFrom(cls))
          return ConversionScore.exact;
 
-      for (Class c : COMPATIBLE_CLASSES)
+      for (Class<?> c : COMPATIBLE_CLASSES)
       {
          if (cls.equals(c))
             return ConversionScore.compatible;
@@ -234,7 +235,7 @@
          {
             String elementValue = URLDecoder.decode(element.getStringValue(),
                   DEFAULT_ENCODING);
-            Enum.valueOf(cls, elementValue);
+            Enum.valueOf((Class<? extends Enum>) cls, elementValue);
             return ConversionScore.compatible;
          } catch (IllegalArgumentException ex)
          {

Modified: modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/Wrapper.java
===================================================================
--- modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/Wrapper.java	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/java/org/jboss/seam/remoting/wrapper/Wrapper.java	2009-12-06 13:24:44 UTC (rev 11760)
@@ -67,5 +67,5 @@
    * 2 - Param is this exact type
    *
    */
-  public ConversionScore conversionScore(Class cls);
+  public ConversionScore conversionScore(Class<?> cls);
 }

Modified: modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js
===================================================================
--- modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js	2009-12-05 18:13:20 UTC (rev 11759)
+++ modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js	2009-12-06 13:24:44 UTC (rev 11760)
@@ -71,6 +71,7 @@
 
 Seam.Remoting.PATH_EXECUTE = "/execute";
 Seam.Remoting.PATH_SUBSCRIPTION = "/subscription";
+Seam.Remoting.PATH_MODEL = "/model";
 Seam.Remoting.PATH_POLL = "/poll";
 
 Seam.Remoting.encodedSessionId = Seam.Remoting.extractEncodedSessionId(window.location.href);
@@ -757,6 +758,39 @@
 
 /* Remote Model API */
 
+Seam.Remoting.Action = function() {
+	this.beanType = null;
+	this.qualifiers = null;
+	this.method = null;
+	this.params = new Array();
+	this.expression = null;
+		
+	Seam.Remoting.Action.prototype.setBeanType = function(beanType) {
+		this.beanType = beanType;
+		return this;
+  }
+  
+  Seam.Remoting.Action.prototype.setQualifiers = function(qualifiers) {
+  	this.qualifiers = qualifiers;
+  	return this;
+  }
+  
+  Seam.Remoting.Action.prototype.setMethod = function(method) { 
+  	this.method = method;
+  	return this;
+  }
+  
+  Seam.Remoting.Action.prototype.addParam = function(param) {
+  	this.params.push(param);
+  	return this;
+  }
+  
+  Seam.Remoting.Action.prototype.setExpression = function(expr) {
+  	this.expression = expr;
+    return this;
+  }
+}
+
 Seam.Remoting.Model = function() {
   this.expressions = new Array();
   this.beans = new Array();
@@ -765,21 +799,86 @@
 		this.expressions.push({alias: alias, expr: expr});
   }
   
-  Seam.Remoting.Model.prototype.addBean = function(alias, bean) {
+  Seam.Remoting.Model.prototype.addBean = function(alias, bean, property) {
     var q = null;
-    if (arguments.length > 2) {
+    if (arguments.length > 3) {
 	    q = new Array();
-	    for (var i = 1; i < arguments.length; i++) { 
+	    for (var i = 3; i < arguments.length; i++) { 
 	      q.push(arguments[i]);
 	    }
 	  }
-	  this.beans.push({alias: alias, bean: bean; qualifiers: q});
+	  this.beans.push({alias: alias, bean: bean, property: property, qualifiers: q});
   }
-
+  
   Seam.Remoting.Model.prototype.fetch = function(action) {
-  	
+  	var r = this.createFetchRequest(action);
+    var env = Seam.Remoting.createEnvelope(Seam.Remoting.createHeader(), r.data);
+    Seam.Remoting.pendingCalls.put(r.id, r);
+    Seam.Remoting.sendAjaxRequest(env, Seam.Remoting.PATH_MODEL, this.processFetchResponse, false);  	
   }
   
+  Seam.Remoting.Model.prototype.createFetchRequest = function(a) { // a = action
+    var callId = "" + Seam.Remoting.__callId++;
+    var d = "<model operation=\"fetch\" callId=\"" + callId + ">";
+    var refs = new Array();
+    
+    if (a) {
+      d += "<action>";
+      if (a.beanType) {
+        d += "<target>" + a.beanType + "</target>";
+        if (a.qualifiers) d += "<qualifiers>" + a.qualifiers + "</qualifiers>";
+        if (a.method) d += "<method>" + a.method + "</method>";
+        if (a.params.length > 0) {
+          d += "<params>";
+          for (var i = 0; i < a.params.length; i++) {
+            d += "<param>" + Seam.Remoting.serializeValue(a.params[i], null, refs) + "</param>";
+          }
+          d += "</params>";
+        }       
+      }
+      else if (a.expression) {
+        d += "<target>" + a.expression + "</target>";
+      }
+      d += "</action>";
+    }    
+    if (this.beans.length > 0) {
+      for (var i = 0; i < this.beans.length; i++) {
+        var b = this.beans[i];
+        d += "<bean alias=\"" + b.alias + "\"><name>" + b.name + "</name>";
+        if (b.qualifiers && b.qualifiers.length > 0) {
+          d += "<qualifiers>";
+          for (var j = 0; j < b.qualifiers.length; j++) {
+             d += (j > 0 ? "," : "") + b.qualifiers[j];
+          } 
+          d += "</qualifiers>";
+        }
+        d += "<property>" + b.property + "</property></bean>";        
+      }
+    }    
+    if (this.expressions.length > 0) {
+      for (var i = 0; i < this.expressions.length; i++) {
+        var e = this.expressions[i];
+        d += "<expression alias=\"" + e.alias + "\">" + e.expr + "</expression>";
+      } 
+    }
+    if (refs.length > 0) {
+      d += "<refs>";
+      for (var i = 0; i < refs.length; i++) {
+        d += "<ref id=\"" + i + "\">";
+        d += Seam.Remoting.serializeType(refs[i], refs);
+        d += "</ref>";
+      }
+      d += "</refs>";
+    }
+    d += "</model>";    
+    
+    return {data: d, id: callId};
+  }
+    
+  Seam.Remoting.Model.prototype.processFetchResponse = function(doc) {
+    
+  }  
+  
   Seam.Remoting.Model.prototype.applyUpdates = function(action) {
   	
   } 



More information about the seam-commits mailing list