[jboss-svn-commits] JBL Code SVN: r25354 - in labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse: schema and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 19 20:57:33 EST 2009
Author: KrisVerlaenen
Date: 2009-02-19 20:57:33 -0500 (Thu, 19 Feb 2009)
New Revision: 25354
Added:
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/schema/runtimeRecognizer.exsd
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DefaultDroolsRuntimeRecognizer.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntime.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeRecognizer.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/SOAPlatform4RuntimeRecognizer.java
Modified:
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/plugin.xml
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsProjectPreferencePage.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimeDialog.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesBlock.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesPreferencePage.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeManager.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java
Log:
JBIDE-3670: Drools Runtime unclear how to correctly define
- Drools runtimes now store a list of jars that it consists of
- added DroolsRuntimeRecognizer extension point to auto-detect these jars based on the selected path
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/plugin.xml 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/plugin.xml 2009-02-20 01:57:33 UTC (rev 25354)
@@ -531,6 +531,7 @@
</extension>
<extension-point id="processExtension" name="Process Extension" schema="schema/processExtension.exsd"/>
+ <extension-point id="runtimeRecognizer" name="Drools Runtime Recognizer" schema="schema/runtimeRecognizer.exsd"/>
<extension
point="org.drools.eclipse.processExtension">
@@ -561,6 +562,12 @@
id="org.drools.eclipse.rulebuilder.wizards.NewGuidedRuleFileWizard"
name="Guided Rule"/>
</extension>
+ <extension
+ point="org.drools.eclipse.runtimeRecognizer">
+ <recognizer
+ class="org.drools.eclipse.util.SOAPlatform4RuntimeRecognizer">
+ </recognizer>
+ </extension>
<!-- tabbed properties
<extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/schema/runtimeRecognizer.exsd
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/schema/runtimeRecognizer.exsd (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/schema/runtimeRecognizer.exsd 2009-02-20 01:57:33 UTC (rev 25354)
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.drools.eclipse" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.drools.eclipse" id="runtimeRecognizer" name="Drools Runtime Recognizer"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice>
+ <element ref="recognizer"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="recognizer">
+ <complexType>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.drools.eclipse.util.DroolsRuntimeRecognizer"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsProjectPreferencePage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsProjectPreferencePage.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsProjectPreferencePage.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -3,7 +3,7 @@
import java.io.ByteArrayInputStream;
import org.drools.eclipse.DroolsEclipsePlugin;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
+import org.drools.eclipse.util.DroolsRuntime;
import org.drools.eclipse.util.DroolsRuntimeManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimeDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimeDialog.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimeDialog.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -2,7 +2,7 @@
import java.io.File;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
+import org.drools.eclipse.util.DroolsRuntime;
import org.drools.eclipse.util.DroolsRuntimeManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesBlock.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesBlock.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesBlock.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -4,6 +4,11 @@
import java.util.Iterator;
import java.util.List;
+import org.drools.eclipse.util.DefaultDroolsRuntimeRecognizer;
+import org.drools.eclipse.util.DroolsRuntime;
+import org.drools.eclipse.util.DroolsRuntimeManager;
+import org.drools.eclipse.util.DroolsRuntimeRecognizer;
+import org.drools.eclipse.util.SOAPlatform4RuntimeRecognizer;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.jdt.internal.debug.ui.SWTFactory;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
@@ -242,13 +247,14 @@
if (dialog.open() == Window.OK) {
DroolsRuntime result = dialog.getResult();
if (result != null) {
+ DroolsRuntimeManager.recognizeJars(result);
droolsRuntimes.add(result);
droolsRuntimesList.refresh();
droolsRuntimesList.setSelection(new StructuredSelection(result));
}
}
}
-
+
private void editDroolsRuntime() {
IStructuredSelection selection= (IStructuredSelection) droolsRuntimesList.getSelection();
DroolsRuntime runtime = (DroolsRuntime) selection.getFirstElement();
@@ -260,6 +266,7 @@
if (dialog.open() == Window.OK) {
DroolsRuntime result = dialog.getResult();
if (result != null) {
+ DroolsRuntimeManager.recognizeJars(result);
// replace with the edited VM
int index = droolsRuntimes.indexOf(runtime);
droolsRuntimes.remove(index);
@@ -319,28 +326,4 @@
return (DroolsRuntime) objects[0];
}
- public static class DroolsRuntime {
- private String name;
- private String path;
- private boolean isDefault;
-
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPath() {
- return path;
- }
- public void setPath(String path) {
- this.path = path;
- }
- public boolean isDefault() {
- return isDefault;
- }
- public void setDefault(boolean isDefault) {
- this.isDefault = isDefault;
- }
- }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesPreferencePage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesPreferencePage.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/preferences/DroolsRuntimesPreferencePage.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -1,6 +1,6 @@
package org.drools.eclipse.preferences;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
+import org.drools.eclipse.util.DroolsRuntime;
import org.drools.eclipse.util.DroolsRuntimeManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.PreferencePage;
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DefaultDroolsRuntimeRecognizer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DefaultDroolsRuntimeRecognizer.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DefaultDroolsRuntimeRecognizer.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -0,0 +1,30 @@
+package org.drools.eclipse.util;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.Path;
+
+public class DefaultDroolsRuntimeRecognizer implements DroolsRuntimeRecognizer {
+
+ public String[] recognizeJars(String path) {
+ List<String> list = new ArrayList<String>();
+ if (path != null) {
+ File file = (new Path(path)).toFile();
+ addJarNames(file, list);
+ }
+ return list.toArray(new String[list.size()]);
+ }
+
+ private void addJarNames(File file, List<String> list) {
+ File[] files = file.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ if (files[i].isDirectory() && "lib".equals(files[i].getName())) {
+ addJarNames(files[i], list);
+ } else if (files[i].getPath().endsWith(".jar")) {
+ list.add(files[i].getAbsolutePath());
+ }
+ }
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -1,108 +1,74 @@
-package org.drools.eclipse.util;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.eclipse.DroolsEclipsePlugin;
-import org.drools.eclipse.preferences.IDroolsConstants;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IAccessRule;
-import org.eclipse.jdt.core.IClasspathContainer;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.internal.core.ClasspathAccessRule;
-import org.eclipse.jdt.internal.core.ClasspathEntry;
-
-public class DroolsClasspathContainer implements IClasspathContainer {
-
- IClasspathEntry droolsLibraryEntries[];
- IPath path;
- IJavaProject javaProject;
-
- public DroolsClasspathContainer(IJavaProject project, IPath path) {
- javaProject = null;
- javaProject = project;
- this.path = path;
- }
-
- public IClasspathEntry[] getClasspathEntries() {
- if (droolsLibraryEntries == null) {
- droolsLibraryEntries = createDroolsLibraryEntries(javaProject);
- }
- return droolsLibraryEntries;
- }
-
- public String getDescription() {
- return "Drools Library";
- }
-
- public int getKind() {
- return 1;
- }
-
- public IPath getPath() {
- return path;
- }
-
- private IClasspathEntry[] createDroolsLibraryEntries(IJavaProject project) {
- int internalAPI = DroolsEclipsePlugin.getDefault()
- .getPluginPreferences().getInt(IDroolsConstants.INTERNAL_API);
- List jarNames = getJarNames(project);
- List list = new ArrayList();
- for (int i = 0; i < jarNames.size(); i++) {
- String jarName = (String) jarNames.get(i);
- Path path = new Path(jarName);
- if (internalAPI != 0) {
- if (jarName.contains("drools-api")) {
- list.add(JavaCore.newLibraryEntry(path, path, null));
- } else {
- IAccessRule[] accessRules = new IAccessRule[1];
- accessRules[0] = new ClasspathAccessRule(new Path("**"), internalAPI);
- list.add(JavaCore.newLibraryEntry(
- path, path, null, accessRules, ClasspathEntry.NO_EXTRA_ATTRIBUTES, false));
- }
- }
- }
- // also add jdt core jar from eclipse itself
-// String pluginRootString = Platform.getInstallLocation().getURL().getPath() + "plugins/";
-// File pluginRoot = new Path(pluginRootString).toFile();
-// File[] files = pluginRoot.listFiles();
-// for (int i = 0; i < files.length; i++) {
-// if (files[i].getAbsolutePath().indexOf("org.eclipse.jdt.core_3.4") > -1) {
-// Path path = new Path(files[i].getAbsolutePath());
-// list.add(JavaCore.newLibraryEntry(path, path, null));
-// break;
-// }
-// }
- return (IClasspathEntry[]) list.toArray(new IClasspathEntry[list.size()]);
- }
-
- private List getJarNames(IJavaProject project) {
- String s = DroolsRuntimeManager.getDroolsRuntimePath(project.getProject());
- List list = new ArrayList();
- if (s != null) {
- File file = (new Path(s)).toFile();
- addJarNames(file, list);
- }
- return list;
- }
-
- private void addJarNames(File file, List list) {
- File[] files = file.listFiles();
- for (int i = 0; i < files.length; i++) {
- if (files[i].isDirectory() && "lib".equals(files[i].getName())) {
- addJarNames(files[i], list);
- } else if (files[i].getPath().endsWith(".jar")) {
- list.add(files[i].getAbsolutePath());
- }
- }
- }
-
+package org.drools.eclipse.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.preferences.IDroolsConstants;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IAccessRule;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.core.ClasspathAccessRule;
+import org.eclipse.jdt.internal.core.ClasspathEntry;
+
+public class DroolsClasspathContainer implements IClasspathContainer {
+
+ IClasspathEntry droolsLibraryEntries[];
+ IPath path;
+ IJavaProject javaProject;
+
+ public DroolsClasspathContainer(IJavaProject project, IPath path) {
+ javaProject = null;
+ javaProject = project;
+ this.path = path;
+ }
+
+ public IClasspathEntry[] getClasspathEntries() {
+ if (droolsLibraryEntries == null) {
+ droolsLibraryEntries = createDroolsLibraryEntries(javaProject);
+ }
+ return droolsLibraryEntries;
+ }
+
+ public String getDescription() {
+ return "Drools Library";
+ }
+
+ public int getKind() {
+ return 1;
+ }
+
+ public IPath getPath() {
+ return path;
+ }
+
+ private IClasspathEntry[] createDroolsLibraryEntries(IJavaProject project) {
+ int internalAPI = DroolsEclipsePlugin.getDefault()
+ .getPluginPreferences().getInt(IDroolsConstants.INTERNAL_API);
+ String[] jarNames = getJarNames(project);
+ List<IClasspathEntry> list = new ArrayList<IClasspathEntry>();
+ for (int i = 0; i < jarNames.length; i++) {
+ Path path = new Path(jarNames[i]);
+ if (internalAPI != 0) {
+ if (jarNames[i].contains("drools-api")) {
+ list.add(JavaCore.newLibraryEntry(path, path, null));
+ } else {
+ IAccessRule[] accessRules = new IAccessRule[1];
+ accessRules[0] = new ClasspathAccessRule(new Path("**"), internalAPI);
+ list.add(JavaCore.newLibraryEntry(
+ path, path, null, accessRules, ClasspathEntry.NO_EXTRA_ATTRIBUTES, false));
+ }
+ }
+ }
+ return (IClasspathEntry[]) list.toArray(new IClasspathEntry[list.size()]);
+ }
+
+ private String[] getJarNames(IJavaProject project) {
+ return DroolsRuntimeManager.getDroolsRuntimeJars(project.getProject());
+ }
+
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntime.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntime.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -0,0 +1,41 @@
+package org.drools.eclipse.util;
+
+public class DroolsRuntime {
+
+ private String name;
+ private String path;
+ private boolean isDefault;
+ private String[] jars;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public void setDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public String[] getJars() {
+ return jars;
+ }
+
+ public void setJars(String[] jars) {
+ this.jars = jars;
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeManager.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeManager.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeManager.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -12,17 +12,17 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.preferences.IDroolsConstants;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
-import sun.reflect.ReflectionFactory.GetReflectionFactoryAction;
-
public class DroolsRuntimeManager {
+ private static final String DROOLS_RUNTIME_RECOGNIZER = "org.drools.eclipse.runtimeRecognizer";
+
public static void createDefaultRuntime(String location) {
List<String> jars = new ArrayList<String>();
// get all drools jars from drools eclipse plugin
@@ -88,7 +88,13 @@
private static String generateString(DroolsRuntime[] droolsRuntimes) {
String result = "";
for (DroolsRuntime runtime: droolsRuntimes) {
- result += runtime.getName() + "#" + runtime.getPath() + "#" + runtime.isDefault() + "###";
+ result += runtime.getName() + "#" + runtime.getPath() + "#" + runtime.isDefault() + "# ";
+ if (runtime.getJars() != null) {
+ for (String jar: runtime.getJars()) {
+ result += jar + ";";
+ }
+ }
+ result += "###";
}
return result;
}
@@ -103,6 +109,17 @@
runtime.setName(properties[0]);
runtime.setPath(properties[1]);
runtime.setDefault("true".equals(properties[2]));
+ if (properties.length > 3) {
+ List<String> list = new ArrayList<String>();
+ String[] jars = properties[3].split(";");
+ for (String jar: jars) {
+ jar = jar.trim();
+ if (jar.length() > 0) {
+ list.add(jar);
+ }
+ }
+ runtime.setJars(list.toArray(new String[list.size()]));
+ }
result.add(runtime);
}
}
@@ -159,14 +176,48 @@
return null;
}
- public static String getDroolsRuntimePath(IProject project) {
+ public static String[] getDroolsRuntimeJars(IProject project) {
String runtimeName = getDroolsRuntime(project);
+ DroolsRuntime runtime = null;
if (runtimeName == null) {
- DroolsRuntime runtime = getDefaultDroolsRuntime();
- return runtime == null ? null : runtime.getPath();
+ runtime = getDefaultDroolsRuntime();
+ } else {
+ runtime = getDroolsRuntime(runtimeName);
}
- DroolsRuntime runtime = getDroolsRuntime(runtimeName);
- return runtime == null ? null : runtime.getPath();
+ if (runtime.getJars() == null || runtime.getJars().length == 0) {
+ recognizeJars(runtime);
+ }
+ return runtime == null ? null : runtime.getJars();
}
+
+ public static void recognizeJars(DroolsRuntime runtime) {
+ String path = runtime.getPath();
+ if (path != null) {
+ try {
+ IConfigurationElement[] config = Platform.getExtensionRegistry()
+ .getConfigurationElementsFor(DROOLS_RUNTIME_RECOGNIZER);
+ for (IConfigurationElement e : config) {
+ Object o = e.createExecutableExtension("class");
+ if (o instanceof DroolsRuntimeRecognizer) {
+ String[] jars = ((DroolsRuntimeRecognizer) o).recognizeJars(path);
+ if (jars != null && jars.length > 0) {
+ runtime.setJars(jars);
+ return;
+ }
+ }
+ }
+ } catch (Exception ex) {
+ System.out.println(ex.getMessage());
+ }
+ DroolsRuntimeRecognizer recognizer = new SOAPlatform4RuntimeRecognizer();
+ String[] jars = recognizer.recognizeJars(path);
+ if (jars != null && jars.length > 0) {
+ runtime.setJars(jars);
+ return;
+ }
+ runtime.setJars(new DefaultDroolsRuntimeRecognizer().recognizeJars(path));
+ }
+ }
+
}
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeRecognizer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeRecognizer.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsRuntimeRecognizer.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -0,0 +1,7 @@
+package org.drools.eclipse.util;
+
+public interface DroolsRuntimeRecognizer {
+
+ String[] recognizeJars(String path);
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/SOAPlatform4RuntimeRecognizer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/SOAPlatform4RuntimeRecognizer.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/SOAPlatform4RuntimeRecognizer.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -0,0 +1,64 @@
+package org.drools.eclipse.util;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+
+public class SOAPlatform4RuntimeRecognizer implements DroolsRuntimeRecognizer {
+
+ public String[] recognizeJars(String path) {
+ IPath jbossrulesesbPath = new Path(path).append("jboss-esb/server/default/deploy/jbrules.esb");
+ File jbossrulesesb = jbossrulesesbPath.toFile();
+ if (jbossrulesesb.isDirectory()) {
+ List<String> list = new ArrayList<String>();
+ // the SOA platform
+ File[] files = jbossrulesesb.listFiles(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if (!name.endsWith(".jar")) {
+ return false;
+ }
+ if (name.startsWith("jbossesb")) {
+ return false;
+ }
+ return true;
+ }
+
+ });
+ for (int i = 0; i < files.length; i++) {
+ list.add(files[i].getAbsolutePath());
+ }
+ IPath jbossesbsarPath = new Path(path).append("jboss-esb/server/default/deploy/jbossesb.sar/lib");
+ File jbossesbsar=jbossesbsarPath.toFile();
+ if (jbossesbsar.isDirectory()) {
+ files = jbossesbsar.listFiles(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if (!name.endsWith(".jar")) {
+ return false;
+ }
+ if (name.startsWith("mvel")) {
+ return true;
+ }
+ if (name.startsWith("xstream")) {
+ return true;
+ }
+ return false;
+ }
+
+ });
+ for (int i = 0; i < files.length; i++) {
+ list.add(files[i].getAbsolutePath());
+ }
+ }
+ return list.toArray(new String[list.size()]);
+ }
+ return null;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -3,7 +3,7 @@
import java.util.HashMap;
import org.drools.eclipse.preferences.DroolsProjectPreferencePage;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
+import org.drools.eclipse.util.DroolsRuntime;
import org.drools.eclipse.util.DroolsRuntimeManager;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java 2009-02-19 20:09:07 UTC (rev 25353)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java 2009-02-20 01:57:33 UTC (rev 25354)
@@ -10,8 +10,8 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.builder.DroolsBuilder;
-import org.drools.eclipse.preferences.DroolsRuntimesBlock.DroolsRuntime;
import org.drools.eclipse.util.DroolsClasspathContainer;
+import org.drools.eclipse.util.DroolsRuntime;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
More information about the jboss-svn-commits
mailing list