[jboss-svn-commits] JBL Code SVN: r10179 - in labs/jbosslabs/trunk/portal-extensions: forge-common/src/java/org/jboss/forge/common/projects/proxies and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 14 12:19:47 EDT 2007


Author: wrzep
Date: 2007-03-14 12:19:47 -0400 (Wed, 14 Mar 2007)
New Revision: 10179

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectFactoryService.java
   labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectFactoryServiceImpl.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/LabsServices.java
   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/ReadOnlyListProxy.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java
   labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java
Log:
JBLAB-780
cleanup and attempts to fix null getters issue
-pawel


Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/LabsServices.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/LabsServices.java	2007-03-14 14:45:25 UTC (rev 10178)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/LabsServices.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -38,6 +38,7 @@
  */
 
 public class LabsServices {
+	
     private static Object getService(Class serviceClass, String serviceName)
             throws MalformedObjectNameException {
         return MBeanProxyExt.create(serviceClass, serviceName, MBeanServerLocator.locate());
@@ -69,6 +70,11 @@
         return (ProjectsServiceRW) getService(ProjectsServiceRW.class,
                 ProjectsServiceRW.PROJECTS_RW_SERVICE);
     }
+    
+    public static ProjectFactoryService getProjectFactoryService() throws MalformedObjectNameException {
+        return (ProjectFactoryService) getService(ProjectFactoryService.class,
+                ProjectFactoryService.PROJECT_FACTORY_SERVICE);
+    }
 
     public static ProjectPagesService getProjectPagesService() throws ServiceRetrievalException {
         try {

Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectFactoryService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectFactoryService.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/ejb3/ProjectFactoryService.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -0,0 +1,42 @@
+ /*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2005, JBoss Inc., and individual contributors as indicated
+  * by the @authors tag. See the copyright.txt in the distribution for a
+  * full listing of individual contributors.
+  *
+  * This is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU Lesser General Public License as
+  * published by the Free Software Foundation; either version 2.1 of
+  * the License, or (at your option) any later version.
+  *
+  * This software is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this software; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  */
+
+package org.jboss.forge.common.ejb3;
+
+import org.jboss.forge.common.projects.project.IssueTracker;
+
+/**
+ * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
+ */
+public interface ProjectFactoryService {
+
+    public static final String PROJECT_FACTORY_SERVICE = "labs:service=projectFactory";
+
+    public IssueTracker createIssueTracker();
+    
+    //	 Life cycle methods
+	
+    public void start () throws Exception;
+	
+	public void stop () throws Exception;
+
+}

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-14 14:45:25 UTC (rev 10178)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ProxyUtils.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -45,9 +45,6 @@
 		boolean result = type.isPrimitive() ||
 				type.getPackage().getName().startsWith("java.lang");
 		
-		//System.out.println("isSimpleType: " + type.getName() + " " +
-				//result);
-		
 		return result;
 	}	
 
@@ -71,12 +68,9 @@
 		
 		if (result instanceof List) {
 
-			//System.out.println("WRAP as LIST");
 			return ReadOnlyListProxy.newInstance((List) result);
 		}
 		
-		
-		//System.out.println("SIMPLE WRAP");
 		return ReadOnlyProxy.newInstance(result);		
 	}
 	
@@ -112,4 +106,30 @@
 	
 	private ProxyUtils() {}
 
+	public static Object getRWType(Class<?> type) {
+		
+		if (isSimpleType(type)) {
+			return null;
+		}
+		
+		String classString = type.getName().
+								replace("project.", "project.rw.").concat("RW");
+		
+		try {
+			
+			System.out.println("ClassString: " + classString);
+			
+			Class<?> retClass = Thread.currentThread().getContextClassLoader().
+														loadClass(classString);
+			
+			return retClass.newInstance();
+			
+		} catch (Exception e) {
+		
+			System.out.println("EX: " + e);
+			
+			return null;
+		}
+	}
+
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java	2007-03-14 14:45:25 UTC (rev 10178)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyListProxy.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -37,8 +37,6 @@
 	private List<Object> list = new ArrayList<Object>();
 	
     public static Object newInstance(List obj) {
-    
-    		//System.out.println("LIST, NEW INSTANCE " + obj.getClass().getName());
     	
     		return java.lang.reflect.Proxy.newProxyInstance(
     										obj.getClass().getClassLoader(),
@@ -59,9 +57,6 @@
     public Object invoke(Object proxy, Method m, Object[] args)
     														throws Throwable {
     
-    
-    		//System.out.println("LIST, INVOKE " + m.getDeclaringClass().getName() + " " + m.getName());
-    		
     		String methodName = m.getName();
  
        	// Kill mutable operations
@@ -74,7 +69,6 @@
     		if (methodName.equals("get")) {
     			
     			result = list.get((Integer) args[0]);
-    			//System.out.println("LIST, GET " + result + " " + args[0] + list.get((Integer) args[0]));
     			
     		} else {
     			result = ProxyUtils.invoke(list, m, args);

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java	2007-03-14 14:45:25 UTC (rev 10178)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/ReadOnlyProxy.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -28,7 +28,6 @@
 import java.util.Map;
 
 import org.jboss.forge.common.exceptions.IllegalOperationException;
-import org.jboss.forge.common.projects.project.Project;
 
 /**
  * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
@@ -44,8 +43,6 @@
 	
     public static Object newInstance(Object obj) {
     
-    		//System.out.println("NEW INSTANCE " + obj.getClass().getName());
-    	
     		return java.lang.reflect.Proxy.newProxyInstance(
     										obj.getClass().getClassLoader(),
     										obj.getClass().getInterfaces(),
@@ -59,19 +56,12 @@
 
     public Object invoke(Object proxy, Method m, Object[] args)
     		throws Throwable {
-    
-    		//System.out.println("INVOKE " + m.getDeclaringClass().getName() + " " + m.getName());
     		
-    		if (obj instanceof Project) {
-    			//System.out.println("PROJECT: " + ((Project) obj).getId());
-    		}
-    		
     		String methodName = m.getName();
  
     		// Check "cache" (only getter results are stored there)	
     		if (methodValues.containsKey(methodName)) {
     		
-    			//System.out.println("RET from cache: " + methodValues.get(methodName));
     			return methodValues.get(methodName);
     		}
     		
@@ -88,12 +78,9 @@
 
     			result = ProxyUtils.wrapReadOnly(result);
     			
-    			//System.out.print("CACHED ");
     			methodValues.put(methodName, result);
     		}
     		
-    		//System.out.println("RET " + result);
-    		
         return result;
     }
 	

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-14 14:45:25 UTC (rev 10178)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/proxies/SyncProxy.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -96,6 +96,15 @@
 			result = ProxyUtils.invoke(obj, m, args);
     		}
     		
+    		if (result == null) {
+    			
+    			System.out.println("NULL RESULT " + m.getName());
+    			
+    			result = ProxyUtils.getRWType(m.getReturnType());
+    			
+    			System.out.println("RESULT: " + result);
+    		}
+    		
         return ProxyUtils.wrapSync(result);
     }
 	

Added: 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	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projects/ProjectFactoryServiceImpl.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -0,0 +1,79 @@
+ /*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2005, JBoss Inc., and individual contributors as indicated
+  * by the @authors tag. See the copyright.txt in the distribution for a
+  * full listing of individual contributors.
+  *
+  * This is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU Lesser General Public License as
+  * published by the Free Software Foundation; either version 2.1 of
+  * the License, or (at your option) any later version.
+  *
+  * This software is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this software; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  */
+
+package org.jboss.forge.ejb3.projects;
+
+import javax.ejb.Remote;
+
+import org.jboss.annotation.ejb.Management;
+import org.jboss.annotation.ejb.Service;
+
+
+import org.jboss.forge.common.projects.project.IssueTracker;
+import org.jboss.forge.common.projects.project.Project;
+import org.jboss.forge.common.projects.project.rw.IssueTrackerRW;
+import org.jboss.forge.common.projects.project.rw.ProjectRW;
+import org.jboss.forge.common.projects.proxies.SyncProxy;
+
+import org.jboss.forge.common.ejb3.ProjectFactoryService;
+
+import org.jboss.logging.Logger;
+
+
+/**
+ * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
+ */
+ at Service(objectName = ProjectFactoryService.PROJECT_FACTORY_SERVICE)
+ at Management(ProjectFactoryService.class)
+ at Remote(ProjectFactoryService.class)
+public class ProjectFactoryServiceImpl implements ProjectFactoryService {
+	
+    private static final Logger log = Logger.getLogger(ProjectFactoryService.class);
+    
+    public Project createProject() {
+    
+    		Project newProject = new ProjectRW();
+    	
+    		return (Project) SyncProxy.newInstance(newProject);
+    }
+    
+    public IssueTracker createIssueTracker() {
+		
+    		IssueTracker it = new IssueTrackerRW();
+    	
+		return (IssueTracker) SyncProxy.newInstance(it);
+	}
+    
+    
+    
+    // Lifecycle methods
+        
+	public void start() throws Exception {
+		
+		log.info("ProjectFactory service started");
+	}
+	
+	public void stop() throws Exception {
+		
+		log.info("ProjectFactory service stopped");
+	}
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java	2007-03-14 14:45:25 UTC (rev 10178)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java	2007-03-14 16:19:47 UTC (rev 10179)
@@ -53,27 +53,8 @@
 		project = ProjectInfoTools.getProjectByName(FacesTools.getSelectedProjectId());
 
 		documentation = ProjectInfoTools.getAllDocumentation(project);
-		
-		test();
 	}
 	
-	public String test() {
-		
-//		DEBUG
-		try {
-			Project prj = LabsServices.getProjectsServiceRW().getProjectByNameRW("shotoku");
-			System.out.println("TEST (2): " + prj.getName());
-			
-			LabsServices.getProjectsServiceRW().persistProject(prj);
-			
-		} catch (Exception e) {
-			
-			e.printStackTrace();
-		}
-		
-		return "";
-	}
-	
 	/* Business methods */
 	
 	public String applyChanges() {




More information about the jboss-svn-commits mailing list