/** * 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.agent; import com.c2kernel.common.AccessRightsException; import com.c2kernel.common.CannotManageException; 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.AgentPOA; import com.c2kernel.lookup.AgentPath; import com.c2kernel.utils.Logger; /************************************************************************** * ActiveEntity - the CORBA object representing the Agent. All functionality * is delegated to the AgentImplementation, which extends ItemImplementation, * as this cannot extend its equivalent TraceableEntity * **************************************************************************/ public class ActiveEntity extends AgentPOA { private final org.omg.PortableServer.POA mPoa; private final AgentImplementation mAgentImpl; public ActiveEntity( AgentPath key, org.omg.PortableServer.POA poa ) { Logger.msg(5, "ActiveEntity::constructor() - SystemKey:" + key ); mPoa = poa; mAgentImpl = new AgentImplementation(key); } /************************************************************************** * * **************************************************************************/ @Override public org.omg.PortableServer.POA _default_POA() { if(mPoa != null) return mPoa; else return super._default_POA(); } /************************************************************************** * * **************************************************************************/ @Override public SystemKey getSystemKey() { return mAgentImpl.getSystemKey(); } /************************************************************************** * * **************************************************************************/ @Override public String queryData(String path) throws AccessRightsException, ObjectNotFoundException, PersistencyException { synchronized (this) { return mAgentImpl.queryData(path); } } /** * Called by an activity when it reckons we need to update our joblist for it */ @Override public void refreshJobList(SystemKey sysKey, String stepPath, String newJobs) { synchronized (this) { mAgentImpl.refreshJobList(sysKey, stepPath, newJobs); } } @Override public void addRole(String roleName) throws CannotManageException, ObjectNotFoundException { synchronized (this) { mAgentImpl.addRole(roleName); } } @Override public void removeRole(String roleName) throws CannotManageException, ObjectNotFoundException { synchronized (this) { mAgentImpl.removeRole(roleName); } } @Override public void initialise(SystemKey agentId, String propString, String initWfString, String initCollsString) throws AccessRightsException, InvalidDataException, PersistencyException, ObjectNotFoundException { synchronized (this) { mAgentImpl.initialise(agentId, propString, initWfString, initCollsString); } } @Override public String requestAction(SystemKey agentID, String stepPath, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, ObjectNotFoundException, InvalidDataException, PersistencyException, ObjectAlreadyExistsException, InvalidCollectionModification { synchronized (this) { return mAgentImpl.requestAction(agentID, stepPath, transitionID, requestData); } } @Override public String queryLifeCycle(SystemKey agentId, boolean filter) throws AccessRightsException, ObjectNotFoundException, PersistencyException { synchronized (this) { return mAgentImpl.queryLifeCycle(agentId, filter); } } }