Author: simoneg
Date: Wed Feb 16 02:15:09 2011
New Revision: 1071124

URL: http://svn.apache.org/viewvc?rev=1071124&view=rev
Log:
Fix for cases where multiple producers are created inside the same handler 
method

Added:
    
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/integrations/MainProducers.aj
   (with props)
Modified:
    
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/webdata/HtmlProducerAjaxInfo.java
    
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js

Added: 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/integrations/MainProducers.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/integrations/MainProducers.aj?rev=1071124&view=auto
==============================================================================
--- 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/integrations/MainProducers.aj
 (added)
+++ 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/integrations/MainProducers.aj
 Wed Feb 16 02:15:09 2011
@@ -0,0 +1,21 @@
+package org.apache.magma.website.autoajax.integrations;
+
+import org.apache.magma.website.HandlerSetup;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.WebHandler;
+
+public aspect MainProducers {
+
+       private boolean HtmlProducer.main;
+       
+       public boolean HtmlProducer.isMain() {
+               return this.main;
+       }
+       
+       after() returning(HtmlProducer prod) :
+               HandlerSetup.doMethod(WebHandler) {
+               if (prod == null) return;
+               prod.main = true;
+       }
+       
+}

Propchange: 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/integrations/MainProducers.aj
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/webdata/HtmlProducerAjaxInfo.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/webdata/HtmlProducerAjaxInfo.java?rev=1071124&r1=1071123&r2=1071124&view=diff
==============================================================================
--- 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/webdata/HtmlProducerAjaxInfo.java
 (original)
+++ 
labs/magma/trunk/website-autoajax/src/main/java/org/apache/magma/website/autoajax/webdata/HtmlProducerAjaxInfo.java
 Wed Feb 16 02:15:09 2011
@@ -27,11 +27,19 @@ public abstract class HtmlProducerAjaxIn
        }
        
        protected String produceJson() {
-               return "\"localurl\":\"" + this.getLocalurl() + "\", ";
+               if (producer.isMain()) 
+                       return "\"localurl\":\"" + this.getLocalurl() + "\", ";
+               return "";
        }
        
        public String getId() {
-               return Integer.toHexString(getLocalurl().hashCode() + 
getClass().getName().hashCode()) + "/" + 
Integer.toHexString(getAdditionalHash());
+               return Integer.toHexString(
+                               getLocalurl().hashCode() 
+                               + getClass().getName().hashCode()
+                               + (producer.isMain() ? 1 : 0)
+                               ) 
+                               + "/" 
+                               + Integer.toHexString(getAdditionalHash());
        }
        
        @Override

Modified: 
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js?rev=1071124&r1=1071123&r2=1071124&view=diff
==============================================================================
--- 
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js
 (original)
+++ 
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js
 Wed Feb 16 02:15:09 2011
@@ -145,6 +145,33 @@ magma.autoajax = new function() {
                }               
        }
        
+       /**
+        * Find an element given the exact id
+        */
+       this.getElement = function(id) {
+               return this.state.elements[id];
+       }
+       
+       /**
+        * Find an element given the exact id, but if not found search an 
element
+        * having the first segment (before the slash) equal to the current, 
+        * provided that it's only one possible element.
+        */
+       this.getFuzzyElement = function(id) {
+               var ret = this.getElement(id);
+               if (ret) return ret;
+               var io = id.indexOf('/');
+               if (io < 0) return;
+               id = id.substr(0,io);
+               for (var acid in this.state.elements) {
+                       if (acid.match("^" + id)) {
+                               if (ret) return;
+                               ret = this.state.elements[acid];
+                       }
+               }
+               return ret;
+       }
+       
        this.findStatesByUrl = function(url) {
                var ret = new Array();
                for (id in this.state.elements) {
@@ -294,7 +321,7 @@ magma.autoajax = new function() {
         * in the state.
         */
        this.performRemove = function(stateId) {
-               var stategrp = this.state.elements[stateId];
+               var stategrp = this.getFuzzyElement(stateId);
                if (!stategrp) {
                        console.log("Stategroup (id,grp) is undefined ", 
stateId, stategrp);
                        return;
@@ -317,7 +344,7 @@ magma.autoajax = new function() {
        }
        
        this.performAdd = function(position, relative, what) {
-               var stategrp = this.state.elements[relative];
+               var stategrp = this.getFuzzyElement(relative);
                if (!stategrp) {
                        console.log("Stategroup (id,grp) is undefined ", 
relative, stategrp);
                        return;
@@ -342,7 +369,7 @@ magma.autoajax = new function() {
        }
 
        this.performRenew = function(which, what) {
-               var stategrp = this.state.elements[which];
+               var stategrp = this.getFuzzyElement(which);
                if (!stategrp) {
                        console.log("Stategroup (id,grp) is undefined ", which, 
stategrp);
                        return;
@@ -375,8 +402,8 @@ magma.autoajax = new function() {
        }
 
        this.performMove = function(id1, relation, id2) {
-               var stategrp1 = this.state.elements[id1];
-               var stategrp2 = this.state.elements[id2];
+               var stategrp1 = this.getFuzzyElement(id1);
+               var stategrp2 = this.getFuzzyElement(id2);
                
                if (!stategrp1 || !stategrp2) {
                        console.log("One of stategroups (id1,1,id2,2) is 
undefined ", id1, stategrp1, id2, stategrp2);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to