You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2015/03/24 18:25:09 UTC
svn commit: r1668941 - in /uima/ruta/trunk/ruta-core/src:
main/java/org/apache/uima/ruta/descriptor/
test/java/org/apache/uima/ruta/descriptor/
Author: pkluegl
Date: Tue Mar 24 17:25:09 2015
New Revision: 1668941
URL: http://svn.apache.org/r1668941
Log:
UIMA-3650
- more refactoring for building descriptors without ide
Added:
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java (with props)
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java Tue Mar 24 17:25:09 2015
@@ -19,13 +19,14 @@
package org.apache.uima.ruta.descriptor;
+import java.util.Collections;
import java.util.List;
public class RutaBuildOptions {
- private final List<String> language;
+ private List<String> language = Collections.emptyList();
- private final List<String> engines;
+ private List<String> engines = Collections.emptyList();
private boolean importByName = false;
@@ -33,11 +34,18 @@ public class RutaBuildOptions {
private boolean errorOnDuplicateShortNames;
+ private String encoding;
+
public RutaBuildOptions(List<String> language, List<String> engines) {
super();
this.language = language;
this.engines = engines;
}
+
+ public RutaBuildOptions() {
+ super();
+ }
+
public List<String> getLanguage() {
return language;
@@ -71,4 +79,12 @@ public class RutaBuildOptions {
return errorOnDuplicateShortNames;
}
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java Tue Mar 24 17:25:09 2015
@@ -24,7 +24,6 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
@@ -72,42 +71,42 @@ public class RutaDescriptorBuilder {
private static ResourceSpecifierFactory uimaFactory = UIMAFramework.getResourceSpecifierFactory();
- private TypeSystemDescription typeSystemDescription;
+ // private TypeSystemDescription typeSystemDescription;
- private AnalysisEngineDescription analysisEngineDescription;
+ // private AnalysisEngineDescription analysisEngineDescription;
private final String defaultTypeSystem;
+ private final String defaultAnalysisEngine;
+
private ResourceManager rm;
- public RutaDescriptorBuilder(String defaultTypeSystem, String defaultEngine)
+ public RutaDescriptorBuilder(String defaultTypeSystem, String defaultAnalysisEngine)
throws InvalidXMLException, IOException {
super();
this.defaultTypeSystem = defaultTypeSystem;
- initialize(defaultEngine);
+ this.defaultAnalysisEngine = defaultAnalysisEngine;
}
- private void initialize(String defaultEngine) throws InvalidXMLException, IOException {
- typeSystemDescription = uimaFactory.createTypeSystemDescription();
- analysisEngineDescription = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(
- new XMLInputSource(new File(defaultEngine)));
-
- }
+ public TypeSystemDescription createTypeSystemDescription(RutaDescriptorInformation desc,
+ String typeSystemOutput, RutaBuildOptions option, String[] enginePaths,
+ ClassLoader classloader) throws InvalidXMLException, ResourceInitializationException,
+ IOException, URISyntaxException {
- public void build(RutaDescriptorInformation desc, String typeSystemOutput, String engineOutput,
- RutaBuildOptions option, String mainScript, String[] scriptPaths, String[] enginePaths,
- ClassLoader classloader) throws SAXException, InvalidXMLException,
- IOException, ResourceInitializationException, URISyntaxException {
+ TypeSystemDescription typeSystemDescription = uimaFactory.createTypeSystemDescription();
- rm = new ResourceManager_impl(classloader);
- String dataPath = "";
- for (String string : enginePaths) {
- dataPath += string + File.pathSeparator;
+ ResourceManager rm = UIMAFramework.newDefaultResourceManager();
+ if (classloader != null) {
+ new ResourceManager_impl(classloader);
+ }
+ if (enginePaths != null) {
+ String dataPath = "";
+ for (String string : enginePaths) {
+ dataPath += string + File.pathSeparator;
+ }
+ rm.setDataPath(dataPath);
}
- rm.setDataPath(dataPath);
-
Map<String, String> typeNameMap = new HashMap<String, String>();
- Capability capability = uimaFactory.createCapability();
// String defaultTypeSystem2 = defaultTypeSystem.replaceAll("/", "\\\\");
File defaultTypeSystemFile = new File(defaultTypeSystem);
if (!defaultTypeSystemFile.exists()) {
@@ -128,8 +127,7 @@ public class RutaDescriptorBuilder {
String absoluteLocation = initialTypeSystem.getSourceUrlString();
import_impl.setLocation(absoluteLocation);
} else {
- String relativeLocation = getRelativeLocation(defaultTypeSystemFile.toURI(),
- typeSystemOutput);
+ String relativeLocation = getRelativeLocation(defaultTypeSystemFile.toURI(), typeSystemOutput);
import_impl.setLocation(relativeLocation);
}
importList.add(import_impl);
@@ -146,7 +144,7 @@ public class RutaDescriptorBuilder {
include = true;
if (url == null) {
throw new FileNotFoundException("Build process can't find " + eachName + " in "
- + mainScript);
+ + desc.getScriptName());
}
}
TypeSystemDescription each = getTypeSystemDescriptor(url, option);
@@ -179,14 +177,23 @@ public class RutaDescriptorBuilder {
}
} else {
throw new FileNotFoundException("Build process can't find " + eachName + " in "
- + mainScript);
+ + desc.getScriptName());
}
}
for (String eachName : desc.getImportedScripts()) {
- // TODO
String locate = RutaEngine.locate(eachName, enginePaths, "TypeSystem.xml");
- File file = new File(locate);
- URL url = file.toURI().toURL();
+ URL url = null;
+ if (locate != null) {
+ File file = new File(locate);
+ url = file.toURI().toURL();
+ }
+ if (url == null) {
+ url = checkImportExistence(eachName, "xml", classloader);
+ if (url == null) {
+ throw new FileNotFoundException("Build process can't find " + eachName + " in "
+ + desc.getScriptName());
+ }
+ }
TypeSystemDescription each = getTypeSystemDescriptor(url, option);
if (each != null) {
fillTypeNameMap(typeNameMap, each);
@@ -197,20 +204,20 @@ public class RutaDescriptorBuilder {
String absoluteLocation = each.getSourceUrlString();
import_impl.setLocation(absoluteLocation);
} else {
- String relativeLocation = getRelativeLocation(file.toURI(), typeSystemOutput);
+ String relativeLocation = getRelativeLocation(url.toURI(), typeSystemOutput);
import_impl.setLocation(relativeLocation);
}
importList.add(import_impl);
} else {
throw new FileNotFoundException("Build process can't find " + eachName + " in "
- + mainScript);
+ + desc.getScriptName());
}
}
typeSystemDescription = CasCreationUtils.mergeTypeSystems(toInclude, rm);
Import[] newImports = importList.toArray(new Import[0]);
typeSystemDescription.setImports(newImports);
if (option.isResolveImports()) {
- typeSystemDescription.resolveImports(rm);
+ typeSystemDescription.resolveImports(rm);
}
// TODO hotfixes: where do I get the final types??
@@ -224,15 +231,14 @@ public class RutaDescriptorBuilder {
int typeIndex = 0;
for (String eachType : desc.getTypeShortNames()) {
StringTriple typeTriple = desc.getTypeTriples().get(typeIndex);
- typeTriple = resolveType(typeTriple, typeNameMap, mainScript);
+ typeTriple = resolveType(typeTriple, typeNameMap, desc.getScriptName());
if (typeSystemDescription.getType(typeTriple.getName()) != null) {
continue;
}
if (!finalTypes.contains(typeTriple.getParent())) {
TypeDescription newType = typeSystemDescription.addType(typeTriple.getName(),
typeTriple.getDescription(), typeTriple.getParent());
- capability.addInputType(typeTriple.getName(), false);
- capability.addOutputType(typeTriple.getName(), false);
+
Collection<StringTriple> collection = desc.getFeatures().get(eachType);
if (collection != null) {
for (StringTriple eachFeature : collection) {
@@ -262,22 +268,49 @@ public class RutaDescriptorBuilder {
types.addAll(Arrays.asList(presentTypes));
typeSystemDescription.setTypes(types.toArray(new TypeDescription[0]));
- typeSystemDescription.setName(mainScript + "TypeSystem");
+ typeSystemDescription.setName(desc.getScriptName() + "TypeSystem");
typeSystemDescription.setSourceUrl(typeSystemFile.toURI().toURL());
+
+ return typeSystemDescription;
+ }
+
+ public AnalysisEngineDescription createAnalysisEngineDescription(RutaDescriptorInformation desc,
+ TypeSystemDescription typeSystemDescription, String typeSystemOutput,
+ String engineOutput, RutaBuildOptions option, String[] scriptPaths, String[] enginePaths, String[] resourcePaths,
+ ClassLoader classloader) throws InvalidXMLException, IOException {
TypeSystemDescription aets = uimaFactory.createTypeSystemDescription();
- import_impl = new Import_impl();
+ Import_impl import_impl = new Import_impl();
if (option.isImportByName()) {
- import_impl.setName(typeSystemDescription.getName());
+ if (typeSystemDescription != null) {
+ import_impl.setName(typeSystemDescription.getName());
+ }
} else {
- String relativeLocation = getRelativeLocation(new File(engineOutput).toURI(), typeSystemOutput);
- import_impl.setLocation(relativeLocation);
+ if (typeSystemOutput != null) {
+ String relativeLocation = getRelativeLocation(new File(engineOutput).toURI(),
+ typeSystemOutput);
+ import_impl.setLocation(relativeLocation);
+ }
}
- File engineFile = configureEngine(desc, engineOutput, option, mainScript, scriptPaths,
- enginePaths, capability, import_impl, aets);
+ return configureEngine(desc, engineOutput, option, scriptPaths, enginePaths, resourcePaths, import_impl, aets);
+ }
+
+ public void build(RutaDescriptorInformation desc, String typeSystemOutput, String engineOutput,
+ RutaBuildOptions option, String mainScript, String[] scriptPaths, String[] enginePaths,
+ ClassLoader classloader) throws SAXException, InvalidXMLException, IOException,
+ ResourceInitializationException, URISyntaxException {
+
+ TypeSystemDescription typeSystemDescription = createTypeSystemDescription(desc,
+ typeSystemOutput, option, enginePaths, classloader);
+
+ AnalysisEngineDescription analysisEngineDescription = createAnalysisEngineDescription(desc,
+ typeSystemDescription, typeSystemOutput, engineOutput, option, scriptPaths,
+ enginePaths, null, classloader);
+ File analysisEngineFile = getFile(engineOutput);
+ File typeSystemFile = getFile(typeSystemOutput);
toFile(typeSystemDescription, typeSystemFile);
- toFile(analysisEngineDescription, engineFile);
+ toFile(analysisEngineDescription, analysisEngineFile);
}
private void fillTypeNameMap(Map<String, String> typeNameMap, TypeSystem typeSystem) {
@@ -358,16 +391,25 @@ public class RutaDescriptorBuilder {
return name;
}
- private File configureEngine(RutaDescriptorInformation desc, String engineOutput,
- RutaBuildOptions option, String mainScript, String[] scriptPaths,
- String[] descriptorPaths, Capability capability, Import_impl import_impl,
- TypeSystemDescription aets) throws MalformedURLException {
+ private AnalysisEngineDescription configureEngine(RutaDescriptorInformation desc,
+ String engineOutput, RutaBuildOptions option, String[] scriptPaths,
+ String[] descriptorPaths, String[] resourcePaths,Import_impl import_impl, TypeSystemDescription aets)
+ throws InvalidXMLException, IOException {
+
+ AnalysisEngineDescription analysisEngineDescription = UIMAFramework.getXMLParser()
+ .parseAnalysisEngineDescription(new XMLInputSource(new File(defaultAnalysisEngine)));
aets.setImports(new Import[] { import_impl });
analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(aets);
+
File file = getFile(engineOutput);
analysisEngineDescription.setSourceUrl(file.toURI().toURL());
if (!desc.getTypeShortNames().isEmpty()) {
+ Capability capability = uimaFactory.createCapability();
+ for (StringTriple typeTriple : desc.getTypeTriples()) {
+ capability.addInputType(typeTriple.getName(), false);
+ capability.addOutputType(typeTriple.getName(), false);
+ }
Capability[] capabilities = analysisEngineDescription.getAnalysisEngineMetaData()
.getCapabilities();
Capability[] newArray = new Capability[capabilities.length + 1];
@@ -377,11 +419,15 @@ public class RutaDescriptorBuilder {
}
analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
- .setParameterValue(RutaEngine.PARAM_MAIN_SCRIPT, mainScript);
- analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
- .setParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, scriptPaths);
- analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
- .setParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, descriptorPaths);
+ .setParameterValue(RutaEngine.PARAM_MAIN_SCRIPT, desc.getScriptName());
+ if (scriptPaths != null) {
+ analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
+ .setParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, scriptPaths);
+ }
+ if (descriptorPaths != null) {
+ analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
+ .setParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, descriptorPaths);
+ }
String[] parameterValue = (String[]) analysisEngineDescription.getAnalysisEngineMetaData()
.getConfigurationParameterSettings().getParameterValue(RutaEngine.PARAM_RESOURCE_PATHS);
Set<String> resourceLocations = new HashSet<String>();
@@ -389,11 +435,15 @@ public class RutaDescriptorBuilder {
if (parameterValue != null && parameterValue.length != 0) {
resourceLocations.addAll(Arrays.asList(parameterValue));
}
- for (String string : descriptorPaths) {
- File descDir = new File(string);
- File defaultResourceDir = new File(descDir.getParent(),
- "resources");
- resourceLocations.add(defaultResourceDir.getAbsolutePath());
+ if(resourcePaths != null) {
+ resourceLocations.addAll(Arrays.asList(resourcePaths));
+ }
+ if (descriptorPaths != null) {
+ for (String string : descriptorPaths) {
+ File descDir = new File(string);
+ File defaultResourceDir = new File(descDir.getParent(), "resources");
+ resourceLocations.add(defaultResourceDir.getAbsolutePath());
+ }
}
analysisEngineDescription
.getAnalysisEngineMetaData()
@@ -417,24 +467,25 @@ public class RutaDescriptorBuilder {
.setParameterValue(RutaEngine.PARAM_ADDITIONAL_UIMAFIT_ENGINES,
additionalUimafitEnginesArray);
- analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(typeSystemDescription);
+ analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(aets);
- configureExtensions(option);
- return file;
+ configureExtensions(analysisEngineDescription, option);
+ return analysisEngineDescription;
}
private String getRelativeLocation(URI target, String base) {
Path basePath = Paths.get(base);
- if( !basePath.toFile().isDirectory()) {
+ if (!basePath.toFile().isDirectory()) {
basePath = basePath.getParent();
}
Path targetPath;
- targetPath = Paths.get(target);
+ targetPath = Paths.get(target);
Path relativePath = basePath.relativize(targetPath);
return relativePath.toString();
}
- private void configureExtensions(RutaBuildOptions options) {
+ private void configureExtensions(AnalysisEngineDescription analysisEngineDescription,
+ RutaBuildOptions options) {
ConfigurationParameterSettings configurationParameterSettings = analysisEngineDescription
.getAnalysisEngineMetaData().getConfigurationParameterSettings();
@@ -447,18 +498,19 @@ public class RutaDescriptorBuilder {
List<String> es = new ArrayList<String>();
List<String> ls = new ArrayList<String>();
- if(extensions != null) {
+ if (extensions != null) {
es.addAll(Arrays.asList(extensions));
}
es.addAll(languageExtensions);
- if(loaders != null) {
+ if (loaders != null) {
ls.addAll(Arrays.asList(loaders));
}
ls.addAll(options.getEngines());
- configurationParameterSettings.setParameterValue(RutaEngine.PARAM_ADDITIONAL_EXTENSIONS, es.toArray(new String[0]));
- configurationParameterSettings
- .setParameterValue(RutaEngine.PARAM_ADDITIONAL_ENGINE_LOADERS, ls.toArray(new String[0]));
+ configurationParameterSettings.setParameterValue(RutaEngine.PARAM_ADDITIONAL_EXTENSIONS,
+ es.toArray(new String[0]));
+ configurationParameterSettings.setParameterValue(RutaEngine.PARAM_ADDITIONAL_ENGINE_LOADERS,
+ ls.toArray(new String[0]));
}
private TypeSystemDescription getTypeSystemDescriptor(URL url, RutaBuildOptions option)
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java Tue Mar 24 17:25:09 2015
@@ -20,44 +20,138 @@
package org.apache.uima.ruta.descriptor;
import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
import org.antlr.runtime.ANTLRFileStream;
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.uima.UIMAFramework;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.metadata.TypeSystemDescription;
-import org.apache.uima.ruta.RutaModule;
+import org.apache.uima.ruta.engine.RutaEngine;
+import org.apache.uima.ruta.extensions.RutaExternalFactory;
import org.apache.uima.ruta.parser.RutaLexer;
import org.apache.uima.ruta.parser.RutaParser;
+import org.apache.uima.util.InvalidXMLException;
public class RutaDescriptorFactory {
- public RutaDescriptorFactory() {
+ private String defaultTypeSystem;
+
+ private String defaultEngine;
+
+ public RutaDescriptorFactory(String defaultTypeSystem, String defaultEngine) {
super();
+ this.defaultTypeSystem = defaultTypeSystem;
+ this.defaultEngine = defaultEngine;
+ }
+
+ public RutaDescriptorFactory(URL defaultTypeSystem, URL defaultEngine) throws URISyntaxException {
+ super();
+ this.defaultTypeSystem = new File(defaultTypeSystem.toURI()).getAbsolutePath();
+ this.defaultEngine = new File(defaultEngine.toURI()).getAbsolutePath();
+ }
+
+ public TypeSystemDescription createTypeSystemDescription(String typeSystemOutput,
+ RutaDescriptorInformation descriptorInformation, RutaBuildOptions options,
+ ClassLoader classloader) throws RecognitionException, IOException, InvalidXMLException,
+ ResourceInitializationException, URISyntaxException {
+
+ RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
+
+ TypeSystemDescription typeSystemDescription = builder.createTypeSystemDescription(
+ descriptorInformation, typeSystemOutput, options, null, classloader);
+
+ return typeSystemDescription;
+ }
+
+ public AnalysisEngineDescription createAnalysisEngineDescription(String engineOutput,
+ RutaDescriptorInformation descriptorInformation, RutaBuildOptions options,
+ String[] scriptPaths, String[] descriptorPaths, String[] resourcePaths,
+ ClassLoader classloader) throws IOException, RecognitionException, InvalidXMLException {
+
+ RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
+
+ AnalysisEngineDescription analysisEngineDescription = builder.createAnalysisEngineDescription(
+ descriptorInformation, null, null, engineOutput, options, scriptPaths, descriptorPaths,
+ resourcePaths, classloader);
+
+ return analysisEngineDescription;
}
- public TypeSystemDescription createTypeSystemDescription(String rules) throws RecognitionException {
- CharStream st = new ANTLRStringStream(rules);
+ public Pair<AnalysisEngineDescription, TypeSystemDescription> createDescriptions(
+ String engineOutput, String typeSystemOutput,
+ RutaDescriptorInformation descriptorInformation, RutaBuildOptions options,
+ String[] scriptPaths, String[] descriptorPaths, String[] resourcePaths,
+ ClassLoader classloader) throws IOException, RecognitionException, InvalidXMLException,
+ ResourceInitializationException, URISyntaxException {
+
+ RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
+
+ TypeSystemDescription typeSystemDescription = builder.createTypeSystemDescription(
+ descriptorInformation, typeSystemOutput, options, descriptorPaths, classloader);
+
+ AnalysisEngineDescription analysisEngineDescription = builder.createAnalysisEngineDescription(
+ descriptorInformation, typeSystemDescription, typeSystemOutput, engineOutput, options,
+ scriptPaths, descriptorPaths, resourcePaths, classloader);
+
+ return new ImmutablePair<AnalysisEngineDescription, TypeSystemDescription>(
+ analysisEngineDescription, typeSystemDescription);
+ }
+
+ public RutaDescriptorInformation parseDescriptorInformation(File scriptFile, String encoding)
+ throws IOException, RecognitionException {
+ CharStream st = new ANTLRFileStream(scriptFile.getAbsolutePath(), encoding);
RutaLexer lexer = new RutaLexer(st);
CommonTokenStream tokens = new CommonTokenStream(lexer);
RutaParser parser = new RutaParser(tokens);
RutaDescriptorInformation descInfo = new RutaDescriptorInformation();
-// parser.setContext(context);
-// parser.setExternalFactory(factory);
-// parser.setResourcePaths(resourcePaths);
-// parser.setResourceManager(resourceManager);
parser.setDescriptorInformation(descInfo);
- parser.file_input("Anonymous");
-// RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
- return null;
+ // TODO no context?
+ parser.setContext(null);
+ // TODO initialize extension?
+ parser.setExternalFactory(new RutaExternalFactory());
+ // TODO no resource, avoid fail on missing resources while parsing
+ parser.setResourcePaths(new String[0]);
+ // TODO what about the loading from classpath?
+ parser.setResourceManager(UIMAFramework.newDefaultResourceManager());
+ String name = scriptFile.getName();
+ int lastIndexOf = name.lastIndexOf(RutaEngine.SCRIPT_FILE_EXTENSION);
+ if (lastIndexOf != -1) {
+ name = name.substring(0, lastIndexOf);
+ }
+ descInfo.setScriptName(name);
+ parser.file_input(name);
+ return descInfo;
}
-
- public AnalysisEngineDescription createAnalysisEngineDescription() {
- return null;
+
+ public RutaDescriptorInformation parseDescriptorInformation(String script)
+ throws IOException, RecognitionException {
+ CharStream st = new ANTLRStringStream(script);
+ RutaLexer lexer = new RutaLexer(st);
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ RutaParser parser = new RutaParser(tokens);
+ RutaDescriptorInformation descInfo = new RutaDescriptorInformation();
+ parser.setDescriptorInformation(descInfo);
+ // TODO no context?
+ parser.setContext(null);
+ // TODO initialize extension?
+ parser.setExternalFactory(new RutaExternalFactory());
+ // TODO no resource, avoid fail on missing resources while parsing
+ parser.setResourcePaths(new String[0]);
+ // TODO what about the loading from classpath?
+ parser.setResourceManager(UIMAFramework.newDefaultResourceManager());
+ String name = "Anonymous";
+ descInfo.setScriptName(name);
+ parser.file_input(name);
+ return descInfo;
}
-
}
-
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java Tue Mar 24 17:25:09 2015
@@ -44,6 +44,8 @@ public class RutaDescriptorInformation {
private Collection<String> importedUimafitEngines;
+ private String scriptName;
+
public RutaDescriptorInformation() {
super();
typeShortNames = new ArrayList<String>();
@@ -136,5 +138,13 @@ public class RutaDescriptorInformation {
public Collection<String> getImportedUimafitEngines() {
return importedUimafitEngines;
}
+
+ public void setScriptName(String scriptName) {
+ this.scriptName = scriptName;
+ }
+
+ public String getScriptName() {
+ return scriptName;
+ }
}
Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java?rev=1668941&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java Tue Mar 24 17:25:09 2015
@@ -0,0 +1,76 @@
+/*
+ * 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.ruta.descriptor;
+
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.apache.uima.ruta.engine.HtmlAnnotator;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class GenerateDescriptorTest {
+
+// private static URL basicAEUrl;
+// private static URL basicTSUrl;
+//
+// @BeforeClass
+// public static void setUpClass() {
+// basicAEUrl = HtmlAnnotator.class.getClassLoader().getResource("BasicEngine.xml");
+// if (basicAEUrl == null) {
+// basicAEUrl = HtmlAnnotator.class.getClassLoader().getResource(
+// "org/apache/uima/ruta/engine/BasicEngine.xml");
+// }
+//
+// basicTSUrl = HtmlAnnotator.class.getClassLoader().getResource("BasicTypeSystem.xml");
+// if (basicTSUrl == null) {
+// basicTSUrl = HtmlAnnotator.class.getClassLoader().getResource(
+// "org/apache/uima/ruta/engine/BasicTypeSystem.xml");
+// }
+// }
+//
+//
+// @Test
+// public void testAnalysisEngineDescriptor() {
+//
+// }
+//
+// @Test
+// public void testTypeSystemDescriptor() throws URISyntaxException {
+// String script = "";
+// script += "PACKAGE test.package;\n";
+// script += "TYPESYSTEM HtmlTypeSystem;\n";
+// script += "DECLARE SimpleType;\n";
+// script += "DECLARE SimpleType ComplexType (SimpleType fs, STRING s, BOOLEAN b, INT i);\n";
+// script += "BLOCK(sub) Document{}{\n";
+// script += "DECLARE InnerType;\n";
+// script += "}\n";
+//
+// RutaDescriptorFactory rdf = new RutaDescriptorFactory(basicTSUrl, basicAEUrl);
+// RutaDescriptorInformation descriptorInformation = rdf.parseDescriptorInformation(script);
+// RutaBuildOptions options = new RutaBuildOptions();
+// rdf.createTypeSystemDescription(typeSystemOutput, descriptorInformation, options, GenerateDescriptorTest.class.getClassLoader())
+//
+//
+// }
+//
+
+}
Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
------------------------------------------------------------------------------
svn:eol-style = native