This is an automated email from the ASF dual-hosted git repository. rec pushed a commit to branch refactoring/189-Avoid-type-system-scanning-when-initializing-uimaFIT-annotators-from-a-Ruta-script in repository https://gitbox.apache.org/repos/asf/uima-ruta.git
commit f61a748f24642a83fbac1a6cffeb52a722da9a24 Author: Richard Eckart de Castilho <[email protected]> AuthorDate: Thu Dec 12 13:37:38 2024 +0100 Issue #189: Avoid type system scanning when initializing uimaFIT annotators from a Ruta script - Pass a null TS to avoid scanning --- .../main/java/org/apache/uima/ruta/engine/RutaEngine.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java b/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java index 1c86fbe7..dd4d854c 100644 --- a/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java +++ b/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java @@ -21,6 +21,7 @@ package org.apache.uima.ruta.engine; import static java.util.Arrays.asList; import static java.util.stream.Collectors.joining; +import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription; import java.io.File; import java.io.FileNotFoundException; @@ -49,7 +50,6 @@ import org.apache.uima.UimaContext; import org.apache.uima.UimaContextAdmin; import org.apache.uima.analysis_component.AnalysisComponent; import org.apache.uima.analysis_engine.AnalysisEngine; -import org.apache.uima.analysis_engine.AnalysisEngineDescription; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.Feature; @@ -59,11 +59,11 @@ import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.fit.component.JCasAnnotator_ImplBase; import org.apache.uima.fit.descriptor.ConfigurationParameter; -import org.apache.uima.fit.factory.AnalysisEngineFactory; import org.apache.uima.fit.internal.ResourceManagerFactory; import org.apache.uima.jcas.JCas; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceManager; +import org.apache.uima.resource.metadata.TypeSystemDescription; import org.apache.uima.ruta.FilterManager; import org.apache.uima.ruta.ReindexUpdateMode; import org.apache.uima.ruta.RutaBasicUtils; @@ -1094,8 +1094,9 @@ public class RutaEngine extends JCasAnnotator_ImplBase { AnalysisEngine eachEngine = null; try { Class<? extends AnalysisComponent> uimafitClass = loadClass(eachUimafitEngine); - List<String> configurationData = script.getConfigurationData(eachUimafitEngine); - AnalysisEngineDescription aed = AnalysisEngineFactory.createEngineDescription(uimafitClass, + var configurationData = script.getConfigurationData(eachUimafitEngine); + // We pass a null type-system to avoid that uimaFIT does a TS scan itself (which can be slow) + var aed = createEngineDescription(uimafitClass, (TypeSystemDescription) null, configurationData.toArray()); eachEngine = UIMAFramework.produceAnalysisEngine(aed, resourceManager, null); } catch (ClassNotFoundException | ResourceInitializationException e) { @@ -1132,8 +1133,7 @@ public class RutaEngine extends JCasAnnotator_ImplBase { + classLoaderList + "]: " + errorList); } - private <T> Class<T> loadClass(String className) - throws ClassNotFoundException { + private <T> Class<T> loadClass(String className) throws ClassNotFoundException { ClassLoader extCl = resourceManager.getExtensionClassLoader(); ClassLoader tccl = Thread.currentThread().getContextClassLoader(); ClassLoader local = getClass().getClassLoader();
