## org.opencyc.cycagent.coabs
Class CoAbsCommunityAdapter

    java.lang.Object
      |
      +--org.opencyc.cycagent.coabs.CoAbsCommunityAdapter

All Implemented Interfaces:
  AgentCommunityAdapter, java.util.EventListener, com.globalinfotek.coabsgrid.MessageListener, com.globalinfotek.coabsgrid.ShutdownHook

public class CoAbsCommunityAdapter
extends java.lang.Object
implements AgentCommunityAdapter, com.globalinfotek.coabsgrid.MessageListener, com.globalinfotek.coabsgrid.ShutdownHook

Provides the interface for interacting with the CoABS agent community.

The package org.opencyc.cycagent.coabs is an optional package for OpenCyc. If the developer does not have access to the CoABS grid classes from Global Infotek, then the org.opencyc.cycagent.coabs package can be ommitted from the build. The FIPA-OS agent community is freely available as open source and OpenCyc can be configured to work with it alone, or in combination with CoABS when available.

Author:
  Stephen L. Reed

  Copyright 2001 Cycorp, Inc., license is open source GNU LGPL.

  the license

  www.opencyc.org

  OpenCyc at SourceForge

  THIS SOFTWARE AND KNOWLEDGE BASE CONTENT ARE PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENCYC ORGANIZATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND KNOWLEDGE BASE CONTENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Field Summary
`protected static java.util.Hashtable` `agentRepCache` Cached AgentRep objects which reduce lookup overhead.
`protected java.lang.String` `conversationState` The conversation state.
`int` `msgSerialNumber` outbound message serial number.
`protected java.lang.String` `myAgentName` reference to the name of my agent
`protected com.globalinfotek.coabsgrid.AgentRegistrationHelper` `regHelper` the CoABS AgentRestrationHelper object.
`protected java.util.Hashtable` `replyMessages` Implements an association: message id --> reply message acl.
`protected int` `verbosity` Sets verbosity of this object's output.
`protected java.util.Hashtable` `waitingReplyThreads` Implements an association: message id --> waiting thread for the reply.

Fields inherited from interface org.opencyc.cycagent.AgentCommunityAdapter
`COABS_AGENT_COMMUNITY, CYC_API_ONTOLOGY, CYC_ECHO_ONTOLOGY, DEFAULT_VERBOSITY, FIPA_OS_AGENT_COMMUNITY, FIPA_OS_AND_COABS_AGENT_COMMUNITIES, LOW_VERBOSITY, MAX_VERBOSITY, MEDIUM_VERBOSITY, QUIET_VERBOSITY`

Constructor Summary
`CoAbsCommunityAdapter()` Constructs a new CoAbsCommunityAdapter.

Method Summary
`void` `cleanup()` Deregisters this agent when the application is terminated.
`fipaos.ont.fipa.ACL` `converseMessage(fipaos.ont.fipa.ACL acl, Timer timer)` Sends an Agent Communication Language message and returns the reply.
`void` `deregister()` Deregisters this agent.
`protected static java.lang.String` `fixSenderReceiver(java.lang.String aclText)` Fixes the :sender and :receiver parameter in the CoABS message to make them FIPA ACL compatible.
`fipaos.ont.fipa.fipaman.AgentID` `getAID()` Gets the AgentID of this Agent.
`void` `initialize(MessageReceiver messageReceiver, int verbosity)` Initializes the new CoAbsCommunityAdapter instance.
`protected com.globalinfotek.coabsgrid.AgentRep` `lookupAgentRep(java.lang.String agentName)` Returns the AgentRep object for the given agent name.
`void` `messageAdded(com.globalinfotek.coabsgrid.Message message)` Receives messages from the CoABS grid.
`java.lang.String` `nextMessageId()` Returns the next message serial number identifier.
`protected void` `register()` Registers the CoABS agent on the grid.
`void` `sendMessage(fipaos.ont.fipa.ACL acl)` Sends an Agent Communication Language message.
`void` `setVerbosity(int verbosity)` Sets verbosity of this object's output.
`void` `terminate()` Terminate this agent.
`void` `xforward(com.globalinfotek.coabsgrid.Message message, java.lang.String messageId)` Forwards the message to the CoABS grid.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### msgSerialNumber

    public int msgSerialNumber

  outbound message serial number.

### verbosity

    protected int verbosity

  Sets verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input.

### myAgentName

    protected java.lang.String myAgentName

  reference to the name of my agent

### regHelper

    protected com.globalinfotek.coabsgrid.AgentRegistrationHelper regHelper

  the CoABS AgentRestrationHelper object.

### waitingReplyThreads

    protected java.util.Hashtable waitingReplyThreads

  Implements an association: message id --> waiting thread for the reply.

