You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/03/24 14:03:29 UTC

svn commit: r757771 - in /labs/magma/trunk: foundation-website/src/main/java/org/apache/magma/website/templating/ foundation-website/src/main/java/org/apache/magma/website/utils/ foundation-website/src/test/java/org/apache/magma/website/producers/ webs...

Author: simoneg
Date: Tue Mar 24 13:03:28 2009
New Revision: 757771

URL: http://svn.apache.org/viewvc?rev=757771&view=rev
Log:
LABS-321 : fixes in the URL rewriting system to support correct inline admin rewriting.

Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/TemplateData.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/producers/TestXmlProducer.java
    labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/AddInlineMenuMethod.aj
    labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/DirectlyToEditInInline.aj
    labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/InterceptWebMethods.aj
    labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/UseInlinedAdminTemplate.aj

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/TemplateData.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/TemplateData.java?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/TemplateData.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/templating/TemplateData.java Tue Mar 24 13:03:28 2009
@@ -24,6 +24,13 @@
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * Contains data gathered parsing an HTML template file.
+ *
+ * 
+ *
+ * @author Simone Gianni <si...@apache.org>
+ */
 public class TemplateData {
 
 	public List<String> zones = new ArrayList<String>();

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj Tue Mar 24 13:03:28 2009
@@ -1,37 +1,46 @@
 package org.apache.magma.website.utils;
 
+import org.apache.magma.basics.startup.CycleThreadLocal;
 import org.apache.magma.website.Producer;
 import org.apache.magma.website.HtmlProducer;
 import java.io.OutputStream;
+import java.io.Writer;
 import org.apache.magma.website.Head;
 
 public aspect MakeURLRewritingContextBased {
 
-	pointcut producing(URLRewritingStream stream, Producer prod) : execution(* Producer.produce(OutputStream)) && this(prod) && args(stream);
+	private CycleThreadLocal<URLRewritingStream> mystream = new CycleThreadLocal<URLRewritingStream>();
 	
-	before(URLRewritingStream stream, Producer prod) : producing(stream, prod) {
-		stream.pushBaseUrl(prod.getBasePath());
+	after(URLRewritingStream stream) : execution(URLRewritingStream.new(..)) && this(stream) {
+		mystream.set(stream);
 	}
 	
-	after(URLRewritingStream stream, Producer prod) : producing(stream, prod) {
-		stream.popBaseUrl();
+	pointcut producing(Producer prod) : 
+		(
+			execution(* Producer+.produce(OutputStream)) || 
+			execution(* HtmlProducer+.produce(Writer)) ||
+			execution(* HtmlProducer+.head(Head))
+		) && this(prod);
+	
+	before(Producer prod) : producing(prod) {
+		URLRewritingStream stream = mystream.get();
+		if (stream == null) return;
+		try {
+			stream.pushBaseUrl(prod.getBasePath());
+		} catch (Throwable e) {
+			return;
+		}
 	}
 	
-	pointcut heading(Head head, HtmlProducer prod) : execution(* HtmlProducer.head(Head)) && this(prod) && args(head);
-	
-	before(Head head, HtmlProducer prod) : heading(head, prod) {
-		OutputStream stream = head.getStream();
-		if (!(stream instanceof URLRewritingStream)) return;
-		((URLRewritingStream)stream).pushBaseUrl(prod.getBasePath());		
-	}
-	
-	after(Head head, HtmlProducer prod) : heading(head, prod) {
-		OutputStream stream = head.getStream();
-		if (!(stream instanceof URLRewritingStream)) return;
-		((URLRewritingStream)stream).popBaseUrl();		
-	}
-	
-	
-	
+	after(Producer prod) : producing(prod) {
+		try {
+			prod.getBasePath();
+		} catch (Throwable e) {
+			return;
+		}
+		URLRewritingStream stream = mystream.get();
+		if (stream == null) return;
+		stream.popBaseUrl();
+	}	
 	
 }

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/producers/TestXmlProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/producers/TestXmlProducer.java?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/producers/TestXmlProducer.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/producers/TestXmlProducer.java Tue Mar 24 13:03:28 2009
@@ -20,6 +20,7 @@
 import static org.junit.matchers.JUnitMatchers.*;
 import java.io.ByteArrayOutputStream;
 
+import org.apache.magma.basics.startup.Cycle;
 import org.apache.magma.website.teststuff.Person;
 
 import org.junit.Test;

Modified: labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/AddInlineMenuMethod.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/AddInlineMenuMethod.aj?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/AddInlineMenuMethod.aj (original)
+++ labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/AddInlineMenuMethod.aj Tue Mar 24 13:03:28 2009
@@ -3,17 +3,15 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
-import org.apache.magma.website.admin.AdminWebHandler;
-import java.util.Map;
 import org.apache.magma.website.HtmlProducer;
 import org.apache.magma.website.RootWebHandler;
-import org.apache.magma.website.WebHandler;
 
 public aspect AddInlineMenuMethod {
 
-	public HtmlProducer AdminWebHandler.hiddenInlineMenu(Map<Object, Set<AdminAction>> founds) {
+	public HtmlProducer AdminWebHandler.doInlineMenu(Map<Object, Set<AdminAction>> founds) {
 		Map<Object, List<AdminAction>> filteredactions = new HashMap<Object, List<AdminAction>>();
 		for (Iterator<Map.Entry<Object, Set<AdminAction>>> iterator = founds.entrySet().iterator(); iterator.hasNext();) {
 			Map.Entry<Object, Set<AdminAction>> obj = iterator.next();
@@ -27,18 +25,10 @@
 	
 	public AdminWebHandler RootWebHandler.handleInlineAdministration() {
 		AdminWebHandler ret = new AdminWebHandler();
-		ret.inlined = true;
+		ret.requestInlined = true;
 		return ret;
 	}
 	
-	public Boolean AdminWebHandler.inlined = false;
-	
-	public Boolean AdminWebHandler.getRequestInlined() {
-		return inlined;
-	}
-	
-	public void AdminWebHandler.setRequestInlined(Boolean inlined) {
-		if (inlined != null) this.inlined = inlined;
-	}
+	public Boolean AdminWebHandler.requestInlined = false;
 	
 }

Modified: labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/DirectlyToEditInInline.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/DirectlyToEditInInline.aj?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/DirectlyToEditInInline.aj (original)
+++ labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/DirectlyToEditInInline.aj Tue Mar 24 13:03:28 2009
@@ -9,25 +9,19 @@
 
 public aspect DirectlyToEditInInline {
 
-	public Boolean AbstractCrudHandler.inlined = false;
-	
-	public Boolean AbstractCrudHandler.getRequestInlined() {
-		return inlined;
-	}
-	
-	public void AbstractCrudHandler.setRequestInlined(Boolean inlined) {
-		if (inlined != null) this.inlined = inlined;
-	}
+	public Boolean AbstractCrudHandler.requestInlined = false;
 	
 	Object around(String link, AbstractCrudHandler handler) : 
 		call(* SmartList.setLink(String)) && args(link) &&
 		withincode(* AbstractCrudHandler.handleList()) &&
 		this(handler) {
-		GenericClass gc = GenericClass.forClass(handler.getClass());
-		List<GenericClass.MethodDef> meths = gc.findAllMethods("handleEdit");
-		if (meths.size() > 0) {
-			if (Modifier.isPublic(meths.get(0).getBaseMethod().getModifiers())) {
-				link = "handleEdit";
+		if (handler.requestInlined) {
+			GenericClass gc = GenericClass.forClass(handler.getClass());
+			List<GenericClass.MethodDef> meths = gc.findAllMethods("handleEdit");
+			if (meths.size() > 0) {
+				if (Modifier.isPublic(meths.get(0).getBaseMethod().getModifiers())) {
+					link = "handleEdit";
+				}
 			}
 		}
 		return proceed(link, handler);

Modified: labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/InterceptWebMethods.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/InterceptWebMethods.aj?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/InterceptWebMethods.aj (original)
+++ labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/InterceptWebMethods.aj Tue Mar 24 13:03:28 2009
@@ -56,7 +56,8 @@
 			}
 			if (founds.size() > 0) {
 				AdminWebHandler awe = RootWebHandler.getInstance().handleAdministration();
-				((HtmlProducer)ret).compoundWith(awe.hiddenInlineMenu(founds), CompoundType.AFTER);
+				HtmlProducer inlinemenu = awe.doInlineMenu(founds);
+				((HtmlProducer)ret).compoundWith(inlinemenu, CompoundType.AFTER);
 				return ret;
 			}
 		}

Modified: labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/UseInlinedAdminTemplate.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/UseInlinedAdminTemplate.aj?rev=757771&r1=757770&r2=757771&view=diff
==============================================================================
--- labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/UseInlinedAdminTemplate.aj (original)
+++ labs/magma/trunk/website-administration-inline/src/main/java/org/apache/magma/website/admin/UseInlinedAdminTemplate.aj Tue Mar 24 13:03:28 2009
@@ -10,7 +10,7 @@
 	
     after(WebHandler h) returning (Templatable t) : execution(* AdminWebHandler+.*(..)) && (HandlerSetup.doMethod(h) || HandlerSetup.subHandle(h) || HandlerSetup.hiddenMethod(h)) {
     	if (t == null) return;
-    	if (h instanceof AdminWebHandler && ((AdminWebHandler)h).inlined != null && ((AdminWebHandler)h).inlined) {
+    	if (h instanceof AdminWebHandler && ((AdminWebHandler)h).requestInlined != null && ((AdminWebHandler)h).requestInlined) {
     		t.setTemplate(new InlinedAdminTemplate());
     	}
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org