You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2015/02/04 19:18:11 UTC
svn commit: r1657361 - in /uima/uima-as/trunk: src/main/scripts/
src/test/java/org/apache/uima/as/dd/
uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/
Author: schor
Date: Wed Feb 4 18:18:10 2015
New Revision: 1657361
URL: http://svn.apache.org/r1657361
Log:
[UIMA-4213] dd2spring - throw new exception if ERROR occurs
Added:
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2springException.java
Modified:
uima/uima-as/trunk/src/main/scripts/dd2spring.xsl
uima/uima-as/trunk/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2spring.java
Modified: uima/uima-as/trunk/src/main/scripts/dd2spring.xsl
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/src/main/scripts/dd2spring.xsl?rev=1657361&r1=1657360&r2=1657361&view=diff
==============================================================================
--- uima/uima-as/trunk/src/main/scripts/dd2spring.xsl (original)
+++ uima/uima-as/trunk/src/main/scripts/dd2spring.xsl Wed Feb 4 18:18:10 2015
@@ -809,7 +809,7 @@
<xsl:with-param name="inputOrReturn" select="'input'"/>
<xsl:with-param name="kind" select="'primitive'"/> <!-- used in ctrl id name -->
<xsl:with-param name="msgHandlerChainID" select="f:getMetaMsgHandlerID(., 'primitive')"/>
- <xsl:with-param name="nbrConcurrentConsumers" select="u:scaleout/@numberOfInstances"/>
+ <xsl:with-param name="nbrConcurrentConsumers" select="fn:string(u:scaleout/@numberOfInstances)"/>
<xsl:with-param name="remote" select="()"/>
<xsl:with-param name="poolingTaskExecutor" select="$poolingTaskExecutorID"/>
</xsl:call-template>
@@ -1517,9 +1517,9 @@
<xsl:variable name="isTopLvlSync" as="xs:boolean" select=
"if (../u:service/u:analysisEngine[(not(@async)) or (@async = ('no', 'false'))]) then fn:true() else fn:false()"/>
- <xsl:variable name="nbrInstances" select="../u:service/u:analysisEngine/u:scaleout/@numberOfInstances"/>
+ <xsl:variable name="nbrInstances" select="fn:string(../u:service/u:analysisEngine/u:scaleout/@numberOfInstances)"/>
- <xsl:variable name="casPoolSize" as="xs:integer">
+ <xsl:variable name="casPoolSize">
<xsl:choose>
<xsl:when test="$isTopLvlSync and
$nbrInstances and
@@ -1528,13 +1528,13 @@
<xsl:sequence select="f:msgWithLineNumber(
'WARN',
('Top level Async Primitive specifies a scaleout of', $nbrInstances,
- ', but also specifies a Cas Pool size of', ./@numberOfCASes,
+ ', but also specifies a Cas Pool size of', fn:string(./@numberOfCASes),
'. The Cas Pool size is being forced to be the same as the scaleout.'),
.)"/>
<xsl:sequence select="$nbrInstances"/>
</xsl:when>
<xsl:otherwise>
- <xsl:sequence select="if (./@numberOfCASes) then ./@numberOfCASes else '1'"/>
+ <xsl:sequence select="if (./@numberOfCASes) then fn:string(./@numberOfCASes) else '1'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
@@ -2020,7 +2020,7 @@
<xsl:when test="u:scaleout">
<!--xsl:message select="'*** defaulting scaleout'"/>
<xsl:message select="u:scaleout"/-->
- <u:scaleout numberOfInstances="{if (u:scaleout/@numberOfInstances) then u:scaleout/@numberOfInstances else 1}"/>
+ <u:scaleout numberOfInstances="{if (u:scaleout/@numberOfInstances) then fn:string(u:scaleout/@numberOfInstances) else 1}"/>
</xsl:when>
<xsl:otherwise>
<u:scaleout numberOfInstances="1"/>
@@ -3027,5 +3027,8 @@
*** <xsl:sequence select="concat($kind,':')"/> line-number: <xsl:sequence select="saxon:line-number($node)"/>
<xsl:sequence select="$msg"/>
</xsl:message>
+ <!-- xsl:if test="$kind eq 'ERROR'">
+ <xsl:sequence select="error()"/>
+ </xsl:if-->
</xsl:function>
</xsl:stylesheet>
Modified: uima/uima-as/trunk/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java?rev=1657361&r1=1657360&r2=1657361&view=diff
==============================================================================
--- uima/uima-as/trunk/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java (original)
+++ uima/uima-as/trunk/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java Wed Feb 4 18:18:10 2015
@@ -26,6 +26,7 @@ import java.util.regex.Pattern;
import junit.framework.TestCase;
import org.apache.uima.adapter.jms.service.Dd2spring;
+import org.apache.uima.adapter.jms.service.Dd2springException;
import org.apache.uima.test.junit_extension.FileCompare;
import org.apache.uima.test.junit_extension.TeePrintStream;
@@ -81,6 +82,9 @@ public class Dd2SpringTest extends TestC
private static Pattern nevermatch = Pattern.compile(" ");
private static Dd2spring dd2SpringInstance = new Dd2spring();
+ static {
+ dd2SpringInstance.setTestMode(); // prevents throwing on errors
+ }
protected void setUp() {
@@ -107,7 +111,7 @@ public class Dd2SpringTest extends TestC
checkDd2SpringErrMsg(
"defaultingPrimAEMultInstanceDiffCasPool.xml",
"running test defaultingPrimAEMultInstanceDiffCasPool.xml: \n" +
-" *** WARN: line-number: 26 Top level Async Primitive specifies a scaleout of numberOfInstances=\"40\", but also specifies a Cas Pool size of numberOfCASes=\"30\". The Cas Pool size is being forced to be the same as the scaleout.");
+" *** WARN: line-number: 26 Top level Async Primitive specifies a scaleout of 40 , but also specifies a Cas Pool size of 30 . The Cas Pool size is being forced to be the same as the scaleout.");
}
@@ -243,6 +247,7 @@ public class Dd2SpringTest extends TestC
private void checkDd2Spring(String dd) throws Exception {
System.err.print("running test " + dd + ": ");
+
File springContextFile =
dd2SpringInstance.convertDd2Spring(pathToDds + dd, dd2SpringXsltFilePath, saxonClasspath, "");
Modified: uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2spring.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2spring.java?rev=1657361&r1=1657360&r2=1657361&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2spring.java (original)
+++ uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2spring.java Wed Feb 4 18:18:10 2015
@@ -19,8 +19,12 @@
package org.apache.uima.adapter.jms.service;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
+import java.io.PrintStream;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
@@ -31,6 +35,7 @@ import java.util.List;
import org.apache.uima.UIMAFramework;
import org.apache.uima.adapter.jms.JmsConstants;
+import org.apache.uima.util.FileUtils;
import org.apache.uima.util.Level;
public class Dd2spring {
@@ -40,18 +45,25 @@ public class Dd2spring {
private static final Class THIS_CLASS = Dd2spring.class;
private ClassLoader saxonClassLoader;
+
+ private boolean testMode = false;
+ public void setTestMode() {
+ testMode = true;
+ }
+
/**
* Test driver arg = path_to_source, path_to_xslt, path_to_saxon_jar, uima-as-debug flag
*
* @param args
+ * @throws Dd2springException
*/
- public static void main(String[] args) {
+ public static void main(String[] args) throws Dd2springException {
new Dd2spring().convertDd2Spring(args[0], args[1], args[2], args[3]);
}
public File convertDd2Spring(String ddFilePath, String dd2SpringXsltFilePath,
- String saxonClasspath, String uimaAsDebug) {
+ String saxonClasspath, String uimaAsDebug) throws Dd2springException {
URL urlForSaxonClassPath;
try {
@@ -76,7 +88,8 @@ public class Dd2spring {
return null;
}
- convertDd2Spring(tempFile, ddFilePath, dd2SpringXsltFilePath, urlForSaxonClassPath);
+ String errData = convertDd2Spring(tempFile, ddFilePath, dd2SpringXsltFilePath, urlForSaxonClassPath);
+ System.err.print(errData);
// delete the file when terminating if
// a) uimaAsDebug is not specified (is null) or
@@ -84,7 +97,16 @@ public class Dd2spring {
if (null == uimaAsDebug || uimaAsDebug.equals("")) {
tempFile.deleteOnExit();
}
-
+
+ // scan output for "ERROR: " and throw if found
+ // https://issues.apache.org/jira/browse/UIMA-4213
+ if (errData.contains("*** ERROR: ")) {
+ if (testMode) {
+ System.out.println("DD2Spring transformation had one or more errors; the tempFile created was" + tempFile.getAbsolutePath());
+ } else {
+ throw new Dd2springException("DD2spring transformation had one or more errors; the tempFile created was" + tempFile.getAbsolutePath());
+ }
+ }
return tempFile;
}
@@ -98,7 +120,7 @@ public class Dd2spring {
* classpath for saxon8.jar
* @return temp file with generated Spring from dd2spring transform
*/
- public void convertDd2Spring(File tempFile, String ddFilePath, String dd2SpringXsltFilePath,
+ public String convertDd2Spring(File tempFile, String ddFilePath, String dd2SpringXsltFilePath,
URL saxonClasspathURL) {
if (null == saxonClassLoader) {
@@ -111,72 +133,88 @@ public class Dd2spring {
}
Class mainStartClass = null;
try {
- mainStartClass = Class.forName("net.sf.saxon.Transform", true, saxonClassLoader);
- } catch (ClassNotFoundException e) {
- System.err.println("Error - can't load Saxon jar from " + saxonClasspathURL
- + " for dd2spring transformation.");
- e.printStackTrace();
- UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
- "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMA_dd2spring_saxon_missing_SEVERE");
- return;
- }
-
- // args for saxon
- // -l -s deployment_descriptor} -o output_file_path dd2spring.xsl_file_path
-
- List<String> argsForSaxon = new ArrayList<String>();
- argsForSaxon.add("-l"); // turn on line numbers
- argsForSaxon.add("-s"); // source file
- argsForSaxon.add(ddFilePath); // source file
- argsForSaxon.add("-o"); // output file
- argsForSaxon.add(tempFile.getAbsolutePath()); // output file
- argsForSaxon.add(dd2SpringXsltFilePath); // xslt transform to apply
-
- if (null != System.getProperty("uima-as.dd2spring.noTempQueues")) {
- argsForSaxon.add("noTempQueues=true"); // disable generate of temp queues (for testing)
- }
-
- Method mainMethod = null;
- try {
- mainMethod = mainStartClass.getMethod("main", mainArg);
- } catch (SecurityException e) {
- e.printStackTrace();
- UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
- "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMA_dd2spring_security_exception_calling_saxon");
- return;
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
- "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMA_dd2spring_internal_error_calling_saxon");
- return;
- }
- try {
- mainMethod.invoke(null,
- new Object[] { argsForSaxon.toArray(new String[argsForSaxon.size()]) });
- } catch (IllegalArgumentException e) {
+ try {
+ mainStartClass = Class.forName("net.sf.saxon.Transform", true, saxonClassLoader);
+ } catch (ClassNotFoundException e) {
+ System.err.println("Error - can't load Saxon jar from " + saxonClasspathURL
+ + " for dd2spring transformation.");
+ e.printStackTrace();
+ UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
+ "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMA_dd2spring_saxon_missing_SEVERE");
+ return "";
+ }
+
+ // args for saxon
+ // -l -s deployment_descriptor} -o output_file_path dd2spring.xsl_file_path
+
+ List<String> argsForSaxon = new ArrayList<String>();
+ argsForSaxon.add("-l"); // turn on line numbers
+ argsForSaxon.add("-s"); // source file
+ argsForSaxon.add(ddFilePath); // source file
+ argsForSaxon.add("-o"); // output file
+ argsForSaxon.add(tempFile.getAbsolutePath()); // output file
+ argsForSaxon.add(dd2SpringXsltFilePath); // xslt transform to apply
+
+ if (null != System.getProperty("uima-as.dd2spring.noTempQueues")) {
+ argsForSaxon.add("noTempQueues=true"); // disable generate of temp queues (for testing)
+ }
+
+ Method mainMethod = null;
+ try {
+ mainMethod = mainStartClass.getMethod("main", mainArg);
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
+ "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMA_dd2spring_security_exception_calling_saxon");
+ return "";
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
+ "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMA_dd2spring_internal_error_calling_saxon");
+ return "";
+ }
+ PrintStream savedErr = System.err;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos);
+ try {
+ System.setErr(ps);
+ mainMethod.invoke(null,
+ new Object[] { argsForSaxon.toArray(new String[argsForSaxon.size()]) });
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
+ "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMA_dd2spring_internal_error_calling_saxon");
+ ps.close();
+ return baos.toString("UTF-8");
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
+ "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMA_dd2spring_internal_error_calling_saxon");
+ ps.close();
+ return baos.toString("UTF-8");
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
+ "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMA_dd2spring_internal_error_calling_saxon");
+ ps.close();
+ return baos.toString("UTF-8");
+ } finally {
+ System.setErr(savedErr);
+ }
+
+ ps.close();
+ return baos.toString("UTF-8");
+ } catch (UnsupportedEncodingException e) {
e.printStackTrace();
- UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
- "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMA_dd2spring_internal_error_calling_saxon");
- return;
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
- "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMA_dd2spring_internal_error_calling_saxon");
- return;
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- UIMAFramework.getLogger(THIS_CLASS).logrb(Level.CONFIG, THIS_CLASS.getName(),
- "convertDD2Spring", JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMA_dd2spring_internal_error_calling_saxon");
- return;
+ return "";
}
-
- return;
+
}
}
Added: uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2springException.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2springException.java?rev=1657361&view=auto
==============================================================================
--- uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2springException.java (added)
+++ uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/service/Dd2springException.java Wed Feb 4 18:18:10 2015
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.adapter.jms.service;
+
+public class Dd2springException extends Exception {
+
+ public Dd2springException() {
+ super();
+ }
+
+ public Dd2springException(String message) {
+ super(message);
+ }
+
+ public Dd2springException(Throwable cause) {
+ super(cause);
+ }
+
+ public Dd2springException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}