From 0ed2c1124cf1b9e49a2ec1fa0126a8df09f9e758 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 7 Oct 2014 09:18:11 +0200 Subject: Repackage to org.cristalise --- .../com/c2kernel/entity/ItemImplementation.java | 331 --------------------- 1 file changed, 331 deletions(-) delete mode 100644 src/main/java/com/c2kernel/entity/ItemImplementation.java (limited to 'src/main/java/com/c2kernel/entity/ItemImplementation.java') diff --git a/src/main/java/com/c2kernel/entity/ItemImplementation.java b/src/main/java/com/c2kernel/entity/ItemImplementation.java deleted file mode 100644 index 9098e2a..0000000 --- a/src/main/java/com/c2kernel/entity/ItemImplementation.java +++ /dev/null @@ -1,331 +0,0 @@ -/** - * This file is part of the CRISTAL-iSE kernel. - * Copyright (c) 2001-2014 The CRISTAL Consortium. All rights reserved. - * - * This library 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 3 of the License, or (at - * your option) any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; with out 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 library; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - * - * http://www.fsf.org/licensing/licenses/lgpl.html - */ -package com.c2kernel.entity; - -import java.util.UUID; - -import com.c2kernel.collection.Collection; -import com.c2kernel.collection.CollectionArrayList; -import com.c2kernel.common.AccessRightsException; -import com.c2kernel.common.InvalidCollectionModification; -import com.c2kernel.common.InvalidDataException; -import com.c2kernel.common.InvalidTransitionException; -import com.c2kernel.common.ObjectAlreadyExistsException; -import com.c2kernel.common.ObjectNotFoundException; -import com.c2kernel.common.PersistencyException; -import com.c2kernel.common.SystemKey; -import com.c2kernel.entity.agent.JobArrayList; -import com.c2kernel.events.Event; -import com.c2kernel.events.History; -import com.c2kernel.lifecycle.instance.CompositeActivity; -import com.c2kernel.lifecycle.instance.Workflow; -import com.c2kernel.lifecycle.instance.predefined.PredefinedStepContainer; -import com.c2kernel.lifecycle.instance.predefined.item.ItemPredefinedStepContainer; -import com.c2kernel.lifecycle.instance.stateMachine.Transition; -import com.c2kernel.lookup.AgentPath; -import com.c2kernel.lookup.InvalidItemPathException; -import com.c2kernel.lookup.ItemPath; -import com.c2kernel.persistency.ClusterStorage; -import com.c2kernel.persistency.TransactionManager; -import com.c2kernel.persistency.outcome.Outcome; -import com.c2kernel.persistency.outcome.Viewpoint; -import com.c2kernel.process.Gateway; -import com.c2kernel.property.Property; -import com.c2kernel.property.PropertyArrayList; -import com.c2kernel.utils.Logger; - -public class ItemImplementation implements ItemOperations { - - protected final TransactionManager mStorage; - protected final ItemPath mItemPath; - - protected ItemImplementation(ItemPath key) { - this.mStorage = Gateway.getStorage(); - this.mItemPath = key; - } - - @Override - public SystemKey getSystemKey() { - return mItemPath.getSystemKey(); - } - - public UUID getUUID() { - return mItemPath.getUUID(); - } - - @Override - public void initialise(SystemKey agentId, String propString, String initWfString, - String initCollsString) throws AccessRightsException, - InvalidDataException, PersistencyException - { - Logger.msg(5, "Item::initialise("+mItemPath+") - agent:"+agentId); - Object locker = new Object(); - - AgentPath agentPath; - try { - agentPath = new AgentPath(agentId); - } catch (InvalidItemPathException e) { - throw new AccessRightsException("Invalid Agent Id:" + agentId); - } - - // must supply properties - if (propString == null || propString.length() == 0) { - throw new InvalidDataException("No properties supplied"); - } - - // store properties - try { - PropertyArrayList props = (PropertyArrayList) Gateway - .getMarshaller().unmarshall(propString); - for (Property thisProp : props.list) - mStorage.put(mItemPath, thisProp, locker); - } catch (Throwable ex) { - Logger.msg(8, "TraceableEntity::initialise(" + mItemPath - + ") - Properties were invalid: " + propString); - Logger.error(ex); - mStorage.abort(locker); - throw new InvalidDataException("Properties were invalid"); - } - - // Store an event and the initial properties - try { - Outcome initOutcome = new Outcome(0, propString, "ItemInitialization", 0); - History hist = new History(mItemPath, locker); - Transition predefDone = new Transition(0, "Done", 0, 0); - Event newEvent = hist.addEvent(new AgentPath(agentId), "", "Initialize", "", "", initOutcome.getSchemaType(), 0, "PredefinedStep", 0, predefDone, "last"); - initOutcome.setID(newEvent.getID()); - Viewpoint newLastView = new Viewpoint(mItemPath, initOutcome.getSchemaType(), "last", 0, newEvent.getID()); - Gateway.getStorage().put(mItemPath, initOutcome, locker); - Gateway.getStorage().put(mItemPath, newLastView, locker); - } catch (Throwable ex) { - Logger.msg(8, "TraceableEntity::initialise(" + mItemPath - + ") - Could not store event and outcome."); - Logger.error(ex); - mStorage.abort(locker); - throw new PersistencyException("Error storing event and outcome"); - } - - // create wf - try { - Workflow lc = null; - if (initWfString == null || initWfString.length() == 0) - lc = new Workflow(new CompositeActivity(), getNewPredefStepContainer()); - else - lc = new Workflow((CompositeActivity) Gateway - .getMarshaller().unmarshall(initWfString), getNewPredefStepContainer()); - lc.initialise(mItemPath, agentPath); - mStorage.put(mItemPath, lc, locker); - } catch (Throwable ex) { - Logger.msg(8, "TraceableEntity::initialise(" + mItemPath - + ") - Workflow was invalid: " + initWfString); - Logger.error(ex); - mStorage.abort(locker); - throw new InvalidDataException("Workflow was invalid"); - } - - // init collections - if (initCollsString != null && initCollsString.length() > 0) { - try { - CollectionArrayList colls = (CollectionArrayList) Gateway - .getMarshaller().unmarshall(initCollsString); - for (Collection thisColl : colls.list) { - mStorage.put(mItemPath, thisColl, locker); - } - } catch (Throwable ex) { - Logger.msg(8, "TraceableEntity::initialise(" + mItemPath - + ") - Collections were invalid: " - + initCollsString); - Logger.error(ex); - mStorage.abort(locker); - throw new InvalidDataException("Collections were invalid"); - } - } - - mStorage.commit(locker); - Logger.msg(3, "Initialisation of item " + mItemPath - + " was successful"); - } - - - protected PredefinedStepContainer getNewPredefStepContainer() { - - return new ItemPredefinedStepContainer(); - } - - @Override - public String requestAction(SystemKey agentId, String stepPath, int transitionID, - String requestData) throws AccessRightsException, - InvalidTransitionException, ObjectNotFoundException, - InvalidDataException, PersistencyException, - ObjectAlreadyExistsException, InvalidCollectionModification { - - try { - - AgentPath agent = new AgentPath(agentId); - Logger.msg(1, "TraceableEntity::request(" + mItemPath + ") - Transition " - + transitionID + " on " + stepPath + " by " + agent); - - - Workflow lifeCycle = (Workflow) mStorage.get(mItemPath, - ClusterStorage.LIFECYCLE + "/workflow", null); - - String finalOutcome = lifeCycle.requestAction(agent, stepPath, mItemPath, - transitionID, requestData); - - // store the workflow if we've changed the state of the domain - // wf - if (!(stepPath.startsWith("workflow/predefined"))) - mStorage.put(mItemPath, lifeCycle, null); - - return finalOutcome; - // Normal operation exceptions - } catch (AccessRightsException ex) { - Logger.msg("Propagating AccessRightsException back to the calling agent"); - throw ex; - } catch (InvalidTransitionException ex) { - Logger.msg("Propagating InvalidTransitionException back to the calling agent"); - throw ex; - } catch (ObjectNotFoundException ex) { - Logger.msg("Propagating ObjectNotFoundException back to the calling agent"); - throw ex; - // errors - } catch (InvalidItemPathException ex) { - Logger.error(ex); - throw new AccessRightsException("Invalid Agent Id: " + agentId); - } catch (InvalidDataException ex) { - Logger.error(ex); - Logger.msg("Propagating InvalidDataException back to the calling agent"); - throw ex; - } catch (ObjectAlreadyExistsException ex) { - Logger.error(ex); - Logger.msg("Propagating ObjectAlreadyExistsException back to the calling agent"); - throw ex; - } catch (InvalidCollectionModification ex) { - Logger.error(ex); - Logger.msg("Propagating InvalidCollectionModification back to the calling agent"); - throw ex; - } catch (Throwable ex) { // non-CORBA exception hasn't been caught! - Logger.error("Unknown Error: requestAction on " + mItemPath - + " by " + agentId + " executing " + stepPath); - Logger.error(ex); - throw new InvalidDataException( - "Extraordinary Exception during execution:" - + ex.getClass().getName() + " - " - + ex.getMessage()); - } - } - - @Override - public String queryLifeCycle(SystemKey agentId, boolean filter) - throws AccessRightsException, ObjectNotFoundException, - PersistencyException { - Logger.msg(1, "TraceableEntity::queryLifeCycle(" + mItemPath - + ") - agent: " + agentId); - try { - AgentPath agent; - try { - agent = new AgentPath(agentId); - } catch (InvalidItemPathException e) { - throw new AccessRightsException("Agent " + agentId - + " doesn't exist"); - } - Workflow wf; - wf = (Workflow) mStorage.get(mItemPath, - ClusterStorage.LIFECYCLE + "/workflow", null); - JobArrayList jobBag = new JobArrayList(); - CompositeActivity domainWf = (CompositeActivity) wf - .search("workflow/domain"); - jobBag.list = filter ? - domainWf.calculateJobs(agent, mItemPath, true) : - domainWf.calculateAllJobs(agent, mItemPath, true); - Logger.msg(1, "TraceableEntity::queryLifeCycle(" + mItemPath - + ") - Returning " + jobBag.list.size() + " jobs."); - try { - return Gateway.getMarshaller().marshall(jobBag); - } catch (Exception e) { - Logger.error(e); - throw new PersistencyException("Error marshalling job bag"); - } - } catch (Throwable ex) { - Logger.error("TraceableEntity::queryLifeCycle(" + mItemPath - + ") - Unknown error"); - Logger.error(ex); - throw new PersistencyException( - "Unknown error querying jobs. Please see server log."); - } - } - - @Override - public String queryData(String path) throws AccessRightsException, - ObjectNotFoundException, PersistencyException { - - String result = ""; - - Logger.msg(1, "TraceableEntity::queryData(" + mItemPath + ") - " - + path); - - try { // check for cluster contents query - - if (path.endsWith("/all")) { - int allPos = path.lastIndexOf("all"); - String query = path.substring(0, allPos); - String[] ids = mStorage.getClusterContents(mItemPath, query); - - for (int i = 0; i < ids.length; i++) { - result += ids[i]; - - if (i != ids.length - 1) - result += ","; - } - } - // **************************************************************** - else { // retrieve the object instead - C2KLocalObject obj = mStorage.get(mItemPath, path, null); - - // marshall it, or in the case of an outcome get the data. - result = Gateway.getMarshaller().marshall(obj); - } - } catch (ObjectNotFoundException ex) { - throw ex; - } catch (Throwable ex) { - Logger.warning("TraceableEntity::queryData(" + mItemPath - + ") - " + path + " Failed: " + ex.getClass().getName()); - throw new PersistencyException("Server exception: " - + ex.getClass().getName()); - } - - if (Logger.doLog(9)) - Logger.msg(9, "TraceableEntity::queryData(" + mItemPath - + ") - result:" + result); - - return result; - } - - /** - * - */ - @Override - protected void finalize() throws Throwable { - Logger.msg(7, "Item "+mItemPath+" reaped"); - Gateway.getStorage().clearCache(mItemPath, null); - super.finalize(); - } -} -- cgit v1.2.3