[jbosstools-commits] JBoss Tools SVN: r41674 - in branches/jbosstools-3.3.x/forge/plugins: org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Mon Jun 4 08:41:52 EDT 2012


Author: koen.aers at jboss.com
Date: 2012-06-04 08:41:51 -0400 (Mon, 04 Jun 2012)
New Revision: 41674

Modified:
   branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java
   branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/RmPostProcessor.java
Log:
JBIDE-11124: Removing project via forge is not working properly

Modified: branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java
===================================================================
--- branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java	2012-06-04 12:20:52 UTC (rev 41673)
+++ branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java	2012-06-04 12:41:51 UTC (rev 41674)
@@ -1,8 +1,5 @@
 package org.jboss.tools.forge.runtime.ext;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
 import javax.enterprise.event.Observes;
 import javax.inject.Inject;
 
@@ -27,20 +24,7 @@
 		if (project != null) {
 			projectName = project.getProjectRoot().getFullyQualifiedName();
 		}
-		String parameterString = "";
-		try {
-			Method method = event.getClass().getMethod("getParameters", new Class[] {});
-			Object object = method.invoke(event, new Object[] {});
-			if (object instanceof Object[]) {
-				Object[] parameters = (Object[])object;
-				for (Object parameter : parameters) {
-					parameterString += parameter + " ";
-				}
-			}
-		} catch (NoSuchMethodException e) {
-		} catch (InvocationTargetException e) {
-		} catch (IllegalAccessException e) {}
-		
+		String parameterString = getParameterString(event);
 		String command = event.getCommand().getParent().getName() + " " + event.getCommand().getName();
 		sendEscaped(
 				" EC: " + command + 
@@ -50,6 +34,23 @@
 				" PAR: " + parameterString);
 	}
 	
+	private String getParameterString(CommandExecuted event) {
+		return flattenObjectArray(event.getParameters());
+	}
+	
+	private String flattenObjectArray(Object[] objects) {
+		String result = "";
+		for (Object object : objects) {
+			if (object instanceof Object[]) {
+				result += '[' + flattenObjectArray((Object[])object) + ']';
+			} else {
+				result += object;
+				result += ' ';
+			}
+		}
+		return result.trim();
+	}
+	
 	private void sendEscaped(String str) {
 		shell.print(ESCAPE + str + ESCAPE); 
 	}

Modified: branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/RmPostProcessor.java
===================================================================
--- branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/RmPostProcessor.java	2012-06-04 12:20:52 UTC (rev 41673)
+++ branches/jbosstools-3.3.x/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/RmPostProcessor.java	2012-06-04 12:41:51 UTC (rev 41674)
@@ -1,49 +1,49 @@
 package org.jboss.tools.forge.ui.console;
 
+import java.io.File;
+import java.util.ArrayList;
 import java.util.Map;
+import java.util.StringTokenizer;
 
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileInfo;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
 import org.jboss.tools.forge.ui.ForgeUIPlugin;
 
 
 public class RmPostProcessor implements ForgeCommandPostProcessor {
 	
-	private String getResourceToDelete(Map<String, String> commandDetails) {
-		return commandDetails.get("crn");
+	private ArrayList<String> getResourcesToDelete(Map<String, String> commandDetails) {
+		String crn = commandDetails.get("crn");
+		String par = commandDetails.get("par");
+		int start = par.lastIndexOf('[');
+		int end = par.lastIndexOf(']');
+		if (start == -1 || end == -1) return null;
+		par = par.substring(start + 1, end);
+		ArrayList<String> result = new ArrayList<String>();
+		StringTokenizer tokenizer = new StringTokenizer(par);
+		while (tokenizer.hasMoreTokens()) {
+			result.add(crn + File.separator + tokenizer.nextToken());
+		}
+		return result;
 	}
 	
 	@Override
 	public void postProcess(Map<String, String> commandDetails) {
-		String crn = getResourceToDelete(commandDetails);
-		if (crn == null) return;
-		IPath path = new Path(crn);
-		IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(crn));
-		IFileInfo fileInfo = fileStore.fetchInfo();
-		if (!fileInfo.exists()) return;
-		IResource resource = null;
-		if (fileInfo.isDirectory()) {
-			resource = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(path);
-		} else {
-			resource = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
+		ArrayList<String> resourceNames = getResourcesToDelete(commandDetails);
+		if (resourceNames == null) return;
+		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+		for (String resourceName : resourceNames) {
+			for (IProject project : projects) {
+				if (project.exists() && resourceName.equals(project.getLocation().toOSString())) {
+					try {
+						project.delete(false, false, null);
+					} catch (CoreException e) {
+						ForgeUIPlugin.log(e);
+					}
+				}
+			}
 		}
-		if (resource != null) {
-			delete(resource);
-		}
 	}
 	
-	private void delete(IResource resource) {
-		try { 
-			resource.delete(true, null);
-		} catch (CoreException e) {
-			ForgeUIPlugin.log(e);
-		}
-	}
-	
 }



More information about the jbosstools-commits mailing list