You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2006/12/03 23:49:32 UTC

svn commit: r481961 - in /ant/core/trunk/src/main/org/apache/tools/ant/util: ScriptRunnerBase.java optional/ScriptRunner.java

Author: peterreilly
Date: Sun Dec  3 14:49:29 2006
New Revision: 481961

URL: http://svn.apache.org/viewvc?view=rev&rev=481961
Log:
change supportslanguge method

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/util/ScriptRunnerBase.java
    ant/core/trunk/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/ScriptRunnerBase.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/ScriptRunnerBase.java?view=diff&rev=481961&r1=481960&r2=481961
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/ScriptRunnerBase.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/ScriptRunnerBase.java Sun Dec  3 14:49:29 2006
@@ -126,6 +126,13 @@
     public abstract boolean supportsLanguage();
 
     /**
+     * Get the name of the manager prefix used for this
+     * scriptrunner.
+     * @return the prefix string.
+     */
+    public abstract String getManagerName();
+
+    /**
      * Defines the language (required).
      * @param language the scripting language name for the script.
      */
@@ -214,6 +221,22 @@
      */
     public void clearScript() {
         this.script = "";
+    }
+
+    /**
+     * Set the project for this runner.
+     * @param project the project.
+     */
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
+    /**
+     * Get the project for this runner.
+     * @return the project.
+     */
+    public Project getProject() {
+        return project;
     }
 
     /**

Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java?view=diff&rev=481961&r1=481960&r2=481961
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java Sun Dec  3 14:49:29 2006
@@ -21,9 +21,14 @@
 import org.apache.bsf.BSFManager;
 import org.apache.bsf.BSFEngine;
 
-import org.apache.tools.ant.BuildException;
 
 import java.util.Iterator;
+import java.util.Hashtable;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+import org.apache.tools.ant.util.ReflectUtil;
 import org.apache.tools.ant.util.ScriptRunnerBase;
 
 /**
@@ -44,26 +49,38 @@
     private BSFManager manager;
 
     /**
+     * Get the name of the manager prefix.
+     * @return "bsf"
+     */
+    public String getManagerName() {
+        return "bsf";
+    }
+
+    /**
      * Check if bsf supports the language.
      * @return true if bsf can create an engine for this language.
      */
     public boolean supportsLanguage() {
-        if (manager != null) {
-            return true;
+        Hashtable table = (Hashtable) ReflectUtil.getField(
+            new BSFManager(), "registeredEngines");
+        String engineClassName = (String) table.get(getLanguage());
+        if (engineClassName == null) {
+            getProject().log(
+                "This is no BSF engine class for language '"
+                + getLanguage() + "'",
+                Project.MSG_VERBOSE);
+            return false;
         }
-        checkLanguage();
-        ClassLoader origLoader = replaceContextLoader();
         try {
-            BSFManager m = createManager();
-            BSFEngine e =
-                engine != null
-                ? engine
-                : m.loadScriptingEngine(getLanguage());
-            return e != null;
-        } catch (Exception ex) {
+            getScriptClassLoader().loadClass(engineClassName);
+            return true;
+        } catch (Throwable ex) {
+            getProject().log(
+                "unable to create BSF engine class for language '"
+                + getLanguage() + "'",
+                ex,
+                Project.MSG_VERBOSE);
             return false;
-        } finally {
-            restoreContextLoader(origLoader);
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org