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