[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