From a1f0ecbb6a2bea6aa214322c412af2f3c5ce124b Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 7 May 2014 17:33:13 +0200 Subject: Agent now extends Item, so they can have workflows. All traces of the old 'Entity' superclasses should be removed, including proxies and paths. Very large change, breaks API compatibility with CRISTAL 2.x. Fixes #135 --- .../com/c2kernel/entity/agent/ActiveEntity.java | 263 +++++---------------- 1 file changed, 56 insertions(+), 207 deletions(-) (limited to 'src/main/java/com/c2kernel/entity/agent/ActiveEntity.java') diff --git a/src/main/java/com/c2kernel/entity/agent/ActiveEntity.java b/src/main/java/com/c2kernel/entity/agent/ActiveEntity.java index 8d4dbfd..c59b0fe 100644 --- a/src/main/java/com/c2kernel/entity/agent/ActiveEntity.java +++ b/src/main/java/com/c2kernel/entity/agent/ActiveEntity.java @@ -10,24 +10,15 @@ package com.c2kernel.entity.agent; -import java.util.Iterator; - import com.c2kernel.common.AccessRightsException; import com.c2kernel.common.CannotManageException; import com.c2kernel.common.InvalidDataException; -import com.c2kernel.common.ObjectCannotBeUpdated; +import com.c2kernel.common.InvalidTransitionException; +import com.c2kernel.common.ObjectAlreadyExistsException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.common.PersistencyException; +import com.c2kernel.entity.AgentImplementation; import com.c2kernel.entity.AgentPOA; -import com.c2kernel.entity.C2KLocalObject; -import com.c2kernel.lookup.AgentPath; -import com.c2kernel.lookup.InvalidEntityPathException; -import com.c2kernel.lookup.RolePath; -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.Logger; /************************************************************************** @@ -39,111 +30,17 @@ import com.c2kernel.utils.Logger; public class ActiveEntity extends AgentPOA { - /************************************************************************** - * The CORBA Portable Object Adapter which holds the Agent - **************************************************************************/ - private org.omg.PortableServer.POA mPOA = null; - - /************************************************************************** - * The C2Kernel system key of the Agent - **************************************************************************/ - private int mSystemKey = -1; - - /************************************************************************** - * Connection to the persistency backeng - **************************************************************************/ - private TransactionManager mDatabase = null; - - /************************************************************************** - * The agent's joblist - **************************************************************************/ - private JobList currentJobs; - /** - * - * @param key - * @param poa - */ + private final org.omg.PortableServer.POA mPoa; + private final AgentImplementation mAgentImpl; + public ActiveEntity( int key, org.omg.PortableServer.POA poa ) { Logger.msg(5, "ActiveEntity::constructor() - SystemKey:" + key ); - - mSystemKey = key; - mPOA = poa; - mDatabase = Gateway.getStorage(); - - Logger.msg(5, "ActiveEntity::constructor - completed."); + mPoa = poa; + mAgentImpl = new AgentImplementation(key); } - /** - * initialise cristal2 properties & collector - */ - @Override - public void initialise( String agentProps ) - throws AccessRightsException, - InvalidDataException, - PersistencyException - { - PropertyArrayList props = null; - Logger.msg(1, "ActiveEntity::initialise("+mSystemKey+")"); - //initialise cristal2 properties & collector - try - { - props = initProps( agentProps ); - mDatabase.commit( props ); - } - catch( ClusterStorageException ex ) - { - Logger.error("ActiveEntity::init() - Failed to init props/collector, aborting!"); - Logger.error(ex); - - mDatabase.abort( props ); - throw new PersistencyException("Failed to init props => transaction aborted!"); - } - - Logger.msg(5, "ActiveEntity::init() - completed."); - } - - /** - * - * @param propsString - * @return Properties - * @throws InvalidDataException Properties cannot be unmarshalled - * @throws ClusterStorageException - */ - private PropertyArrayList initProps( String propsString ) - throws InvalidDataException, - ClusterStorageException - { - PropertyArrayList props = null; - - // create properties - if( propsString != null && !propsString.equals("") ) - { - try - { - props = (PropertyArrayList)Gateway.getMarshaller().unmarshall(propsString); - } - catch( Exception ex ) - { - //any exception during unmarshall indicates that data was - //incorrect or the castor mapping was not set up - Logger.error(ex); - throw new InvalidDataException(ex.toString(), null); - } - - Iterator iter = props.list.iterator(); - - while( iter.hasNext() ) - mDatabase.put( mSystemKey, iter.next(), props ); - } - else - { - Logger.warning("ActiveEntity::initProps() - NO Properties!"); - } - - return props; - } /************************************************************************** * @@ -152,8 +49,8 @@ public class ActiveEntity extends AgentPOA @Override public org.omg.PortableServer.POA _default_POA() { - if(mPOA != null) - return mPOA; + if(mPoa != null) + return mPoa; else return super._default_POA(); } @@ -166,7 +63,7 @@ public class ActiveEntity extends AgentPOA @Override public int getSystemKey() { - return mSystemKey; + return mAgentImpl.getSystemKey(); } @@ -175,55 +72,14 @@ public class ActiveEntity extends AgentPOA * **************************************************************************/ @Override - public String queryData(String xpath) + public String queryData(String path) throws AccessRightsException, ObjectNotFoundException, PersistencyException { - String result = ""; - int allPos = -1; - - Logger.msg(1, "ActiveEntity::queryData("+mSystemKey+") - " + xpath ); - - try - { - if( (allPos=xpath.indexOf("all")) != -1 ) - { - String query = xpath.substring(0,allPos); - String[] ids = mDatabase.getClusterContents( mSystemKey, query ); - - for( int i=0; i