You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2016/08/01 14:46:01 UTC
svn commit: r1754760 - in /uima/uimafit/trunk/uimafit-core: ./
src/main/java/org/apache/uima/fit/descriptor/
src/main/java/org/apache/uima/fit/factory/
src/test/java/org/apache/uima/fit/factory/
src/test/java/org/apache/uima/fit/factory/testAes/ src/te...
Author: rec
Date: Mon Aug 1 14:46:01 2016
New Revision: 1754760
URL: http://svn.apache.org/viewvc?rev=1754760&view=rev
Log:
[UIMA-5034] Add support for language capabilities
Added:
uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/descriptor/LanguageCapability.java (with props)
uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/testAes/SerializationTestAnnotator.java (with props)
uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml (with props)
Modified:
uima/uimafit/trunk/uimafit-core/pom.xml
uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java
uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java
Modified: uima/uimafit/trunk/uimafit-core/pom.xml
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/pom.xml?rev=1754760&r1=1754759&r2=1754760&view=diff
==============================================================================
--- uima/uimafit/trunk/uimafit-core/pom.xml (original)
+++ uima/uimafit/trunk/uimafit-core/pom.xml Mon Aug 1 14:46:01 2016
@@ -165,6 +165,7 @@
<exclude>src/test/resources/data/docs/test.xmi</exclude>
<exclude>src/test/resources/data/reference/JCasBuilderTest.dump</exclude>
<exclude>src/test/resources/data/reference/test.xmi.dump</exclude>
+ <exclude>src/test/resources/data/reference/SerializationTestAnnotator.xml</exclude>
<!-- These configuration files cannot bear a license header -->
<exclude>src/test/resources/META-INF/org.apache.uima.fit/fsindexes.txt</exclude>
<exclude>src/test/resources/META-INF/org.apache.uima.fit/typepriorities.txt</exclude>
Added: uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/descriptor/LanguageCapability.java
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/descriptor/LanguageCapability.java?rev=1754760&view=auto
==============================================================================
--- uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/descriptor/LanguageCapability.java (added)
+++ uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/descriptor/LanguageCapability.java Mon Aug 1 14:46:01 2016
@@ -0,0 +1,49 @@
+/*
+ * 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.fit.descriptor;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Provides information on the languages supported by a component.
+ *
+ * <pre><code>
+ * {@literal @}LanguageCapability(languages = { "en", "de" })
+ * </code></pre>
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface LanguageCapability {
+ /**
+ * The languages supported by this component.
+ *
+ * @return the supported languages
+ */
+ String[] value() default NO_DEFAULT_VALUE;
+
+ /**
+ * Provides the default value for the inputs and the outputs that tells the CapabilityFactory that
+ * no value has been given to the inputs or outputs elements.
+ */
+ public static final String NO_DEFAULT_VALUE = "org.apache.uima.fit.descriptor.LanguageCapability.NO_DEFAULT_VALUE";
+}
Propchange: uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/descriptor/LanguageCapability.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java?rev=1754760&r1=1754759&r2=1754760&view=diff
==============================================================================
--- uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java (original)
+++ uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java Mon Aug 1 14:46:01 2016
@@ -23,6 +23,7 @@ import java.util.List;
import org.apache.uima.analysis_engine.TypeOrFeature;
import org.apache.uima.analysis_engine.impl.TypeOrFeature_impl;
+import org.apache.uima.fit.descriptor.LanguageCapability;
import org.apache.uima.fit.descriptor.SofaCapability;
import org.apache.uima.fit.descriptor.TypeCapability;
import org.apache.uima.fit.internal.ReflectionUtil;
@@ -52,6 +53,16 @@ public final class CapabilityFactory {
Capability capability = new Capability_impl();
+ if (ReflectionUtil.isAnnotationPresent(componentClass, LanguageCapability.class)) {
+ LanguageCapability annotation = ReflectionUtil.getAnnotation(componentClass,
+ LanguageCapability.class);
+ String[] languages = annotation.value();
+ if (languages.length == 1 && languages[0].equals(LanguageCapability.NO_DEFAULT_VALUE)) {
+ languages = new String[0];
+ }
+ capability.setLanguagesSupported(languages);
+ }
+
if (ReflectionUtil.isAnnotationPresent(componentClass, SofaCapability.class)) {
SofaCapability annotation = ReflectionUtil.getAnnotation(componentClass, SofaCapability.class);
String[] inputSofas = annotation.inputSofas();
Modified: uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java?rev=1754760&r1=1754759&r2=1754760&view=diff
==============================================================================
--- uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java (original)
+++ uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java Mon Aug 1 14:46:01 2016
@@ -29,12 +29,15 @@ import static org.junit.Assert.assertNul
import static org.junit.Assert.assertTrue;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.uima.UIMAException;
import org.apache.uima.UIMAFramework;
import org.apache.uima.analysis_component.AnalysisComponent;
@@ -54,6 +57,7 @@ import org.apache.uima.fit.factory.testA
import org.apache.uima.fit.factory.testAes.Annotator3;
import org.apache.uima.fit.factory.testAes.Annotator4;
import org.apache.uima.fit.factory.testAes.ParameterizedAE;
+import org.apache.uima.fit.factory.testAes.SerializationTestAnnotator;
import org.apache.uima.fit.factory.testAes.ViewNames;
import org.apache.uima.fit.pipeline.SimplePipeline;
import org.apache.uima.fit.type.Sentence;
@@ -538,4 +542,21 @@ public class AnalysisEngineFactoryTest e
assertArrayEquals(expected.getPriorityLists()[0].getTypes(),
actual.getPriorityLists()[0].getTypes());
}
+
+ @Test
+ public void serializeComponent() throws Exception {
+ File reference = new File("src/test/resources/data/reference/SerializationTestAnnotator.xml");
+
+ File target = new File("target/test-output/AnalysisEngineFactoryTest/SerializationTestAnnotator.xml");
+ target.getParentFile().mkdirs();
+
+ AnalysisEngineDescription desc = createEngineDescription(SerializationTestAnnotator.class);
+ try (OutputStream os = new FileOutputStream(target)) {
+ desc.toXML(os);
+ }
+
+ String actual = FileUtils.readFileToString(target, "UTF-8");
+ String expected = FileUtils.readFileToString(reference, "UTF-8");
+ assertEquals(expected, actual);
+ }
}
Added: uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/testAes/SerializationTestAnnotator.java
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/testAes/SerializationTestAnnotator.java?rev=1754760&view=auto
==============================================================================
--- uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/testAes/SerializationTestAnnotator.java (added)
+++ uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/testAes/SerializationTestAnnotator.java Mon Aug 1 14:46:01 2016
@@ -0,0 +1,38 @@
+/*
+ * 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.fit.factory.testAes;
+
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
+import org.apache.uima.fit.component.JCasAnnotator_ImplBase;
+import org.apache.uima.fit.descriptor.LanguageCapability;
+import org.apache.uima.fit.descriptor.SofaCapability;
+import org.apache.uima.jcas.JCas;
+
+/**
+ * Used to test if metadata gets correctly serialized to XML.
+ */
+@LanguageCapability({"en", "de"})
+@SofaCapability(inputSofas = "input1", outputSofas = "output1")
+public class SerializationTestAnnotator extends JCasAnnotator_ImplBase {
+
+ @Override
+ public void process(JCas jCas) throws AnalysisEngineProcessException {
+ // Nothing to do
+ }
+}
Propchange: uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/testAes/SerializationTestAnnotator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml?rev=1754760&view=auto
==============================================================================
--- uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml (added)
+++ uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml Mon Aug 1 14:46:01 2016
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
+ <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+ <primitive>true</primitive>
+ <annotatorImplementationName>org.apache.uima.fit.factory.testAes.SerializationTestAnnotator</annotatorImplementationName>
+ <analysisEngineMetaData>
+ <name>org.apache.uima.fit.factory.testAes.SerializationTestAnnotator</name>
+ <description>Descriptor automatically generated by uimaFIT</description>
+ <version>unknown</version>
+ <vendor>org.apache.uima.fit.factory.testAes</vendor>
+ <configurationParameters/>
+ <configurationParameterSettings/>
+ <typeSystemDescription>
+ <types>
+ <typeDescription>
+ <name>org.apache.uima.fit.type.AnalyzedText</name>
+ <description/>
+ <supertypeName>uima.tcas.Annotation</supertypeName>
+ <features>
+ <featureDescription>
+ <name>text</name>
+ <description/>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ </features>
+ </typeDescription>
+ <typeDescription>
+ <name>org.apache.uima.fit.type.Sentence</name>
+ <description/>
+ <supertypeName>uima.tcas.Annotation</supertypeName>
+ </typeDescription>
+ <typeDescription>
+ <name>org.apache.uima.fit.type.Token</name>
+ <description/>
+ <supertypeName>uima.tcas.Annotation</supertypeName>
+ <features>
+ <featureDescription>
+ <name>pos</name>
+ <description/>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ <featureDescription>
+ <name>stem</name>
+ <description/>
+ <rangeTypeName>uima.cas.String</rangeTypeName>
+ </featureDescription>
+ </features>
+ </typeDescription>
+ </types>
+ </typeSystemDescription>
+ <typePriorities>
+ <priorityList>
+ <type>org.apache.uima.fit.type.Sentence</type>
+ <type>org.apache.uima.fit.type.Token</type>
+ </priorityList>
+ </typePriorities>
+ <fsIndexCollection>
+ <fsIndexes>
+ <fsIndexDescription>
+ <label>Automatically Scanned Index</label>
+ <typeName>org.apache.uima.fit.type.Token</typeName>
+ <kind>sorted</kind>
+ <keys>
+ <fsIndexKey>
+ <featureName>begin</featureName>
+ <comparator>reverse</comparator>
+ </fsIndexKey>
+ <fsIndexKey>
+ <featureName>end</featureName>
+ <comparator>standard</comparator>
+ </fsIndexKey>
+ </keys>
+ </fsIndexDescription>
+ </fsIndexes>
+ </fsIndexCollection>
+ <capabilities>
+ <capability>
+ <inputs/>
+ <outputs/>
+ <inputSofas>
+ <sofaName>input1</sofaName>
+ </inputSofas>
+ <outputSofas>
+ <sofaName>output1</sofaName>
+ </outputSofas>
+ <languagesSupported>
+ <language>en</language>
+ <language>de</language>
+ </languagesSupported>
+ </capability>
+ </capabilities>
+ <operationalProperties>
+ <modifiesCas>true</modifiesCas>
+ <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
+ <outputsNewCASes>false</outputsNewCASes>
+ </operationalProperties>
+ </analysisEngineMetaData>
+</analysisEngineDescription>
Propchange: uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: uima/uimafit/trunk/uimafit-core/src/test/resources/data/reference/SerializationTestAnnotator.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml