[jboss-svn-commits] JBL Code SVN: r12286 - 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
Fri Jun 1 12:09:03 EDT 2007
Author: wrzep
Date: 2007-06-01 12:09:03 -0400 (Fri, 01 Jun 2007)
New Revision: 12286
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
Log:
JBLAB-867 - fixed
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-06-01 15:59:01 UTC (rev 12285)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java 2007-06-01 16:09:03 UTC (rev 12286)
@@ -141,12 +141,30 @@
} catch (Exception e) {
- log.debug("Could not instantinate: " + type.getName(), e);
+ log.warn("Could not instantinate: " + type.getName(), e);
return null;
}
}
+ public static Class<?> getInterfaceClass(Class<? extends Object> rwClass) {
+
+ String classString = rwClass.getName().
+ replaceFirst("project.rw", "project").replaceFirst("RW","");
+
+ Class<?> retClass;
+ try {
+ retClass = Thread.currentThread().getContextClassLoader().
+ loadClass(classString);
+ } catch (ClassNotFoundException e) {
+ log.warn(e);
+ return null;
+ }
+
+ return retClass;
+ }
+
+
public static boolean isRWType(Class<? extends Object> type) {
return type.getPackage().getName().equals("org.jboss.forge.common.projects.project.rw");
@@ -179,5 +197,38 @@
private ProxyUtils() {}
+ public static Method getSetter(Object obj, String getterName, Class<? extends Object> paramClass) {
+
+ try {
+ return obj.getClass().getMethod(getSetterName(getterName), getInterfaceClass(paramClass));
+ } catch (SecurityException e) {
+ log.warn(e);
+ } catch (NoSuchMethodException e) {
+ log.warn(e);
+ }
+
+ return null;
+ }
+
+
+ private static String getSetterName(String getterName) {
+
+ if (getterName.startsWith("get")) {
+ return getterName.replaceFirst("get", "set");
+ }
+
+ if (getterName.startsWith("is")) {
+ return getterName.replaceFirst("is", "set");
+ }
+
+ return null;
+ }
+
+ public static void invoke(Object obj, Method m, Object result) throws Throwable {
+
+ Object[] arr = new Object[1];
+ arr[0] = result;
+ invoke(obj, m, arr);
+ }
}
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-06-01 15:59:01 UTC (rev 12285)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java 2007-06-01 16:09:03 UTC (rev 12286)
@@ -114,6 +114,11 @@
&& !ProxyUtils.isSimpleType(m.getReturnType())) {
result = ProxyUtils.getRWType(m.getReturnType());
+
+ if (result != null) {
+ Method setter = ProxyUtils.getSetter(obj, m.getName(), result.getClass());
+ ProxyUtils.invoke(obj, setter, result);
+ }
}
if (!ProxyUtils.isGetter(m) && !ProxyUtils.isSetter(m)) {
More information about the jboss-svn-commits
mailing list