[jboss-svn-commits] JBL Code SVN: r10018 - labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 7 13:45:16 EST 2007


Author: wrzep
Date: 2007-03-07 13:45:16 -0500 (Wed, 07 Mar 2007)
New Revision: 10018

Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java
Log:
JBLAB-840
syncproxybugfix-pawel


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-07 18:32:08 UTC (rev 10017)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java	2007-03-07 18:45:16 UTC (rev 10018)
@@ -25,6 +25,8 @@
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 
+import org.jboss.forge.common.projects.project.rw.ProjectRW;
+
 /**
  * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
  */
@@ -36,12 +38,18 @@
 	
     public static Object newInstance(Object obj) {
 
+    		Class[] interfaces;
+    	
 		// hack to use dynamic proxy with JAXB
-    		int n = obj.getClass().getInterfaces().length;	
-    		Class[] interfaces = new Class[n + 1];
-    		
-    		interfaces = obj.getClass().getInterfaces();
-    		interfaces[interfaces.length - 1] = ProjectRWProxy.class;
+    		if (obj instanceof ProjectRW) {
+    			
+    			interfaces = appendInterface(obj.getClass().getInterfaces(),
+    										 ProjectRWProxy.class);
+    			
+    		} else {
+    			
+    			interfaces = obj.getClass().getInterfaces();
+    		}
     	
     		return java.lang.reflect.Proxy.newProxyInstance(
     										obj.getClass().getClassLoader(),
@@ -49,7 +57,25 @@
     										new SyncProxy(obj));
     }
 
-    private SyncProxy(Object obj) {
+    private static Class[] appendInterface(Class[] interfacesArr,
+    									Class<?> interfaceToAppend) {
+		
+    		int n = interfacesArr.length;	
+		Class[] interfaces = new Class[n + 1];
+	
+		int i = 0;
+		for (Class c : interfacesArr) {
+
+			interfaces[i] = c;
+			i++;
+		}
+	
+		interfaces[n] = interfaceToAppend;	
+    	
+		return interfaces;
+	}
+
+	private SyncProxy(Object obj) {
     		
     		this.obj = obj;
     }




More information about the jboss-svn-commits mailing list