[jboss-svn-commits] JBL Code SVN: r9504 - in labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin: wizards and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Feb 14 20:46:57 EST 2007
Author: mshaw
Date: 2007-02-14 20:46:57 -0500 (Wed, 14 Feb 2007)
New Revision: 9504
Added:
labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/utils/ProjectClassLoader.java
Modified:
labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/wizards/GenerateRtlWizard.java
Log:
Added: labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/utils/ProjectClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/utils/ProjectClassLoader.java (rev 0)
+++ labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/utils/ProjectClassLoader.java 2007-02-15 01:46:57 UTC (rev 9504)
@@ -0,0 +1,103 @@
+package org.drools.testing.plugin.utils;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+
+public class ProjectClassLoader {
+
+ public static URLClassLoader getProjectClassLoader(IEditorPart editor) {
+ IEditorInput input = editor.getEditorInput();
+ if (input instanceof IFileEditorInput) {
+ IProject project = ((IFileEditorInput) input).getFile().getProject();
+ IJavaProject javaProject = JavaCore.create(project);
+ return getProjectClassLoader(javaProject);
+ }
+ return null;
+ }
+
+ public static URLClassLoader getProjectClassLoader(IJavaProject project) {
+ List pathElements = getProjectClassPathURLs(project);
+ URL urlPaths[] = (URL[]) pathElements.toArray(new URL[pathElements.size()]);
+ return new URLClassLoader(urlPaths, Thread.currentThread().getContextClassLoader());
+ }
+
+ private static URL getRawLocationURL(IPath simplePath)
+ throws MalformedURLException {
+ File file = getRawLocationFile(simplePath);
+ return file.toURL();
+ }
+
+ private static File getRawLocationFile(IPath simplePath) {
+ IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(simplePath);
+ File file = null;
+ if (resource != null) {
+ file = ResourcesPlugin.getWorkspace().getRoot().findMember(
+ simplePath).getRawLocation().toFile();
+ } else {
+ file = simplePath.toFile();
+ }
+ return file;
+ }
+
+ public static List getProjectClassPathURLs(IJavaProject project) {
+ List pathElements = new ArrayList();
+ try {
+ IClasspathEntry[] paths = project.getResolvedClasspath(true);
+ if (paths != null) {
+
+ for ( int i = 0; i < paths.length; i++ ) {
+ IClasspathEntry path = paths[i];
+ if (path.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+ URL url = getRawLocationURL(path.getPath());
+ pathElements.add(url);
+ }
+ }
+ }
+ IPath location = getProjectLocation(project.getProject());
+ IPath outputPath = location.append(project.getOutputLocation()
+ .removeFirstSegments(1));
+ pathElements.add(outputPath.toFile().toURL());
+
+ // also add classpath of required projects
+ String[] names = project.getRequiredProjectNames();
+ for ( int i = 0; i < names.length; i++ ) {
+ String projectName = names[i];
+ IProject reqProject = project.getProject().getWorkspace()
+ .getRoot().getProject(projectName);
+ if (reqProject != null) {
+ IJavaProject reqJavaProject = JavaCore.create(reqProject);
+ pathElements.addAll(getProjectClassPathURLs(reqJavaProject));
+ }
+ }
+ } catch (JavaModelException e) {
+ //DroolsIDEPlugin.log(e);
+ } catch (MalformedURLException e) {
+ //DroolsIDEPlugin.log(e);
+ }
+ return pathElements;
+ }
+
+ public static IPath getProjectLocation(IProject project) {
+ if (project.getRawLocation() == null) {
+ return project.getLocation();
+ } else {
+ return project.getRawLocation();
+ }
+ }
+}
Modified: labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/wizards/GenerateRtlWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/wizards/GenerateRtlWizard.java 2007-02-14 23:55:56 UTC (rev 9503)
+++ labs/jbossrules/trunk/drools-testing-plugin/src/org/drools/testing/plugin/wizards/GenerateRtlWizard.java 2007-02-15 01:46:57 UTC (rev 9504)
@@ -7,7 +7,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
-import java.net.URLClassLoader;
import org.drools.lang.descr.RuleDescr;
import org.drools.testing.core.beans.Scenario;
@@ -15,10 +14,9 @@
import org.drools.testing.core.exception.RuleTestLanguageException;
import org.drools.testing.core.main.Testing;
import org.drools.testing.plugin.model.RtlModel;
-import org.drools.testing.plugin.utils.ClassPathUtils;
+import org.drools.testing.plugin.utils.ProjectClassLoader;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -28,6 +26,7 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
@@ -141,45 +140,49 @@
IContainer container = (IContainer) resource;
final IFile file = container.getFile(new Path(fileName));
+ ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+ ClassLoader newLoader = GenerateRtlWizard.class.getClassLoader();
+ if (resource.getProject().getNature("org.eclipse.jdt.core.javanature") != null) {
+ IJavaProject project = JavaCore.create(resource.getProject());
+ newLoader = ProjectClassLoader.getProjectClassLoader(project);
+ }
try {
- //URLClassLoader urClassLoader = new URLClassLoader(
- // ClassPathUtils.getClasspathAsURLArray(
- // ResourcesPlugin.getWorkspace().getRoot().getProject("test")));
-
- if (resource instanceof IProject)
- System.out.println("fuck me");
- IJavaProject proj = (IJavaProject) resource.getAdapter(IJavaProject.class);
+ Thread.currentThread().setContextClassLoader(newLoader);
- Testing testing = new Testing("The Test Test Suite", rtlModel.getPackageDescr(),GenerateRtlWizard.class.getClassLoader());
- Scenario scenario = testing.generateScenario("Scenario One",rtlModel.getPackageDescr().getRules());
+ Testing testing = new Testing("The Test Test Suite", rtlModel
+ .getPackageDescr(), newLoader);
+ Scenario scenario = testing.generateScenario("Scenario One",
+ rtlModel.getPackageDescr().getRules());
testing.addScenarioToSuite(scenario);
TestSuite testSuite = testing.getTestSuite();
FileWriter out = new FileWriter(fileName);
Marshaller marshaller = new Marshaller(out);
- marshaller.setSuppressXSIType(true);
- marshaller.setSupressXMLDeclaration(true);
- marshaller.marshal(testSuite);
- out.close();
-
- InputStream stream = openContentStream(fileName);
+ marshaller.setSuppressXSIType(true);
+ marshaller.setSupressXMLDeclaration(true);
+ marshaller.marshal(testSuite);
+ out.close();
+
+ InputStream stream = openContentStream(fileName);
if (file.exists()) {
file.setContents(stream, true, true, monitor);
} else {
file.create(stream, true, monitor);
}
stream.close();
- }catch (RuleTestLanguageException e) {
+
+ } catch (RuleTestLanguageException e) {
throwCoreException(e.getMessage());
-
} catch (IOException e) {
throwCoreException(e.toString());
- }catch (MarshalException e) {
+ } catch (MarshalException e) {
throwCoreException(e.toString());
- }catch (ValidationException e) {
+ } catch (ValidationException e) {
throwCoreException(e.toString());
- }
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldLoader);
+ }
+
-
monitor.worked(1);
monitor.setTaskName("Opening file for editing...");
getShell().getDisplay().asyncExec(new Runnable() {
More information about the jboss-svn-commits
mailing list