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/10 01:02:17 UTC

svn commit: r751912 - in /labs/magma/trunk/foundation-website/src: main/java/org/apache/magma/website/HandlerSetup.aj test/java/org/apache/magma/website/WebHandlerCycleTest.java test/java/org/apache/magma/website/teststuff/InjectProducerFromAspect.aj

Author: simoneg
Date: Tue Mar 10 00:02:17 2009
New Revision: 751912

URL: http://svn.apache.org/viewvc?rev=751912&view=rev
Log:
LABS-305 : test properties added by aspects, implement using getters and setters, but leave it commented out for now, as explained on the bug.

Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InjectProducerFromAspect.aj

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj?rev=751912&r1=751911&r2=751912&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj Tue Mar 10 00:02:17 2009
@@ -29,10 +29,14 @@
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.apache.magma.basics.MagmaException;
+import org.apache.magma.beans.BeanData;
+import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.MagmaBeanSupport;
+import org.apache.magma.beans.PropertyInfo;
 import org.apache.magma.website.utils.OnDemandBinder;
 import org.apache.magma.website.utils.OnDemandBinder.Interaction;
 import org.aspectj.lang.reflect.FieldSignature;
+import org.aspectj.lang.reflect.MethodSignature;
 import org.apache.magma.website.context.Contextualizer;
 
 
@@ -84,8 +88,7 @@
 	
 	pointcut fetching(WebHandler h) : 
 		(get(private * WebHandler+.*) || get(protected * WebHandler+.*)) 
-		&& target(h)
-		&& !withincode(WebHandler+.new(..));
+		&& target(h);
 	
 	Object around(WebHandler h) : fetching(h) {
 		FieldSignature sign = (FieldSignature)thisJoinPointStaticPart.getSignature();
@@ -94,14 +97,16 @@
 		if (inter == null) return proceed(h);
 		Class type = sign.getFieldType();
 		String unique = Integer.toString(h.getRelativePath().hashCode());
-		return binder.fetch(element, type, inter, unique);
+		Object ret = binder.fetch(element, type, inter, unique);
+		return ret;
 	}
 	
 	pointcut storing(WebHandler h, Object value) : 
 		(set(private * WebHandler+.*) || set(protected * WebHandler+.*)) 
 		&& target(h)
 		&& args(value)
-		&& !withincode(WebHandler+.new(..));		
+		&& !withincode(WebHandler+.new(..))
+		&& !withincode(* Object+.*$interFieldInit$*(..));
 	
 	after(WebHandler h, Object value) : storing(h, value) {
 		String element = thisJoinPointStaticPart.getSignature().getName();
@@ -112,6 +117,47 @@
 	}
 	
 	/*
+	 * LABS-305
+	pointcut getterCalled(WebHandler h) : 
+		(execution(public * WebHandler+.get*())) 
+		&& target(h);
+	
+	before(WebHandler h) : getterCalled(h) {
+		MethodSignature sign = (MethodSignature)thisJoinPointStaticPart.getSignature();
+		BeanData bd = h.beanData();
+		PropertyInfo pi = bd.findProperty(sign.getMethod());
+		if (pi == null) return;
+		String element = pi.getName();
+		Interaction inter = OnDemandBinder.interactsWith(element);
+		if (inter == null) return;
+		Class type = pi.getType();
+		String unique = Integer.toString(h.getRelativePath().hashCode());
+		Object ret = binder.fetch(element, type, inter, unique);
+		BeanHandler handler = h.handler();
+		handler.setValue(element, ret);
+		handler.commit();
+	}
+	
+	pointcut setterCalled(WebHandler h, Object value) :
+		(execution(public * WebHandler+.set*(..)))
+		&& target(h)
+		&& args(value);
+	
+	after(WebHandler h, Object value) : setterCalled(h, value) {
+		MethodSignature sign = (MethodSignature)thisJoinPointStaticPart.getSignature();
+		BeanData bd = h.beanData();
+		PropertyInfo pi = bd.findProperty(sign.getMethod());
+		if (pi == null) return;
+		String element = pi.getName();
+		Interaction inter = OnDemandBinder.interactsWith(element);
+		if (inter == null) return;
+		String unique = Integer.toString(h.getRelativePath().hashCode());
+		binder.store(element, value, inter, unique);				
+	}
+	* LABS-305
+	*/
+	
+	/*
 	Object around (WebHandler h) : (doMethod(h) || subHandle(h) || hiddenMethod(h)) {
 		Object retObj = null;
 		if (!h.inited) {

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java?rev=751912&r1=751911&r2=751912&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java Tue Mar 10 00:02:17 2009
@@ -302,7 +302,25 @@
 		def.setupMinimal("/testSession/resendLink");
 		def.start();		
 		assertStructure(def.out.toString(), "<head>", "<link", "\"/aux/relative.css", "</head","<body", "<a href", "\"/aux/inside", "<a href", "\"/base", "<a href", "\"http://absolute");
-	}	
+	}
+
+	// see LABs-305
+	@Test
+	public void onDemandBindingOnGetters() throws Exception {
+		DefaultExpectations def = new DefaultExpectations() {{
+			one(session).getAttribute("toAspect"); will(returnValue("getting"));
+			one(session).setAttribute("toAspect", "done");
+		}};
+		def.setupDefaults("/test/fromSessionToAspect");
+		Dispatch disp = def.start();
+		
+		FakeHtmlProducer prod = FakeHtmlProducer.getInstance();
+		String coming = (String) prod.getParameters().getParameters().get("coming");
+		assertNotNull(coming);
+		assertThat(coming, equalTo("getting"));
+	}
+	
+	
 	
 	
 }

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InjectProducerFromAspect.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InjectProducerFromAspect.aj?rev=751912&r1=751911&r2=751912&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InjectProducerFromAspect.aj (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InjectProducerFromAspect.aj Tue Mar 10 00:02:17 2009
@@ -17,4 +17,24 @@
 		orig.compoundWith(added, CompoundType.AFTER);
 	}
 	
+	private String SimpleWebHandler.sessionToAspect = null;
+	
+	/*
+	public String SimpleWebHandler.getSessionToAspect() {
+		return sessionToAspect;
+	}
+	
+	public void SimpleWebHandler.setSessionToAspect(String toAspect) {
+		sessionToAspect = toAspect;
+	}
+	*/
+	
+	public HtmlProducer SimpleWebHandler.doFromSessionToAspect() {
+		String coming = sessionToAspect;
+		FakeHtmlProducer prod = new FakeHtmlProducer();
+		prod.addParameter("coming", coming);
+		sessionToAspect = "done";
+		return prod;
+	}
+	
 }



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