You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2012/03/20 17:21:14 UTC
svn commit: r1302972 - in /lucene/dev/trunk/solr: CHANGES.txt
contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ScriptTransformer.java
Author: jdyer
Date: Tue Mar 20 16:21:13 2012
New Revision: 1302972
URL: http://svn.apache.org/viewvc?rev=1302972&view=rev
Log:
SOLR-3260: better messages when ScriptTransform fails on init
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ScriptTransformer.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1302972&r1=1302971&r2=1302972&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Mar 20 16:21:13 2012
@@ -694,6 +694,9 @@ Bug Fixes
* SOLR-2124: Do not log stack traces for "Service Disabled" / 503 Exceptions (PingRequestHandler, etc)
(James Dyer, others)
+
+* SOLR-3260: DataImportHandler: ScriptTransformer gives better error messages when
+ problems arise on initalization (no Script Engine, invalid script, etc). (James Dyer)
Other Changes
----------------------
Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ScriptTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ScriptTransformer.java?rev=1302972&r1=1302971&r2=1302972&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ScriptTransformer.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ScriptTransformer.java Tue Mar 20 16:21:13 2012
@@ -72,25 +72,35 @@ public class ScriptTransformer extends T
}
private void initEngine(Context context) {
+ String scriptText = context.getScript();
+ String scriptLang = context.getScriptLanguage();
+ if (scriptText == null) {
+ throw new DataImportHandlerException(SEVERE,
+ "<script> tag is not present under <dataConfig>");
+ }
+ Object scriptEngineMgr = null;
+ try {
+ scriptEngineMgr = Class.forName("javax.script.ScriptEngineManager")
+ .newInstance();
+ } catch (Exception e) {
+ wrapAndThrow(SEVERE, e, "<script> can be used only in java 6 or above");
+ }
try {
- String scriptText = context.getScript();
- String scriptLang = context.getScriptLanguage();
- if(scriptText == null ){
- throw new DataImportHandlerException(SEVERE,
- "<script> tag is not present under <dataConfig>");
- }
- Object scriptEngineMgr = Class
- .forName("javax.script.ScriptEngineManager").newInstance();
- // create a Script engine
Method getEngineMethod = scriptEngineMgr.getClass().getMethod(
- "getEngineByName", String.class);
+ "getEngineByName", String.class);
engine = getEngineMethod.invoke(scriptEngineMgr, scriptLang);
+ } catch (Exception e) {
+ wrapAndThrow(SEVERE, e, "Cannot load Script Engine for language: "
+ + scriptLang);
+ }
+ try {
Method evalMethod = engine.getClass().getMethod("eval", String.class);
invokeFunctionMethod = engine.getClass().getMethod("invokeFunction",
- String.class, Object[].class);
+ String.class, Object[].class);
evalMethod.invoke(engine, scriptText);
} catch (Exception e) {
- wrapAndThrow(SEVERE,e, "<script> can be used only in java 6 or above");
+ wrapAndThrow(SEVERE, e, "'eval' failed with language: " + scriptLang
+ + " and script: \n" + scriptText);
}
}