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 2014/04/28 22:19:29 UTC
svn commit: r1590775 - in
/uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit:
factory/AnalysisEngineFactory.java factory/CollectionReaderFactory.java
internal/ResourceManagerFactory.java
Author: rec
Date: Mon Apr 28 20:19:29 2014
New Revision: 1590775
URL: http://svn.apache.org/r1590775
Log:
[UIMA-3692] Classloading inconsistencies
- Added an experimental API to control resource managers used by uimaFIT
Added:
uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java (with props)
Modified:
uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java
uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java
Modified: uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java
URL: http://svn.apache.org/viewvc/uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java?rev=1590775&r1=1590774&r2=1590775&view=diff
==============================================================================
--- uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java (original)
+++ uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java Mon Apr 28 20:19:29 2014
@@ -56,6 +56,7 @@ import org.apache.uima.fit.descriptor.So
import org.apache.uima.fit.descriptor.TypeCapability;
import org.apache.uima.fit.factory.ConfigurationParameterFactory.ConfigurationData;
import org.apache.uima.fit.internal.ReflectionUtil;
+import org.apache.uima.fit.internal.ResourceManagerFactory;
import org.apache.uima.flow.FlowControllerDescription;
import org.apache.uima.resource.ExternalResourceDescription;
import org.apache.uima.resource.ResourceInitializationException;
@@ -105,7 +106,7 @@ public final class AnalysisEngineFactory
public static AnalysisEngine createEngine(String descriptorName, Object... configurationData)
throws InvalidXMLException, IOException, ResourceInitializationException {
AnalysisEngineDescription aed = createEngineDescription(descriptorName, configurationData);
- return UIMAFramework.produceAnalysisEngine(aed);
+ return UIMAFramework.produceAnalysisEngine(aed, ResourceManagerFactory.newResourceManager(), null);
}
/**
@@ -201,11 +202,13 @@ public final class AnalysisEngineFactory
public static AnalysisEngine createEngine(AnalysisEngineDescription desc,
Object... configurationData) throws ResourceInitializationException {
if (configurationData == null || configurationData.length == 0) {
- return UIMAFramework.produceAnalysisEngine(desc, null, null);
+ return UIMAFramework.produceAnalysisEngine(desc, ResourceManagerFactory.newResourceManager(),
+ null);
} else {
AnalysisEngineDescription descClone = (AnalysisEngineDescription) desc.clone();
ResourceCreationSpecifierFactory.setConfigurationParameters(descClone, configurationData);
- return UIMAFramework.produceAnalysisEngine(descClone);
+ return UIMAFramework.produceAnalysisEngine(descClone,
+ ResourceManagerFactory.newResourceManager(), null);
}
}
@@ -767,7 +770,8 @@ public final class AnalysisEngineFactory
ResourceInitializationException {
AnalysisEngineDescription desc = createEngineDescriptionFromPath(descriptorPath,
configurationData);
- return UIMAFramework.produceAnalysisEngine(desc);
+ return UIMAFramework.produceAnalysisEngine(desc, ResourceManagerFactory.newResourceManager(),
+ null);
}
/**
Modified: uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java
URL: http://svn.apache.org/viewvc/uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java?rev=1590775&r1=1590774&r2=1590775&view=diff
==============================================================================
--- uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java (original)
+++ uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java Mon Apr 28 20:19:29 2014
@@ -39,6 +39,7 @@ import org.apache.uima.UIMAFramework;
import org.apache.uima.collection.CollectionReader;
import org.apache.uima.collection.CollectionReaderDescription;
import org.apache.uima.fit.factory.ConfigurationParameterFactory.ConfigurationData;
+import org.apache.uima.fit.internal.ResourceManagerFactory;
import org.apache.uima.resource.ExternalResourceDescription;
import org.apache.uima.resource.ResourceCreationSpecifier;
import org.apache.uima.resource.ResourceInitializationException;
@@ -77,7 +78,8 @@ public final class CollectionReaderFacto
Object... configurationData) throws UIMAException, IOException {
CollectionReaderDescription desc = createReaderDescriptionFromPath(descriptorPath,
configurationData);
- return UIMAFramework.produceCollectionReader(desc);
+ return UIMAFramework.produceCollectionReader(desc, ResourceManagerFactory.newResourceManager(),
+ null);
}
/**
@@ -164,7 +166,8 @@ public final class CollectionReaderFacto
imp.setName(descriptorName);
URL url = imp.findAbsoluteUrl(UIMAFramework.newDefaultResourceManager());
ResourceSpecifier specifier = createResourceCreationSpecifier(url, configurationData);
- return UIMAFramework.produceCollectionReader(specifier);
+ return UIMAFramework.produceCollectionReader(specifier,
+ ResourceManagerFactory.newResourceManager(), null);
}
/**
@@ -405,7 +408,8 @@ public final class CollectionReaderFacto
Object... configurationData) throws ResourceInitializationException {
CollectionReaderDescription descClone = (CollectionReaderDescription) desc.clone();
ResourceCreationSpecifierFactory.setConfigurationParameters(descClone, configurationData);
- return UIMAFramework.produceCollectionReader(descClone);
+ return UIMAFramework.produceCollectionReader(descClone,
+ ResourceManagerFactory.newResourceManager(), null);
}
/**
Added: uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java
URL: http://svn.apache.org/viewvc/uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java?rev=1590775&view=auto
==============================================================================
--- uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java (added)
+++ uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java Mon Apr 28 20:19:29 2014
@@ -0,0 +1,70 @@
+/*
+ * 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.internal;
+
+import java.net.MalformedURLException;
+
+import org.apache.uima.UIMAFramework;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.resource.ResourceManager;
+import org.springframework.util.ClassUtils;
+
+/**
+ * INTERNAL API - Helper functions for dealing with resource managers and classloading
+ *
+ * This API is experimental and is very likely to be removed or changed in future versions.
+ */
+public class ResourceManagerFactory {
+ private static ResourceManagerCreator resourceManagerCreator = new DefaultResourceManagerCreator();
+
+ private ResourceManagerFactory() {
+ // No instances
+ }
+
+ public static ResourceManager newResourceManager() throws ResourceInitializationException
+ {
+ return resourceManagerCreator.newResourceManager();
+ }
+
+ public static synchronized void setResourceManagerCreator(
+ ResourceManagerCreator resourceManagerCreator) {
+ ResourceManagerFactory.resourceManagerCreator = resourceManagerCreator;
+ }
+
+ public static ResourceManagerCreator getResourceManagerCreator() {
+ return resourceManagerCreator;
+ }
+
+ public static interface ResourceManagerCreator {
+ ResourceManager newResourceManager() throws ResourceInitializationException;
+ }
+
+ public static class DefaultResourceManagerCreator implements ResourceManagerCreator {
+ public ResourceManager newResourceManager() throws ResourceInitializationException {
+ try {
+ ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
+ resMgr.setExtensionClassPath(ClassUtils.getDefaultClassLoader(), "", true);
+ return resMgr;
+ }
+ catch (MalformedURLException e) {
+ throw new ResourceInitializationException(e);
+ }
+ }
+ }
+}
Propchange: uima/uimafit/branches/2.0.x/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java
------------------------------------------------------------------------------
svn:eol-style = native