summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/entity/TraceableEntity.java
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/entity/TraceableEntity.java')
-rw-r--r--source/com/c2kernel/entity/TraceableEntity.java341
1 files changed, 0 insertions, 341 deletions
diff --git a/source/com/c2kernel/entity/TraceableEntity.java b/source/com/c2kernel/entity/TraceableEntity.java
deleted file mode 100644
index c7aff82..0000000
--- a/source/com/c2kernel/entity/TraceableEntity.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/**************************************************************************
- * TraceableEntity
- *
- * $Workfile$
- * $Revision: 1.108 $
- * $Date: 2005/10/06 14:46:22 $
- *
- * Copyright (C) 2001 CERN - European Organization for Nuclear Research
- * All rights reserved.
- **************************************************************************/
-
-package com.c2kernel.entity;
-
-
-import com.c2kernel.common.AccessRightsException;
-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.entity.agent.JobArrayList;
-import com.c2kernel.lifecycle.instance.CompositeActivity;
-import com.c2kernel.lifecycle.instance.Workflow;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
-import com.c2kernel.lookup.AgentPath;
-import com.c2kernel.lookup.InvalidEntityPathException;
-import com.c2kernel.persistency.ClusterStorage;
-import com.c2kernel.persistency.ClusterStorageException;
-import com.c2kernel.persistency.TransactionManager;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.property.Property;
-import com.c2kernel.property.PropertyArrayList;
-import com.c2kernel.utils.CastorXMLUtility;
-import com.c2kernel.utils.Logger;
-
-/**************************************************************************
-*
-* @author $Author: abranson $ $Date: 2005/10/06 14:46:22 $
-* @version $Revision: 1.108 $
-* <pre>
-* ,. '\'\ ,---.
-* . | \\ l\\l_ // |
-* _ _ | \\/ `/ `.| |
-* /~\\ \ //~\ | Y | | || Y |
-* | \\ \ // | | \| | |\ / |
-* [ || || ] \ | o|o | > /
-* ] Y || || Y [ \___\_--_ /_/__/
-* | \_|l,------.l|_/ | /.-\(____) /--.\
-* | >' `< | `--(______)----'
-* \ (/~`--____--'~\) / u// u / \
-* `-_>-__________-<_-' / \ / /|
-* /(_#(__)#_)\ ( .) / / ]
-* \___/__\___/ `.`' / [
-* /__`--'__\ |`-' |
-* /\(__,>-~~ __) | |_
-* /\//\\( `--~~ ) _l |-:.
-* '\/ <^\ /^> | ` ( < \\
-* _\ >-__-< /_ ,-\ ,-~~->. \ `:._,/
-* (___\ /___) (____/ (____) `-'
-* Kovax and, paradoxically, Kovax
-* </pre>
-***************************************************************************/
-
-public class TraceableEntity extends ItemPOA
-{
-
- private int mSystemKey;
- private org.omg.PortableServer.POA mPoa;
- private TransactionManager mStorage;
-
-
- /**************************************************************************
- * Constructor used by the Locator only
- **************************************************************************/
- public TraceableEntity( int key,
- org.omg.PortableServer.POA poa )
- {
- Logger.msg(5,"TraceableEntity::constructor() - SystemKey:" + key );
-
- mSystemKey = key;
- mPoa = poa;
- mStorage = Gateway.getStorage();
- }
-
-
- /**************************************************************************
- *
- **************************************************************************/
- @Override
- public org.omg.PortableServer.POA _default_POA()
- {
- if(mPoa != null)
- return mPoa;
- else
- return super._default_POA();
- }
-
-
- /**************************************************************************
- *
- **************************************************************************/
- @Override
- public int getSystemKey()
- {
- Logger.msg(8, "TraceableEntity::getSystemKey() - " + mSystemKey);
- return mSystemKey;
- }
-
- /**************************************************************************
- *
- **************************************************************************/
- @Override
- public void initialise( int agentId,
- String propString,
- String initWfString
- )
- throws AccessRightsException,
- InvalidDataException,
- PersistencyException
- {
- Logger.msg(1, "TraceableEntity::initialise("+mSystemKey+") - agent:"+agentId);
- synchronized (this) {
- Workflow lc = null;
- PropertyArrayList props = null;
-
- AgentPath agentPath;
- try {
- agentPath = new AgentPath(agentId);
- } catch (InvalidEntityPathException e) {
- throw new AccessRightsException("Invalid Agent Id:" + agentId);
- }
-
- //unmarshalling checks the validity of the received strings
-
- // create properties
- if (!propString.equals("")) {
- try {
- props = (PropertyArrayList)CastorXMLUtility.unmarshall(propString);
- for (Object name : props.list) {
- Property thisProp = (Property)name;
- mStorage.put(mSystemKey, thisProp, props);
- }
- } catch (Throwable ex) {
- Logger.msg(8, "TraceableEntity::initialise("+mSystemKey+ ") - Properties were invalid: "+propString);
- Logger.error(ex);
- mStorage.abort(props);
- }
- mStorage.commit(props);
- }
-
- // create wf
- try {
- if (initWfString == null || initWfString.equals(""))
- lc = new Workflow(new CompositeActivity());
- else
- lc = new Workflow((CompositeActivity)CastorXMLUtility.unmarshall(initWfString));
- lc.initialise(mSystemKey, agentPath);
- mStorage.put(mSystemKey, lc, null);
- } catch (Throwable ex) {
- Logger.msg(8, "TraceableEntity::initialise("+mSystemKey+") - Workflow was invalid: "+initWfString);
- Logger.error(ex);
- }
- }
- }
-
- /**************************************************************************
- *
- **************************************************************************/
- //requestdata is xmlstring
- @Override
- public void requestAction( int agentId,
- String stepPath,
- int transitionID,
- String requestData
- )
- throws AccessRightsException,
- InvalidTransitionException,
- ObjectNotFoundException,
- InvalidDataException,
- PersistencyException,
- ObjectAlreadyExistsException
- {
- synchronized (this) {
- try {
-
- Logger.msg(1, "TraceableEntity::request("+mSystemKey+") - " +
- Transitions.getTransitionName(transitionID) + " "+stepPath + " by " +agentId );
-
- AgentPath agent = new AgentPath(agentId);
- Workflow lifeCycle = (Workflow)mStorage.get(mSystemKey, ClusterStorage.LIFECYCLE+"/workflow", null);
-
- lifeCycle.requestAction( agent,
- stepPath,
- transitionID,
- requestData );
-
- // store the workflow if we've changed the state of the domain wf
- if (!(stepPath.startsWith("workflow/predefined")))
- mStorage.put(mSystemKey, lifeCycle, null);
-
- // 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 (ClusterStorageException ex) {
- Logger.error(ex);
- throw new PersistencyException("Error on storage: "+ex.getMessage(), "");
- } catch (InvalidEntityPathException 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;
- // non-CORBA exception hasn't been caught!
- } catch (Throwable ex) {
- Logger.error("Unknown Error: requestAction on "+mSystemKey+" by "+agentId+" executing "+stepPath);
- Logger.error(ex);
- throw new InvalidDataException("Extraordinary Exception during execution:"+ex.getClass().getName()+" - "+ex.getMessage(), "");
- }
- }
- }
-
- /**************************************************************************
- *
- **************************************************************************/
- @Override
- public String queryLifeCycle( int agentId,
- boolean filter
- )
- throws AccessRightsException,
- ObjectNotFoundException,
- PersistencyException
- {
- synchronized (this) {
- Logger.msg(1, "TraceableEntity::queryLifeCycle("+mSystemKey+") - agent: " + agentId);
-
- try
- {
- AgentPath agent = new AgentPath(agentId);
- Workflow wf = (Workflow)mStorage.get(mSystemKey, ClusterStorage.LIFECYCLE+"/workflow", null);
- JobArrayList jobBag = new JobArrayList();
- CompositeActivity domainWf = (CompositeActivity)wf.search("workflow/domain");
- jobBag.list = filter?domainWf.calculateJobs(agent, true):domainWf.calculateAllJobs(agent, true);
- Logger.msg(1, "TraceableEntity::queryLifeCycle("+mSystemKey+") - Returning "+jobBag.list.size()+" jobs.");
- return CastorXMLUtility.marshall( jobBag );
- }
- catch( Throwable ex )
- {
- Logger.error(ex);
- return "<ERROR/>";
- }
- }
- }
-
- /**************************************************************************
- * The description for operation getData.
- *
- * @param path - the path to the object required
- * the suffix 'all' retrieves a listing of all keys on that level
- *
- * @return The result string in xml format
- * except 'all' which returns a comma sep list
- *
- * @exception ObjectNotFoundException
- * ************************************************************************/
- @Override
- public String queryData(String path)
- throws AccessRightsException,
- ObjectNotFoundException,
- PersistencyException
- {
- synchronized (this) {
- String result = "";
-
- Logger.msg(1, "TraceableEntity::queryData("+mSystemKey+") - " + 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( mSystemKey, 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( mSystemKey, path, null );
-
- // marshall it, or in the case of an outcome get the data.
- result = CastorXMLUtility.marshall(obj);
- }
- }
- catch (ObjectNotFoundException ex) {
- throw ex;
- }
- catch(Throwable ex)
- {
- Logger.warning("TraceableEntity::queryData("+mSystemKey+") - "+
- path + " Failed: "+ex.getClass().getName());
- throw new PersistencyException("Server exception: "+ex.getClass().getName(), "");
- }
-
- if( Logger.doLog(9) )
- Logger.msg(9, "TraceableEntity::queryData("+mSystemKey+") - result:" + result );
-
- return result;
- }
- }
- /**
- *
- */
- @Override
- protected void finalize() throws Throwable {
- Logger.msg(7, "Item "+mSystemKey+" reaped");
- Gateway.getStorage().clearCache(mSystemKey, null);
- super.finalize();
- }
-
-}