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]