### replyMessages

    protected java.util.Hashtable replyMessages

  Implements an association: message id --> reply message acl.

### conversationState

    protected java.lang.String conversationState

  The conversation state.

### agentRepCache

    protected static java.util.Hashtable agentRepCache

  Cached AgentRep objects which reduce lookup overhead. myAgentName --> agentRep

Constructor Detail

### CoAbsCommunityAdapter

    public CoAbsCommunityAdapter()
                          throws java.io.IOException

  Constructs a new CoAbsCommunityAdapter. The default constructor is required for convenient instantiation via the class newInstance method. The CoABS source package is optional when building OpenCyc and this object is contructed using its string name to avoid compilation errors when the org.opencyc.cycagent.coabs source package is ommited from the build.

Method Detail

### initialize

    public void initialize(MessageReceiver messageReceiver,
                           int verbosity)
                    throws java.io.IOException

  Initializes the new CoAbsCommunityAdapter instance.
  Specified by:
    `initialize` in interface `AgentCommunityAdapter`
  Parameters:
    `messageReceiver` - the parent application which can receive agent messages via a callback
    `verbosity` - the verbosity of this agent adapter's output. 0 --> quiet ... 9 -> maximum diagnostic input

### register

    protected void register()
                     throws java.io.IOException

  Registers the CoABS agent on the grid.

### fixSenderReceiver

    protected static java.lang.String fixSenderReceiver(java.lang.String aclText)
                                                 throws fipaos.parser.ParserException

  Fixes the :sender and :receiver parameter in the CoABS message to make them FIPA ACL compatible. Also encloses service id in string quotes.
  Parameters:
    `aclText` - the ACL expression in string form with :sender and with :receiver
  Returns:
    the ACL expression in string form with :sender (agent-identifier :name ) and with :receiver (set (agent-identifier :name ))

### nextMessageId

    public java.lang.String nextMessageId()

  Returns the next message serial number identifier.
  Specified by:
    `nextMessageId` in interface `AgentCommunityAdapter`
  Returns:
    the next message serial number identifier

### sendMessage

    public void sendMessage(fipaos.ont.fipa.ACL acl)
                     throws java.io.IOException

  Sends an Agent Communication Language message.
  Specified by:
    `sendMessage` in interface `AgentCommunityAdapter`
  Parameters:
    `acl` - the Agent Communication Language message to be sent

### converseMessage

    public fipaos.ont.fipa.ACL converseMessage(fipaos.ont.fipa.ACL acl,
                                               Timer timer)
                                        throws javax.naming.TimeLimitExceededException,
                                               java.io.IOException

  Sends an Agent Communication Language message and returns the reply.
  Specified by:
    `converseMessage` in interface `AgentCommunityAdapter`
  Parameters:
    `acl` - the Agent Communication Language message to be sent
    `timer` - the Timer object controlling the maximum wait time for a reply message, after which an excecption is thrown.
  Returns:
    the Agent Communication Language reply message which has been received for my agent

### messageAdded

    public void messageAdded(com.globalinfotek.coabsgrid.Message message)

  Receives messages from the CoABS grid.
  Specified by:
    `messageAdded` in interface `com.globalinfotek.coabsgrid.MessageListener`
  Parameters:
    `message` - the message received from the CoABS grid

### lookupAgentRep

    protected com.globalinfotek.coabsgrid.AgentRep lookupAgentRep(java.lang.String agentName)
                                                           throws java.io.IOException

  Returns the AgentRep object for the given agent name.
  Parameters:
    `agentName` - the agent name
  Returns:
    the AgentRep object for the given agent name

### xforward

    public void xforward(com.globalinfotek.coabsgrid.Message message,
                         java.lang.String messageId)

  Forwards the message to the CoABS grid.
  Parameters:
    `message` - the CoABS message

### cleanup

    public void cleanup()

  Deregisters this agent when the application is terminated.
  Specified by:
    `cleanup` in interface `com.globalinfotek.coabsgrid.ShutdownHook`

### deregister

    public void deregister()

  Deregisters this agent.
  Specified by:
    `deregister` in interface `AgentCommunityAdapter`

### terminate

    public void terminate()

  Terminate this agent.
  Specified by:
    `terminate` in interface `AgentCommunityAdapter`

### getAID

    public fipaos.ont.fipa.fipaman.AgentID getAID()

  Gets the AgentID of this Agent. Not used by the CoAbsCommunityAdapter.
  Specified by:
    `getAID` in interface `AgentCommunityAdapter`

### setVerbosity

    public void setVerbosity(int verbosity)

  Sets verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input.
  Specified by:
    `setVerbosity` in interface `AgentCommunityAdapter`
  Parameters:
    `verbosity` - 0 --> quiet ... 9 -> maximum diagnostic input