This is an automated email from the ASF dual-hosted git repository. rec pushed a commit to branch feature/100-Enable-type-system-discovery-via-SPI-in-OSGI in repository https://gitbox.apache.org/repos/asf/uima-ruta.git
commit c522a9e5f6a76bd9e6e46a64bc35e7c8d214f19f Author: Richard Eckart de Castilho <[email protected]> AuthorDate: Wed Aug 31 17:16:34 2022 +0200 Issue #100 - Enable type system discovery via SPI in OSGI - Add missing OSGI package imports - Use utility method from core in SPI --- ruta-typesystem/pom.xml | 3 +- .../spi/RutaTypeSystemDescriptionProvider.java | 44 ++-------------------- 2 files changed, 6 insertions(+), 41 deletions(-) diff --git a/ruta-typesystem/pom.xml b/ruta-typesystem/pom.xml index 12fe9d3e..a42eda00 100644 --- a/ruta-typesystem/pom.xml +++ b/ruta-typesystem/pom.xml @@ -104,7 +104,8 @@ <instructions> <Fragment-Host>org.apache.uima.ruta-core</Fragment-Host> <Import-Package> - org.apache.uima.ruta.type;-split-package:=merge-first + org.apache.uima.ruta.type;-split-package:=merge-first, + * </Import-Package> <Export-Package> org.apache.uima.ruta.type;-split-package:=merge-first, diff --git a/ruta-typesystem/src/main/java/org/apache/uima/ruta/type/spi/RutaTypeSystemDescriptionProvider.java b/ruta-typesystem/src/main/java/org/apache/uima/ruta/type/spi/RutaTypeSystemDescriptionProvider.java index 1edb9ef7..8739b736 100644 --- a/ruta-typesystem/src/main/java/org/apache/uima/ruta/type/spi/RutaTypeSystemDescriptionProvider.java +++ b/ruta-typesystem/src/main/java/org/apache/uima/ruta/type/spi/RutaTypeSystemDescriptionProvider.java @@ -18,21 +18,16 @@ */ package org.apache.uima.ruta.type.spi; -import java.io.IOException; -import java.net.URL; +import static org.apache.uima.util.TypeSystemUtil.loadTypeSystemDescriptionsFromClasspath; + import java.util.ArrayList; import java.util.List; -import org.apache.uima.UIMAFramework; import org.apache.uima.jcas.cas.TOP; -import org.apache.uima.resource.ResourceManager; -import org.apache.uima.resource.impl.ResourceManager_impl; import org.apache.uima.resource.metadata.TypeDescription; import org.apache.uima.resource.metadata.TypeSystemDescription; import org.apache.uima.spi.JCasClassProvider; import org.apache.uima.spi.TypeSystemDescriptionProvider; -import org.apache.uima.util.InvalidXMLException; -import org.apache.uima.util.XMLInputSource; public class RutaTypeSystemDescriptionProvider implements TypeSystemDescriptionProvider, JCasClassProvider { @@ -50,7 +45,8 @@ public class RutaTypeSystemDescriptionProvider "/org/apache/uima/ruta/engine/SourceDocumentInformation.xml"); } - @Override + @SuppressWarnings("unchecked") +@Override public List<Class<? extends TOP>> listJCasClasses() { List<Class<? extends TOP>> classes = new ArrayList<>(); @@ -69,36 +65,4 @@ public class RutaTypeSystemDescriptionProvider return classes; } - - public static List<TypeSystemDescription> loadTypeSystemDescriptionsFromClasspath( - Class<?> aContext, String... typeSystemDescriptionFiles) { - - ResourceManager resMgr = new ResourceManager_impl(aContext.getClassLoader()); - try { - List<TypeSystemDescription> typeSystemDescriptions = new ArrayList<>(); - - for (String typeSystem : typeSystemDescriptionFiles) { - URL resource = aContext.getResource(typeSystem); - if (resource == null) { - UIMAFramework.getLogger() - .error("Unable to locate type system description as a resource [{}]", typeSystem); - continue; - } - - try { - TypeSystemDescription tsd = UIMAFramework.getXMLParser() - .parseTypeSystemDescription(new XMLInputSource(resource)); - tsd.resolveImports(resMgr); - typeSystemDescriptions.add(tsd); - } catch (InvalidXMLException | IOException e) { - UIMAFramework.getLogger().error("Error loading type system description [{}] from [{}]", - typeSystem, resource, e); - } - } - - return typeSystemDescriptions; - } finally { - resMgr.destroy(); - } - } }
