http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceService.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceService.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceService.java deleted file mode 100644 index ed52ecd..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceService.java +++ /dev/null @@ -1,294 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import static org.springframework.transaction.annotation.Propagation.REQUIRED; -import static org.springframework.transaction.annotation.Propagation.SUPPORTS; - -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.springframework.transaction.annotation.Transactional; - -/** - * Top level access point to the reference manager for client code which is - * aware of references and error documents. Provides methods to store and - * retrieve instances of ReferenceSet, IdentifiedList<T2Reference> and - * ErrorDocument. Acts as an integration layer for the three sub-component - * service, providing in addition collection traversal and retrieval of lists of - * identified entities (ReferenceSet, IdentifiedList<Identified> and - * ErrorDocument) from a T2Reference identifying a list. - * <p> - * Also provides registration and retrieval logic for POJOs where supported by - * appropriate plug-in instances, these methods can be used by code which is not - * 'reference aware' to store and retrieve value types transparently. - * <p> - * Resolution of collections can happen at three different levels: - * <ol> - * <li>The embedded {@link ListService} resolves the collection ID to a list of - * child IDs, and doesn't traverse these children if they are themselves lists. - * Use the {@link #getListService()}.{@link ListService#getList(T2Reference) - * getList()} to call this method directly on the list service if you need this - * functionality, returning a list of {@link T2Reference}</li> - * <li>The {@link #resolveIdentifier(T2Reference, Set, ReferenceContext) - * resolveIdentifier} method in this service instead resolves to a fully - * realized collection of the entities which those IDs reference, and does - * recursively apply this to child lists, resulting in a nested collection - * structure where the leaf nodes are ReferenceSet and ErrorDocument instances - * and non-leaf are IdentifiedList of Identified (the super-interface for - * IdentifiedList, ReferenceSet and ErrorDocument). Use this method if you want - * to access the ExternalReferenceSPI and ErrorDocument entities directly - * because your code can act on a particular reference type - in general in - * these cases you would also be using the augmentation system to ensure that - * the required reference type was actually present in the collection structure. - * </li> - * <li>The third level of resolution is to render the identifier through - * {@link #renderIdentifier(T2Reference, Class, ReferenceContext) - * renderIdentifier} to a nested structure as in - * {@link #resolveIdentifier(T2Reference, Set, ReferenceContext) - * resolveIdentifier} but where the structure consists of POJOs of the specified - * type and lists or either list or the leaf type. This is used when your code - * is reference agnostic and just requires the values in an easy to consume - * fashion. Note that because this involves pulling the entire structure into - * memory it may not be suitable for large data, use with caution. This method - * will, unlike {@link #resolveIdentifier(T2Reference, Set, ReferenceContext) - * resolveIdentifier}, fail if the reference contains or is an error.</li> - * </ol> - * - * @author Tom Oinn - */ -public interface ReferenceService { - /** - * Perform recursive identifier resolution, building a collection structure - * of Identified objects, any collection elements being IdentifiedLists of - * Identified subclasses. If the id has depth 0 this will just return the - * Identified to which that id refers. - * - * @param id - * the T2Reference to resolve - * @param ensureTypes - * a set of ExternalReferenceSPI classes, this is used to augment - * any resolved ReferenceSet instances to ensure that each one - * has at least one of the specified types. If augmentation is - * not required this can be set to null. - * @param context - * the ReferenceContext to use to resolve this and any - * recursively resolved identifiers <br/> - * If null the implementation should insert a new empty context - * and proceed. - * @return fully resolved Identified subclass - this is either a (recursive) - * IdentifiedList of Identified, a ReferenceSet or an ErrorDocument - * @throws ReferenceServiceException - * if any problems occur during resolution - */ - @Transactional(propagation = REQUIRED, readOnly = false) - Identified resolveIdentifier(T2Reference id, - Set<Class<ExternalReferenceSPI>> ensureTypes, - ReferenceContext context) throws ReferenceServiceException; - - /** - * As resolveIdentifier but using a callback object and returning - * immediately - * - * @throws ReferenceServiceException - * if anything goes wrong with the setup of the resolution job. - * Any exceptions during the resolution process itself are - * communicated through the callback object. - */ - @Transactional(propagation = REQUIRED, readOnly = false) - void resolveIdentifierAsynch(T2Reference id, - Set<Class<ExternalReferenceSPI>> ensureTypes, - ReferenceContext context, - ReferenceServiceResolutionCallback callback) - throws ReferenceServiceException; - - /** - * Resolve the given identifier, building a POJO structure where the - * non-list items are of the desired class. This makes of any external - * references that can directly expose the appropriate object type, then, if - * none are present in a given reference set, it attempts to locate a POJO - * builder and uses the cheapest available reference to get an InputStream - * and build the target object. If no appropriate builder or embedded value - * can be found the process throws ReferenceServiceException, it also does - * this if any error occurs during retrieval of a (potentially nested) - * identifier. - * <p> - * This method will return a collection structure mirroring that of the - * specified T2Reference, client code should use T2Reference.getDepth() to - * determine the depth of this structure; a reference with depth of 0 means - * that the object returned is of the specified class, one of depth 1 is a - * list of this class and so on. - * <p> - * If the T2Reference contains or is an error this method will not retrieve - * it, and instead throws ReferenceServiceException - * - * @see StreamToValueConverterSPI - * @see ValueCarryingExternalReference - * @param id - * the T2Reference to render to a POJO - * @param leafClass - * the java class for leaves in the resulting POJO structure - * @param context - * a reference context, potentially used if required by the - * openStream methods of ExternalReferenceSPI implementations - * used as sources for the POJO construction <br/> - * If null the implementation should insert a new empty context - * and proceed. - * @return a java structure as defined above - * @throws ReferenceServiceException - * if anything fails during this process - */ - Object renderIdentifier(T2Reference id, Class<?> leafClass, - ReferenceContext context) throws ReferenceServiceException; - - /** - * The top level registration method is used to register either as yet - * unregistered ErrorDocuments and ReferenceSets (if these are passed in and - * already have an identifier this call does nothing) and arbitrarily nested - * Lists of the same. In addition any ExternalReferenceSPI instances found - * will be wrapped in a single item ReferenceSet and registered, and any - * Throwables will be wrapped in an ErrorDocument and registered. Lists will - * be converted to IdentifiedList<T2Reference> and registered if all - * children can be (or were already) appropriately named. - * <p> - * This method is only valid on parameters of the following type : - * <ol> - * <li>{@link T2Reference} - returned immediately as itself, this is needed - * because it means we can register lists of existing T2Reference</li> - * <li>{@link ReferenceSet} - registered if not already registered, - * otherwise returns existing T2Reference</li> - * <li>{@link ErrorDocument} - same behaviour as ReferenceSet</li> - * <li>{@link ExternalReferenceSPI} - wrapped in ReferenceSet, registered - * and ID returned</li> - * <li>Throwable - wrapped in {@link ErrorDocument} with no message, - * registered and ID returned</li> - * <li>List - all children are first registered, if this succeeds the list - * is itself registered as an {@link IdentifiedList} of {@link T2Reference} - * and its reference returned.</li> - * </ol> - * The exception to this is if the useConvertorSPI parameter is set to true - * - in this case any objects which do not match the above allowed list will - * be run through any available ValueToReferenceConvertorSPI instances in - * turn until one succeeds or all fail, which may result in the creation of - * ExternalReferenceSPI instances. As these can be registered such objects - * will not cause an exception to be thrown. - * - * @see ValueToReferenceConverterSPI - * @param o - * the object to register with the reference system, must comply - * with and will be interpreted as shown in the type list above. - * @param targetDepth - * the depth of the top level object supplied. This is needed - * when registering empty collections and error documents, - * whether as top level types or as members of a collection - * within the top level type. If registering a collection this is - * the collection depth, so a List of ReferenceSchemeSPI would be - * depth 1. Failing to specify this correctly will result in - * serious problems downstream so be careful! We can't catch all - * potential problems in this method (although some errors will - * be trapped). - * @param useConverterSPI - * whether to attempt to use the ValueToReferenceConvertorSPI - * registry (if defined and available) to map arbitrary objects - * to ExternalReferenceSPI instances on the fly. The registry of - * converters is generally injected into the implementation of - * this service. - * @param context - * ReferenceContext to use if required by component services, - * this is most likely to be used by the object to reference - * converters if engaged. <br/> - * If null the implementation should insert a new empty context - * and proceed. - * @return a T2Reference to the registered object - * @throws ReferenceServiceException - * if the object type (or, for collections, the recursive type - * of its contents) is not in the allowed list or if a problem - * occurs during registration. Also thrown if attempting to use - * the converter SPI without an attached registry. - */ - @Transactional(propagation = REQUIRED, readOnly = false) - T2Reference register(Object o, int targetDepth, boolean useConverterSPI, - ReferenceContext context) throws ReferenceServiceException; - - /** - * Given a string representation of a T2Reference create a new T2Reference - * with the correct depth etc. - * - * @param reference - * @return a new T2Reference parsed from the original - */ - T2Reference referenceFromString(String reference); - - @Transactional(propagation = SUPPORTS, readOnly = false) - boolean delete(T2Reference reference) throws ReferenceServiceException; - - @Transactional(propagation = SUPPORTS, readOnly = false) - boolean delete(List<T2Reference> references) - throws ReferenceServiceException; - - @Transactional(propagation = SUPPORTS, readOnly = false) - void deleteReferencesForWorkflowRun(String workflowRunId) - throws ReferenceServiceException; - - /** - * Returns the {@link ErrorDocumentService} this ReferenceService uses, use - * this when you need functionality from that service explicitly. - */ - ErrorDocumentService getErrorDocumentService(); - - /** - * Returns the {@link ReferenceSetService} this ReferenceService uses, use - * this when you need functionality from that service explicitly. - */ - ReferenceSetService getReferenceSetService(); - - /** - * Returns the {@link ListService} this ReferenceService uses, use this when - * you need functionality from that service explicitly. - */ - ListService getListService(); - - /** - * Initiates a traversal of the specified t2reference, traversing to - * whatever level of depth is required such that all identifiers returned - * within the iterator have the specified depth. The context (i.e. the index - * path from the originally specified reference to each reference within the - * iteration) is included through use of the ContextualizedT2Reference - * wrapper class - * - * @param source - * the T2Reference from which to traverse. In general this is the - * root of a collection structure. - * @param desiredDepth - * the desired depth of all returned T2References, must be less - * than or equal to that of the source reference. - * @throws ReferenceServiceException - * if unable to create the iterator for some reason. Note that - * implementations are free to lazily perform the iteration so - * this method may succeed but the iterator produced can fail - * when used. If the iterator fails it will do so by throwing - * one of the underlying sub-service exceptions. - */ - @Transactional(propagation = SUPPORTS, readOnly = true) - Iterator<ContextualizedT2Reference> traverseFrom(T2Reference source, - int desiredDepth); -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceCacheProvider.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceCacheProvider.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceCacheProvider.java deleted file mode 100644 index 56ebe4d..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceCacheProvider.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * A simple interface to be implemented by data access object cache providers, - * intended to be used to inject cache implementations through AoP - * - * @author Tom Oinn - */ -public interface ReferenceServiceCacheProvider { - /** - * Called after an {@link Identified} has been written to the backing store, - * either for the first time or after modification. In our model - * {@link ReferenceSet} is the only {@link Identified} that is modifiable, - * specifically only by the addition of {@link ExternalReferenceSPI} - * instances to its reference set. - * - * @param i - * the Identified written to the backing store - */ - void put(Identified i); - - /** - * Called before an attempt is made to retrieve an item from the backing - * store - * - * @param id - * the T2Reference of the item to retrieve - * @return a cached item with matching {@link T2Reference}, or <tt>null</tt> - * if the cache does not contain that item - */ - Identified get(T2Reference id); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceException.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceException.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceException.java deleted file mode 100644 index 25e1765..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceException.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Thrown by methods in the ReferenceService, used to wrap any underlying - * exceptions from lower layers. - * - * @author Tom Oinn - */ -public class ReferenceServiceException extends RuntimeException { - private static final long serialVersionUID = -2607675495513408333L; - - public ReferenceServiceException() { - // - } - - public ReferenceServiceException(String message) { - super(message); - } - - public ReferenceServiceException(Throwable cause) { - super(cause); - } - - public ReferenceServiceException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceResolutionCallback.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceResolutionCallback.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceResolutionCallback.java deleted file mode 100644 index 3b67da0..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceServiceResolutionCallback.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Used by the asynchronous form of the resolveIdentifier method in - * {@link ReferenceService} - * - * @author Tom Oinn - */ -public interface ReferenceServiceResolutionCallback { - /** - * Called when the resolution process has completed - * - * @param result - * the Identified that corresponds to the {@link T2Reference} - * specified in the call to - * {@link ReferenceService#resolveIdentifierAsynch} - */ - void identifierResolved(Identified result); - - /** - * Called when the resolution process has failed - * - * @param cause - * a ReferenceServiceException describing the failure - */ - void resolutionFailed(ReferenceServiceException cause); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSet.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSet.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSet.java deleted file mode 100644 index 5c82cee..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSet.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import java.util.Set; - -/** - * A set of ExternalReferenceSPI instances, all of which point to the same (byte - * equivalent) data. The set is identified by a T2Reference. This interface is - * read-only, as are most of the interfaces in this package. Rather than - * modifying properties of the reference set directly the client code should use - * the reference manager functionality. - * <p> - * It is technically okay, but rather unhelpful, to have a ReferenceSet with no - * ExternalReferenceSPI implementations. In general this is a sign that - * something has gone wrong somewhere as the reference set will not be - * resolvable in any way, but it would still retain its unique identifier so - * there may be occasions where this is the desired behaviour. - * - * @author Tom Oinn - */ -public interface ReferenceSet extends Identified { - /** - * The reference set contains a set of ExternalReferenceSPI instances, all - * of which point to byte equivalent data. - * - * @return the set of references to external data - */ - Set<ExternalReferenceSPI> getExternalReferences(); - - /** - * Get approximate size of the data pointed to by this ReferenceSet. - */ - Long getApproximateSizeInBytes(); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentationException.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentationException.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentationException.java deleted file mode 100644 index 1922baa..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentationException.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Thrown when the reference set augmentor is unable to provide at least one of - * the desired types for any reason. - * - * @author Tom Oinn - */ -public class ReferenceSetAugmentationException extends RuntimeException { - private static final long serialVersionUID = -6156508424485682266L; - - public ReferenceSetAugmentationException() { - // - } - - public ReferenceSetAugmentationException(String message) { - super(message); - } - - public ReferenceSetAugmentationException(Throwable cause) { - super(cause); - } - - public ReferenceSetAugmentationException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentor.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentor.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentor.java deleted file mode 100644 index 1dd2f92..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentor.java +++ /dev/null @@ -1,92 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import java.util.Set; - -/** - * Provides a framework to find and engage appropriate instances of - * {@link ExternalReferenceTranslatorSPI} and - * {@link ExternalReferenceBuilderSPI} to build external references from, - * respectively, other external references and from streams. These are then used - * to augment the contents of implementations of {@link ReferenceSet} with - * additional {@link ExternalReferenceSPI} implementations. - * <p> - * Methods in this interface throw the runtime exception - * {@link ReferenceSetAugmentationException} for all problems, other exceptions - * are wrapped in this type and re-thrown. - * - * @author Tom Oinn - */ -public interface ReferenceSetAugmentor { - /** - * Attempts to modify the supplied ReferenceSet such that it contains an - * implementation of at least one of the ExternalReferenceSPI classes - * specified. Uses the supplied context if required to build or translate - * existing references within the reference set. - * - * @param references - * reference set object to augment - * @param targetReferenceTypes - * a set of Class objects, this method succeeds if it can create - * an instance of at least one of these pointing to the same data - * as the other external references in the supplied reference set - * @param context - * a reference resolution context, potentially required for - * access to the existing references or for creation of the - * augmentations - * @return a set of new ExternalReferenceSPI instances such that the union - * of this set with the pre-existing reference set satisfies the - * target reference constraint. It is the responsibility of the - * caller to re-integrate these references into the original - * ReferenceSet if so desired. - * @throws ReferenceSetAugmentationException - * if a problem occurs either in configuration of the - * ReferenceSetAugmentor or in the augmentation process itself. - * Any other exception types are wrapped in this and re-thrown. - */ - Set<ExternalReferenceSPI> augmentReferenceSet(ReferenceSet references, - Set<Class<ExternalReferenceSPI>> targetReferenceTypes, - ReferenceContext context) throws ReferenceSetAugmentationException; - - /** - * As with {@link #augmentReferenceSet(ReferenceSet, Set, ReferenceContext)} - * but called in an asynchronous fashion. Returns immediately and uses the - * supplied instance of {@link ReferenceSetAugmentorCallback} to provide - * either the augmented {@link ReferenceSet} or an exception indicating a - * failure in the augmentation process. - * - * @param callback - * callback object used to indicate failure or to return the - * modified reference set - * @throws ReferenceSetAugmentationException - * if the ReferenceSetAugmentor is missing critical - * configuration. Exceptions that happen during augmentation or - * as a result of a failure to find an appropriate augmentation - * path are signalled by calls to the callback object, this - * method only throws the exception if it can't even try to do - * the augmentation for some reason. - */ - void augmentReferenceSetAsynch(ReferenceSet references, - Set<Class<ExternalReferenceSPI>> targetReferenceTypes, - ReferenceContext context, ReferenceSetAugmentorCallback callback) - throws ReferenceSetAugmentationException; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentorCallback.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentorCallback.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentorCallback.java deleted file mode 100644 index 8d03b45..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetAugmentorCallback.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import java.util.Set; - -/** - * Callback interface used when augmenting a ReferenceSet in an asynchronous - * fashion through - * {@link ReferenceSetAugmentor#augmentReferenceSetAsynch(ReferenceSet, Set, ReferenceContext, ReferenceSetAugmentorCallback) - * augmentReferenceSetAsynch} in {@link ReferenceSetAugmentor}. - * - * @author Tom Oinn - */ -public interface ReferenceSetAugmentorCallback { - /** - * Called when the augmentation has succeeded - * - * @param newReferences - * a set of ExternalReferenceSPI instances created during the - * augmentation process. It is the responsibility of the caller - * to re-integrate these back into the ReferenceSet used in the - * translation - */ - void augmentationCompleted(Set<ExternalReferenceSPI> newReferences); - - /** - * Called when the augmentation has failed for some reason - * - * @param cause - * a {@link ReferenceSetAugmentationException} object describing - * the failure. - */ - void augmentationFailed(ReferenceSetAugmentationException cause); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetDao.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetDao.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetDao.java deleted file mode 100644 index 3c60e89..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetDao.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import static org.springframework.transaction.annotation.Propagation.REQUIRED; -import static org.springframework.transaction.annotation.Propagation.SUPPORTS; - -import org.springframework.transaction.annotation.Transactional; - -/** - * Data Access Object interface for {@link ReferenceSet}. Used by the - * {@link ReferenceSetService} to store and retrieve implementations of - * reference set to and from the database. Client code should use the reference - * set service rather than using this Dao directly. - * <p> - * All methods throw DaoException, and nothing else. Where a deeper error is - * propagated it is wrapped in a DaoException and passed on to the caller. - * - * @author Tom Oinn - */ -public interface ReferenceSetDao { - /** - * Store the specified new reference set - * - * @param rs - * a reference set, must not already exist in the database. - * @throws DaoException - * if the entry already exists in the database or some other - * database related problem occurs - */ - @Transactional(propagation = REQUIRED, readOnly = false) - void store(ReferenceSet rs) throws DaoException; - - /** - * Update a pre-existing entry in the database - * - * @param rs - * the reference set to update. This must already exist in the - * database - * @throws DaoException - */ - @Transactional(propagation = REQUIRED, readOnly = false) - void update(ReferenceSet rs) throws DaoException; - - /** - * Fetch a reference set by id - * - * @param ref - * the T2Reference to fetch - * @return a retrieved ReferenceSet - * @throws DaoException - * if the supplied reference is of the wrong type or if - * something goes wrong fetching the data or connecting to the - * database - */ - @Transactional(propagation = SUPPORTS, readOnly = true) - ReferenceSet get(T2Reference ref) throws DaoException; - - @Transactional(propagation = SUPPORTS, readOnly = false) - boolean delete(ReferenceSet rs) throws DaoException; - - @Transactional(propagation = SUPPORTS, readOnly = false) - void deleteReferenceSetsForWFRun(String workflowRunId) throws DaoException; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetService.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetService.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetService.java deleted file mode 100644 index a574264..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetService.java +++ /dev/null @@ -1,181 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import static org.springframework.transaction.annotation.Propagation.REQUIRED; -import static org.springframework.transaction.annotation.Propagation.SUPPORTS; - -import java.util.Set; - -import org.springframework.transaction.annotation.Transactional; - -/** - * Provides facilities to register sets of ExternalReferenceSPI implementations - * within the reference manager and to retrieve these sets by T2Reference either - * as stored or with translation support. In general applications should be - * using this interface (where only ReferenceSet functionality is required) or - * the support classes which in turn use this and the collection and error - * handling interfaces to present a unified view over the various components of - * the reference management system. - * - * @author Tom Oinn - */ -@Transactional(propagation = SUPPORTS, readOnly = true) -public interface ReferenceSetService { - /** - * Register a set of {@link ExternalReferenceSPI} instances, all of which - * should point to byte equivalent data, and return the newly created - * {@link ReferenceSet}. This method blocks on the underlying store, but - * guarantees that the returned value has been persisted. - * <p> - * The created references will be related with a workflow run id passed - * through ReferenceContext so we can track all data referenced by a - * specific run. - * - * @param references - * a set of {@link ExternalReferenceSPI} implementations to - * register as a {@link ReferenceSet} - * @return the registered {@link ReferenceSet} - */ - @Transactional(propagation = REQUIRED, readOnly = false) - ReferenceSet registerReferenceSet(Set<ExternalReferenceSPI> references, - ReferenceContext context) throws ReferenceSetServiceException; - - /** - * Get a previously registered {@link ReferenceSet} by {@link T2Reference}. - * Note that this method blocks and may take some time to return in the case - * of distributed reference managers; if this is likely to be an issue then - * you should use the asynchronous form - * {@link #getReferenceSetAsynch(T2Reference, ReferenceSetServiceCallback) - * getReferenceSetAsynch} instead of this method. - * - * @param id - * a {@link T2Reference} identifying a {@link ReferenceSet} to - * retrieve - * @return the requested {@link ReferenceSet} - */ - ReferenceSet getReferenceSet(T2Reference id) - throws ReferenceSetServiceException; - - /** - * Functionality the same as {@link #getReferenceSet(T2Reference) - * getReferenceSet} but in asynchronous mode, returning immediately and - * using the supplied callback to communicate its results. - * - * @param id - * a {@link T2Reference} identifying a {@link ReferenceSet} to - * retrieve - * @param callback - * a {@link ReferenceSetServiceCallback} used to convey the - * results of the asynchronous call - * @throws ReferenceSetServiceException - * if the reference set service is not correctly configured. - * Exceptions encountered when performing the asynchronous call - * are not returned here, for obvious reasons, and are instead - * messaged through the callback interface. - */ - void getReferenceSetAsynch(T2Reference id, - ReferenceSetServiceCallback callback) - throws ReferenceSetServiceException; - - /** - * Functionality the same as {@link #getReferenceSet(T2Reference) - * getReferenceSet} but with the additional option to specify a set of - * {@link ExternalReferenceSPI} classes. The reference set manager will - * attempt to ensure that the returned {@link ReferenceSet} contains an - * instance of at least one of the specified classes. This method blocks, - * and may potentially incur both the remote lookup overhead of the simpler - * version of this call and any translation logic. It is <em>strongly</em> - * recommended that you do not use this version of the call and instead use - * the asynchronous form - * {@link #getReferenceSetWithAugmentationAsynch(T2Reference, Set, ReferenceContext, ReferenceSetServiceCallback) - * getReferenceSetWithAugmentationAsynch} instead. - * <p> - * If the translation logic cannot provide at least one of the required - * types this call will fail, even if the {@link ReferenceSet} requested is - * otherwise available. - * - * @param id - * a {@link T2Reference} identifying a {@link ReferenceSet} to - * retrieve - * @param ensureTypes - * a set of {@link ExternalReferenceSPI} classes. The framework - * will attempt to ensure there is an instance of at least one of - * these classes in the returned {@link ReferenceSet} - * @param context - * if translation of references is required the translation - * infrastructure will need information in this - * {@link ReferenceContext} parameter. - * <p> - * If null the implementation should insert a new empty context - * and proceed. - * @return the requested {@link ReferenceSet} - */ - @Transactional(propagation = REQUIRED, readOnly = false) - ReferenceSet getReferenceSetWithAugmentation(T2Reference id, - Set<Class<ExternalReferenceSPI>> ensureTypes, - ReferenceContext context) throws ReferenceSetServiceException; - - /** - * Functionality as - * {@link #getReferenceSetWithAugmentation(T2Reference, Set, ReferenceContext) - * getReferenceSetWithAugmentation} but with the addition of a callback - * interface to report the result or failure of the method. - * - * @param id - * a {@link T2Reference} identifying a {@link ReferenceSet} to - * retrieve - * @param ensureTypes - * a set of {@link ExternalReferenceSPI} classes. The framework - * will attempt to ensure there is an instance of at least one of - * these classes in the returned {@link ReferenceSet} - * @param context - * if translation of references is required the translation - * infrastructure will need information in this - * {@link ReferenceContext} parameter. - * <p> - * If null the implementation should insert a new empty context - * and proceed. - * @param callback - * a {@link ReferenceSetServiceCallback} used to convey the - * results of the asynchronous call * - * @throws ReferenceSetServiceException - * if the reference set service is not correctly configured. - * Exceptions encountered when performing the asynchronous call - * are not returned here, for obvious reasons, and are instead - * messaged through the callback interface. - */ - @Transactional(propagation = REQUIRED, readOnly = false) - void getReferenceSetWithAugmentationAsynch(T2Reference id, - Set<Class<ExternalReferenceSPI>> ensureTypes, - ReferenceContext context, ReferenceSetServiceCallback callback) - throws ReferenceSetServiceException; - - @Transactional(propagation = SUPPORTS, readOnly = false) - boolean delete(T2Reference reference) throws ReferenceServiceException; - - /** - * Delete all {@link ReferenceSet}S used by the specific workflow run. - */ - @Transactional(propagation = SUPPORTS, readOnly = false) - void deleteReferenceSetsForWorkflowRun(String workflowRunId) - throws ReferenceServiceException; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceCallback.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceCallback.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceCallback.java deleted file mode 100644 index a75eb1f..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceCallback.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Callback interface used by asynchronous methods in the - * {@link ReferenceSetService} interface - * - * @author Tom Oinn - */ -public interface ReferenceSetServiceCallback { - /** - * Called when the requested {@link ReferenceSet} has been successfully - * retrieved. - * - * @param references - * the ReferenceSet requested - */ - void referenceSetRetrieved(ReferenceSet references); - - /** - * Called if the retrieval failed for some reason - * - * @param cause - * a ReferenceSetServiceException explaining the retrieval - * failure - */ - void referenceSetRetrievalFailed(ReferenceSetServiceException cause); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceException.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceException.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceException.java deleted file mode 100644 index 7e8c507..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferenceSetServiceException.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * RuntimeException subclass thrown by the reference set service layer - * interfaces. All underlying exceptions are either handled by the service layer - * or wrapped in this exception (or a subclass) and rethrown. - * - * @author Tom Oinn - */ -public class ReferenceSetServiceException extends RuntimeException { - private static final long serialVersionUID = -2762995062729638168L; - - public ReferenceSetServiceException() { - // - } - - public ReferenceSetServiceException(String message) { - super(message); - } - - public ReferenceSetServiceException(Throwable cause) { - super(cause); - } - - public ReferenceSetServiceException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferencedDataNature.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferencedDataNature.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferencedDataNature.java deleted file mode 100644 index a6861f1..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ReferencedDataNature.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Where possible ExternalReferenceSPI implementations should be able to - * determine whether the data they refer to is textual or binary in nature. This - * enumeration contains values for textual, binary and unknown data natures. - * - * @author Tom Oinn - */ -public enum ReferencedDataNature { - /** - * The data is binary, no character encoding will be specified. - */ - BINARY, - - /** - * The data is textual, character encoding may be defined. - */ - TEXT, - - /** - * Unknown data nature. - */ - UNKNOWN; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StackTraceElementBean.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StackTraceElementBean.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StackTraceElementBean.java deleted file mode 100644 index 8b560b1..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StackTraceElementBean.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Used by the {@link ErrorDocument} interface to represent a frame within a - * stack trace - * - * @author Tom Oinn - * @see StackTraceElement - */ -public interface StackTraceElementBean { - /** - * Returns the fully qualified name of the class containing the execution - * point represented by this stack trace element. - */ - String getClassName(); - - /** - * Returns the name of the source file containing the execution point - * represented by this stack trace element. - */ - String getFileName(); - - /** - * Returns the line number of the source line containing the execution point - * represented by this stack trace element. - */ - int getLineNumber(); - - /** - * Returns the name of the method containing the execution point represented - * by this stack trace element. - */ - String getMethodName(); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StreamToValueConverterSPI.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StreamToValueConverterSPI.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StreamToValueConverterSPI.java deleted file mode 100644 index dc3da5c..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/StreamToValueConverterSPI.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import java.io.InputStream; - -/** - * SPI for objects that can render a POJO from an InputStream - * - * @author Tom Oinn - */ -public interface StreamToValueConverterSPI<T> { - /** - * The class of objects which this builder can construct from a stream - */ - Class<T> getPojoClass(); - - /** - * Render the stream to the target object type - * - * @param stream - * input stream of data to render to the object; the caller will - * close it - * @param charset - * @param dataNature - * @return the newly created object - */ - T renderFrom(InputStream stream, ReferencedDataNature dataNature, - String charset); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2Reference.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2Reference.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2Reference.java deleted file mode 100644 index 4a9a725..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2Reference.java +++ /dev/null @@ -1,102 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -import java.net.URI; - -/** - * The T2Reference is used within the workflow system to refer to any entity - * within the reference management system, whether reference set, list or error - * document. The reference carries certain properties which can be evaluated - * without resolution, these include a depth property and whether the reference - * either is or contains an error document at any point in its structure. - * - * @author Tom Oinn - */ -public interface T2Reference { - /** - * To determine the entity that this reference points to we use an - * enumeration of possible entity types - * - * @return the type of entity to which this reference refers. - */ - T2ReferenceType getReferenceType(); - - /** - * All entities identified by a T2Reference have a conceptual depth. In the - * case of lists the depth is the (uniform) depth of any item in the list - * plus one, in the case of reference sets the depth is 0. Error documents - * and empty lists may also have non zero depth; error documents in - * particular have a depth corresponding to the depth of the list or - * reference set that would have been created if there was no error. - * - * @return the depth of the entity identified by this T2Reference - */ - int getDepth(); - - /** - * Error documents always return true, as do any lists where at least one - * immediate child of the list returns true when this property is evaluated. - * As lists are immutable this property is actually set on list - * registration. This is used to determine whether to allow POJO resolution - * of the entity identified by this T2Reference - this is configurable by - * the caller but there will be some cases where an attempt to render a - * collection containing errors to a POJO should return an error and other - * occasions when it should return a collection containing error objects. - * <p> - * ReferenceSet implementations always return false. - * - * @return whether the entity identified by this T2Reference either is or - * contains an error document. Containment is transitive, so a list - * containing a list that contained an error would return true. - */ - boolean containsErrors(); - - /** - * T2Reference instances retain a reference to the reference manager which - * created them in the form of a namespace. This is an opaque string - * matching the regular expression [a-zA-Z_0-9]+, and is immutable once - * assigned (as are the other properties of this interface). The reference - * manager infrastructure uses this namespace property primarily to - * differentiate between cases where a reference cannot be resolved because - * of a lack of connection to the appropriate remote reference manager and - * those where the reference simply does not exist anywhere. - * - * @return the namespace of this T2Reference as a string. - */ - String getNamespacePart(); - - /** - * In addition to the namespace the T2Reference contains a local identifier. - * This identifier is unique in the context of the namespace and is also - * represented as a string matching the regular expression [a-z_A-Z0-9]+ - * - * @return the local part of this T2Reference as a string. - */ - String getLocalPart(); - - /** - * All T2Reference instances can be represented as a URI. - * - * @return representation of this T2Reference as a URI - */ - URI toUri(); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceGenerator.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceGenerator.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceGenerator.java deleted file mode 100644 index dfaca7a..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceGenerator.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Provides new unique T2Reference instances. Used by and injected into the - * various service interface implementations when registering new reference - * sets, error documents and lists. - * - * @author Tom Oinn - * @see T2Reference - */ -public interface T2ReferenceGenerator { - /** - * All T2Reference objects will have this namespace - * - * @return the namespace as a string - */ - String getNamespace(); - - /** - * Create a new and otherwise unused T2Reference to a ReferenceSet. The - * namespace of the reference will depend on the current workflow run read - * from the ReferenceContext. - * - * @return new T2Reference for a ReferenceSet, namespace and local parts - * will be initialized and the reference is ready to use when - * returned. - */ - T2Reference nextReferenceSetReference(ReferenceContext context); - - /** - * Create a new and otherwise unused T2Reference to an IdentifiedList. The - * namespace of the reference will depend on the current workflow run read - * from the ReferenceContext. - * - * @param containsErrors - * whether the list this reference is generated for contains - * t2references with their containsErrors property set to true. - * Returns true if <em>any</em> reference in the list is or - * contains an error. - * @param listDepth - * depth of the list to which this identifier will be applied - * @return a new T2Reference for an IdentifiedList. Namespace, type and - * local parts will be initialized but depth and error content will - * still be at their default values of '0' and 'false' respectively, - * these will need to be re-set before the reference is viable. - */ - T2Reference nextListReference(boolean containsErrors, int listDepth, - ReferenceContext context); - - /** - * Create a new and otherwise unused T2Reference to an ErrorDocument. The - * namespace of the reference will depend on the current workflow run read - * from the ReferenceContext. - * - * @param depth - * the depth of the error document to which this identifier will - * refer - * @return a new T2Reference for an ErrorDocument - */ - T2Reference nextErrorDocumentReference(int depth, ReferenceContext context); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceType.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceType.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceType.java deleted file mode 100644 index b60333c..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/T2ReferenceType.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * The T2Reference interface is used to identify several different kinds of - * information, namely ReferenceSet, IdentifiedList and ErrorDocument. Because - * the top level reference service needs to determine which sub-service to - * delegate to when resolving references we carry this information in each - * T2Reference in the form of one of these enumerated types. - * - * @author Tom Oinn - */ -public enum T2ReferenceType { - /** - * A reference to a ReferenceSet - */ - ReferenceSet, - - /** - * A reference to an IdentifiedList of other T2References - */ - IdentifiedList, - - /** - * A reference to an ErrorDocument - */ - ErrorDocument; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueCarryingExternalReference.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueCarryingExternalReference.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueCarryingExternalReference.java deleted file mode 100644 index a1ecc7d..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueCarryingExternalReference.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Specialization of ExternalReferenceSPI for reference types which carry a - * value type internally. Such references can be de-referenced to the specified - * object type very cheaply. Note that this is not to be used to get an object - * property of a reference, the returned object must correspond to the value of - * the referenced data - this means that the HttpUrlReference does not use this - * to return a java.net.URL, but that the InlineStringReference does use it to - * return a java.lang.String - * - * @author Tom Oinn - */ -public interface ValueCarryingExternalReference<T> extends ExternalReferenceSPI { - /** - * Returns the type of the inlined value - */ - Class<T> getValueType(); - - /** - * Returns the value - */ - T getValue(); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConversionException.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConversionException.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConversionException.java deleted file mode 100644 index 3187184..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConversionException.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Thrown by instances of ValueToReferenceConvertor when trying to convert an - * object to an instance of ExternalReferenceSPI if the conversion process fails - * for some reason. - * - * @author Tom Oinn - */ -public class ValueToReferenceConversionException extends RuntimeException { - private static final long serialVersionUID = 3259959719223191820L; - - public ValueToReferenceConversionException() { - // - } - - public ValueToReferenceConversionException(String message) { - super(message); - } - - public ValueToReferenceConversionException(Throwable cause) { - super(cause); - } - - public ValueToReferenceConversionException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConverterSPI.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConverterSPI.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConverterSPI.java deleted file mode 100644 index 04a4cfd..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/ValueToReferenceConverterSPI.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * SPI for components that can convert an arbitrary object to an - * ExternalReferenceSPI representing the value of that object. Used by - * implementations of {@link ReferenceService#register(Object, int, boolean)} to - * map arbitrary objects to ExternalReferenceSPI instances if encountered during - * the registration process. This SPI is only used if the boolean - * useConverterSPI parameter is set to true on that method. - * - * @author Tom Oinn - */ -public interface ValueToReferenceConverterSPI { - /** - * Can this SPI implementation convert the specified object to an - * ExternalReferenceSPI? This test should be as lightweight as possible, and - * will usually be based on the Class of the object supplied. - * - * @param context - * a ReferenceContext to use if required by the plugin, the - * ability to convert should be interpreted in the scope of this - * context. In general the context probably not used by most - * implementations but it's here if required. - * - * @return whether this converter is applicable to the specified object - */ - boolean canConvert(Object o, ReferenceContext context); - - /** - * Construct and return a new ExternalReferenceSPI implementation which is - * in some way equivalent to the supplied object. This is not intended to be - * a two-way process necessarily, although the conversion should attempt to - * be conservative (so not actually changing the data!). - * - * @param context - * a ReferenceContext to use, if required, during construction of - * the new external reference - * @return A new instance of ExternalReferenceSPI which references, as far - * as possible, the value represented by the specified object - * @throws ValueToReferenceConversionException - * if any problem occurs during the conversion - */ - ExternalReferenceSPI convert(Object o, ReferenceContext context) - throws ValueToReferenceConversionException; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/WorkflowRunIdEntity.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/WorkflowRunIdEntity.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/WorkflowRunIdEntity.java deleted file mode 100644 index e60bed9..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/WorkflowRunIdEntity.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference; - -/** - * Entity that wraps workflow run id and can be passed through ( - * {@link ReferenceContext} to be used by {@link T2ReferenceGenerator} to - * generate references that are specific for a workflow run. - * - * @author Alex Nenadic - */ -public class WorkflowRunIdEntity { - private String workflowRunId; - - public WorkflowRunIdEntity(String workflowRunId) { - this.setWorkflowRunId(workflowRunId); - } - - public void setWorkflowRunId(String workflowRunId) { - this.workflowRunId = workflowRunId; - } - - public String getWorkflowRunId() { - return workflowRunId; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/DeleteIdentifiedOperation.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/DeleteIdentifiedOperation.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/DeleteIdentifiedOperation.java deleted file mode 100644 index 863a193..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/DeleteIdentifiedOperation.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.sf.taverna.t2.reference.annotations; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -/** - * Applied to methods in Dao implementations which delete data in the backing - * store. - * - * @author Stuart Owen - */ -@Retention(RUNTIME) -@Target(METHOD) -public @interface DeleteIdentifiedOperation { -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/3ecb1291/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/GetIdentifiedOperation.java ---------------------------------------------------------------------- diff --git a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/GetIdentifiedOperation.java b/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/GetIdentifiedOperation.java deleted file mode 100644 index bc23b20..0000000 --- a/taverna-reference-api/src/main/java/net/sf/taverna/t2/reference/annotations/GetIdentifiedOperation.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.reference.annotations; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -/** - * Applied to methods in Dao implementations which fetch data from the backing - * store by ID - * - * @author Tom Oinn - */ -@Retention(RUNTIME) -@Target(METHOD) -public @interface GetIdentifiedOperation { -}
