| /* |
| * 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.resource; |
| |
| import org.apache.uima.Constants; |
| import org.apache.uima.resource.metadata.ResourceManagerConfiguration; |
| import org.apache.uima.resource.metadata.ResourceMetaData; |
| |
| /** |
| * A <code>ResourceCreationSpecifier</code> is the supertype of |
| * {@link org.apache.uima.analysis_engine.AnalysisEngineDescription}, |
| * {@link org.apache.uima.collection.CasConsumerDescription}, |
| * {@link org.apache.uima.collection.CollectionReaderDescription}, and |
| * {@link org.apache.uima.collection.CasInitializerDescription}. |
| * <p> |
| * All Resource Creation Specifiers must the following: |
| * <ul> |
| * <li><code>frameworkImplementation</code>: The name of the UIMA framework in which the |
| * component executes. The name for this implementation is given by {@link Constants.JAVA_FRAMEWORK_NAME}. |
| * A component that runs in the C++ enablement layer needs to have the framework name given by |
| * {@link Constants.CPP_FRAMEWORK_NAME}. |
| * <li> |
| * <li><code>implementationName</code>: The fully-qualified Java class name of the user's |
| * component (Annotator, CAS Consumer, Collection Reader, or CAS Initializer). |
| * <li> |
| * <li><code>metaData</code>: the {@link ResourceMetaData} describing the resource</li> |
| * </ul> |
| * |
| * The following are optional: |
| * <ul> |
| * <li>A set of {@link ExternalResourceDependency} objects that define this resource's dependencies |
| * on other resources.</li> |
| * <li>A set of {@link ExternalResourceDescription} objects that satisfy the dependencies.</li> |
| * </ul> |
| * |
| * |
| */ |
| public interface ResourceCreationSpecifier extends ResourceSpecifier { |
| /** |
| * Gets the name of the AE framework implementation within which the Resource executes. The |
| * framework name for this implementation is given by {@link Constants.JAVA_FRAMEWORK_NAME}.. |
| * |
| * @return the framework implementation name |
| */ |
| public String getFrameworkImplementation(); |
| |
| /** |
| * Sets the name of the AE framework implementation within which the <code>ResourceCreationSpecifier</code> executes. The |
| * framework name for this implementation is given by {@link Constants.JAVA_FRAMEWORK_NAME}.. |
| * |
| * @param aFrameworkImplementation |
| * the framework implementation name |
| */ |
| public void setFrameworkImplementation(String aFrameworkImplementation); |
| |
| /** |
| * Retrieves the name of this <code>ResourceCreationSpecifier</code>'s implementation. This must be a fully qualified Java class |
| * name. |
| * |
| * @return the implementation name of the CasConsumer |
| */ |
| public String getImplementationName(); |
| |
| /** |
| * Sets the name of this <code>ResourceCreationSpecifier</code>'s implementation. This must be a fully qualified Java class |
| * name. |
| * |
| * @param aImplementationName |
| * the implementation name of the CasConsumer |
| */ |
| public void setImplementationName(String aImplementationName); |
| |
| /** |
| * Retrieves the <code>ResourceMetaData</code> to assign to the newly constructed <code>ResourceCreationSpecifier</code>. |
| * |
| * @return the metadata for the new resource. This will always be modifiable. |
| */ |
| public ResourceMetaData getMetaData(); |
| |
| /** |
| * Sets the MetaData for this <code>ResourceCreationSpecifier</code>. |
| * |
| * @param aMetaData |
| * metadata to assign |
| */ |
| public void setMetaData(ResourceMetaData aMetaData); |
| |
| /** |
| * Retrieves descriptions of this <code>ResourceCreationSpecifier</code>'s dependencies on external resources. Each |
| * required external resource is assigned a String identifier. This is the identifier that this |
| * <code>ResourceCreationSpecifier</code> can use to locate the Resource (using the |
| * {@link org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceObject(String)} |
| * method). |
| * |
| * @return an array of {@link ExternalResourceDependency} objects that describe this |
| * AnalysisEngine's resource dependencies. |
| */ |
| public ExternalResourceDependency[] getExternalResourceDependencies(); |
| |
| /** |
| * Sets the descriptions of this <code>ResourceCreationSpecifier</code>'s dependencies on external resources. |
| * |
| * @param aDependencies |
| * an array of {@link ExternalResourceDependency} objects that describe this |
| * <code>ResourceCreationSpecifier</code>'s resource dependencies. |
| */ |
| public void setExternalResourceDependencies(ExternalResourceDependency[] aDependencies); |
| |
| /** |
| * Gets the external resource dependency with the given key. |
| * |
| * @param aKey |
| * the key of the external resource dependency to get |
| * |
| * @return the resource dependency with the specified key, <code>null</code> if none. |
| */ |
| public ExternalResourceDependency getExternalResourceDependency(String aKey); |
| |
| /** |
| * Retrieves the Resource Manager configuration, which declares the resources that satisfy the |
| * dependencies defined by {@link #getExternalResourceDependencies()}. |
| * |
| * @return the Resource Manager configuration that describes how external resource dependencies |
| * are bound to actual resources. |
| */ |
| public ResourceManagerConfiguration getResourceManagerConfiguration(); |
| |
| /** |
| * Sets the Resource Manager configuration, which declares the resources that satisfy the |
| * dependencies defined by {@link #getExternalResourceDependencies()}. |
| * |
| * @param aResourceManagerConfiguration |
| * the Resource Manager configuration that describes how external resource dependencies |
| * are bound to actual resources. |
| */ |
| public void setResourceManagerConfiguration( |
| ResourceManagerConfiguration aResourceManagerConfiguration); |
| |
| /** |
| * Checks that this <code>ResourceCreationSpecifier</code> is valid. |
| * An exception is thrown if it is not valid. This only does |
| * fairly lightweight checking. To do a more complete but more expensive check, use |
| * {@link #doFullValidation()}. |
| * |
| * @throws ResourceInitializationException |
| * if <code>aDesc</code> is invalid |
| * @throws ResourceConfigurationException |
| * if the configuration parameter settings in <code>aDesc</code> are invalid |
| */ |
| public void validate() throws ResourceInitializationException, ResourceConfigurationException; |
| |
| /** |
| * Checks that this <code>ResourceCreationSpecifier</code> is valid. |
| * An exception is thrown if it is not valid. This only does |
| * fairly lightweight checking. To do a more complete but more expensive check, use |
| * {@link #doFullValidation()}. |
| * |
| * @param aResourceManager |
| * a ResourceManager instance to use to resolve imports by name. |
| * |
| * @throws ResourceInitializationException |
| * if <code>aDesc</code> is invalid |
| * @throws ResourceConfigurationException |
| * if the configuration parameter settings in <code>aDesc</code> are invalid |
| */ |
| public void validate(ResourceManager aResourceManager) throws ResourceInitializationException, |
| ResourceConfigurationException; |
| |
| /** |
| * Does full validation of this <code>ResourceCreationSpecifier</code>. |
| * This essentially performs all operations necessary to |
| * instantiate a Resource except that it does not actually instantiate the implementation class. |
| * If appropriate, this method will also attempt to create a CAS based on the descriptor, in order |
| * to do full type system verification. If any operations fail, an exception will be thrown. |
| * |
| * @throws ResourceInitializationException |
| * if validation failed |
| */ |
| public void doFullValidation() throws ResourceInitializationException; |
| |
| /** |
| * Does full validation of this <code>ResourceCreationSpecifier</code>. |
| * This essentially performs all operations necessary to |
| * instantiate a Resource except that it does not actually instantiate the implementation class. |
| * If appropriate, this method will also attempt to create a CAS based on the descriptor, in order |
| * to do full type system verification. If any operations fail, an exception will be thrown. |
| * |
| * @param aResourceManager |
| * a ResourceManager instance to use to load annotator classes, external resource |
| * classes, and resolve imports by name. |
| * @throws ResourceInitializationException |
| * if validation failed |
| */ |
| public void doFullValidation(ResourceManager aResourceManager) |
| throws ResourceInitializationException; |
| |
| } |