[jboss-svn-commits] JBL Code SVN: r10532 - in labs/jbosslabs/trunk/portal-extensions: forge-ejb3/src/java/org/jboss/forge/ejb3/projects and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 26 07:45:08 EDT 2007


Author: wrzep
Date: 2007-03-26 07:45:07 -0400 (Mon, 26 Mar 2007)
New Revision: 10532

Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java
   labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectFactoryServiceImpl.java
   labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/PagesAdminTools.java
   labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/ProjectPagesAdminBean.java
Log:
JBLAB-843
SyncProxy fixes: 1. multiply wrapped objects 2. iterator calls weren't handled
-Pawel


Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java	2007-03-26 06:54:53 UTC (rev 10531)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java	2007-03-26 11:45:07 UTC (rev 10532)
@@ -92,12 +92,13 @@
 	
 	public static boolean isGetter(Method m) {
 		
-		return m.getName().startsWith("get") || m.getName().startsWith("is");
+		return m.getName().startsWith("get") || m.getName().startsWith("is") || // beans
+			   m.getName().equals("iterator") || m.getName().equals("next");  	// iterator
 	}
 	
 	public static boolean isSetter(Method m) {
 		
-		return m.getName().startsWith("set");
+		return (m.getName().startsWith("set") || (m.getName().equals("add")));
 	}
 	
 	public static Object invoke(Object obj, Method m, Object[] args) throws Throwable {
@@ -150,6 +151,31 @@
 		return type.getPackage().getName().equals("org.jboss.forge.common.projects.project.rw");
 	}	
 	
+	public static Object unwrap(Object obj) {
+		
+		if (!ObjectRWProxy.class.isInstance(obj)) {
+			return obj;
+		}
+		
+		return ((ObjectRWProxy) obj).getObjectRW();
+	}
+	
+	public static Object[] unwrapArray(Object[] args){
+		
+		if (args == null) {
+			return null;
+		}
+		
+		Object[] ret = new Object[args.length];
+		int i = 0;
+		for (Object arg : args) {
+			ret[i] = unwrap(arg);
+			i++;
+		}		
+		
+		return ret;
+	}
+	
 	private ProxyUtils() {}
 
 	

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java	2007-03-26 06:54:53 UTC (rev 10531)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java	2007-03-26 11:45:07 UTC (rev 10532)
@@ -26,6 +26,8 @@
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 
+import org.jboss.forge.common.projects.project.rw.PagesRW;
+
 /**
  * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
  */
@@ -82,17 +84,29 @@
 
     public Object invoke(Object proxy, Method m, Object[] args)
     		throws Throwable {
-    
+    	
     		// hack continued
     		if (m.getName().equals("getObjectRW")) {
     			
+    			// Unpack double-wrapped objects
+    			if (ObjectRWProxy.class.isInstance(obj)) {
+    				
+    				return ((ObjectRWProxy) obj).getObjectRW(); 
+    			}
+    			
     			return obj;
     		}
     		
+    		// Don't put proxies into proxy, unwrap them instead.
+    		if (ProxyUtils.isSetter(m)) {
+    			
+    			args = ProxyUtils.unwrapArray(args);
+    		}
+    		
     		Object result;
     		
     		synchronized (this) {
-				
+    			
 			result = ProxyUtils.invoke(obj, m, args);
     		}
     		

Modified: labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectFactoryServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectFactoryServiceImpl.java	2007-03-26 06:54:53 UTC (rev 10531)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectFactoryServiceImpl.java	2007-03-26 11:45:07 UTC (rev 10532)
@@ -22,7 +22,6 @@
 
 package org.jboss.forge.ejb3.projects;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -40,6 +39,7 @@
 import org.jboss.forge.common.projects.project.rw.PortletRW;
 import org.jboss.forge.common.projects.project.rw.PreferenceRW;
 import org.jboss.forge.common.projects.project.rw.ProjectRW;
+import org.jboss.forge.common.projects.proxies.ObjectRWProxy;
 import org.jboss.forge.common.projects.proxies.SyncProxy;
 
 import org.jboss.forge.common.ejb3.ProjectFactoryService;
@@ -80,14 +80,12 @@
     public Portlet createPortlet(String name, String region, int height,
 			Map<String, String> preferences) {
     	
-    	//	Portlet portlet = createPortlet();
-    	Portlet portlet = new PortletRW();
+    		//	Portlet portlet = createPortlet();
+    		Portlet portlet = new PortletRW();
     		portlet.setName(name);
     		portlet.setRegion(region);
     		portlet.setHeight(Integer.toString(height));
-    		
-    		System.out.println("####################");
-    		
+
     		if (preferences != null) {
     		
     			List<Preference> preferencesList = (List<Preference>) portlet.getPreferences(); 
@@ -97,9 +95,7 @@
     			}
     		}
     		
-    		System.out.println("$$$$$$$$$$$$$$$$$$$$");
-    		
-    		return portlet;
+    		return (Portlet) SyncProxy.newInstance(portlet);
     }
     
     public Preference createPreference() {
@@ -110,7 +106,7 @@
     public Preference createPreference(String name, String value) {
     	
     		//Preference preference= createPreference();
-    	Preference preference = new PreferenceRW();
+    		Preference preference = new PreferenceRW();
     		preference.setName(name);
     		preference.setName(value);
     		

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/PagesAdminTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/PagesAdminTools.java	2007-03-26 06:54:53 UTC (rev 10531)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/PagesAdminTools.java	2007-03-26 11:45:07 UTC (rev 10532)
@@ -35,6 +35,7 @@
 import org.jboss.forge.common.projects.project.Page;
 import org.jboss.forge.common.projects.project.Pages;
 import org.jboss.forge.common.projects.project.Portlet;
+import org.jboss.forge.common.projects.proxies.ObjectRWProxy;
 
 /**
  * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
@@ -127,7 +128,7 @@
 		Portlet portlet;
 		
 		try {
-			portlet = LabsServices.getProjectFactoryService().createPortlet(portletName, region, 1, preferences);
+			portlet = LabsServices.getProjectFactoryService().createPortlet(portletName, region, 1, null);
 			
 			
 		} catch (MalformedObjectNameException e) {

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/ProjectPagesAdminBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/ProjectPagesAdminBean.java	2007-03-26 06:54:53 UTC (rev 10531)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/admin/ProjectPagesAdminBean.java	2007-03-26 11:45:07 UTC (rev 10532)
@@ -30,6 +30,7 @@
 import org.jboss.forge.common.ejb3.LabsServices;
 import org.jboss.forge.common.projects.project.Page;
 import org.jboss.forge.common.projects.project.Pages;
+import org.jboss.forge.common.projects.proxies.ObjectRWProxy;
 import org.jboss.logging.Logger;
 
 
@@ -79,6 +80,7 @@
 	public String editPage() {
 		
 		page = PagesAdminTools.find(pages, selectedPage);	
+		
 		return "";
 	}
 	




More information about the jboss-svn-commits mailing list