AMETAS.place
Class AMETASPlaceUser

java.lang.Object
  extended byAMETAS.place.AMETASPlaceUser
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
AMETASAgent, AMETASServiceManager, AMETASUserAdapter

public abstract class AMETASPlaceUser
extends java.lang.Object
implements java.io.Serializable

Abstrakte Basisklasse aller Stellennutzer. Dies sind Agenten, UserAdapter und ServiceManager. Die Gemeinsamkeiten dieser Objekte sind:

  1. der Ausführungsmechanismus
  2. Verwaltung der Objekte im Place
  3. Verwenden einer PlaceUserID zum Nachweis ihrer Identität
  4. der Kommunikationsmechanismus

See Also:
Serialized Form

Field Summary
protected  AMETAS.place.AMETASPlaceUserDriver m_drvPU
          Treiber des Stellennutzers.
 
Constructor Summary
AMETASPlaceUser()
          Erzeugt einen neuen Stellennutzer.
AMETASPlaceUser(AMETASPlaceUserID idNew)
          Erzeugt einen neuen Stellennutzer mit der übergebenen PlaceUserID.
AMETASPlaceUser(AMETASPlaceUserID idNew, java.lang.String sName)
          Erzeugt einen neuen PlaceUser mit der übergebenen PlaceUserID.
 
Method Summary
protected  void checkPermission(AMETASPermission perm)
          Prüft, ob eine bestimmte Berechtigung gegeben ist.
protected  int dispatchMessage(AMETASMessage mes)
          Zerlegt eine Nachricht und ruft je nach Art der Nachricht eine MessageHandler-Methode auf.
 AMETASPlaceUserID getID()
          Liefert die PlaceUserID dieses PlaceUsers zurück.
 java.lang.String getName()
          Liefert den Registrierungsnamen dieses PlaceUsers zurück.
 AMETASPlaceUserDriverIf getPUDriverIf()
          Liefert die Schnittstelle zum Treiber dieses PlaceUsers.
 java.lang.ClassLoader getPULoader()
          Liefert den Klassenlader des Stellennutzers.
 byte[] getSignableData(AMETASSPUContainer spu, long nTime)
          Liefert die Daten, welche der Eigner signiert.
protected  boolean handleApplicationMessage(java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für APPLICATION-Nachrichten.
protected  boolean handleCustomMessage(short nCategory, java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für benutzerdefinierte Nachrichtenkategorien.
protected  boolean handleMessageMessage(java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für MESSAGE-Nachrichten.
protected  boolean handlePlaceMessage(java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für PLACE-Nachrichten.
protected  boolean handleSecurityMessage(java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für SECURITY-Nachrichten.
protected  boolean handleServiceMessage(java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für SERVICE-Nachrichten.
protected  boolean handleTradingMessage(java.lang.String sSpec, java.lang.Object[] aBody, AMETASMessage mes)
          MessageHandler-Methode für TRADING-Nachrichten.
abstract  void invoke()
          Startet den Stellennutzer.
 void output(java.lang.String sText)
          Wird aufgerufen, um eine Meldung auszugeben.
 void recoverError(java.lang.Throwable e)
          Wird aufgerufen, wenn ein nicht abgefangener Fehler in invoke auftrat.
protected  void specializeTypes(AMETASType[] aType)
          Spezialisiert die Typen, die im SPU gefunden werden.
 void submitMessage(AMETASMessage msg)
          Legt Nachrichten über den Treiber ab.
 java.lang.String toString()
          Liefert eine Stringrepräsentation des Stellennutzers.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_drvPU

protected transient AMETAS.place.AMETASPlaceUserDriver m_drvPU
Treiber des Stellennutzers.

Constructor Detail

AMETASPlaceUser

public AMETASPlaceUser()
Erzeugt einen neuen Stellennutzer. Es wird eine neue ID mit Standardwerten festgelegt.


AMETASPlaceUser

public AMETASPlaceUser(AMETASPlaceUserID idNew)
Erzeugt einen neuen Stellennutzer mit der übergebenen PlaceUserID. Sie kann während seiner Lebensspanne nicht verändert werden. Dieser Konstruktor muss in abgeleiteten Klassen mit super(AMETASPlaceUserID) ausgeführt werden.

Parameters:
idNew - PlaceUser-ID.

AMETASPlaceUser

public AMETASPlaceUser(AMETASPlaceUserID idNew,
                       java.lang.String sName)
Erzeugt einen neuen PlaceUser mit der übergebenen PlaceUserID. Nur im Konstruktor kann dem PlaceUser eine ID gegeben werden. Dieser Konstruktor muss in abgeleiteten Klassen mit super(AMETASPlaceUserID, String) ausgeführt werden. Der Name wird bei der lokalen Registrierung verwendet.

Parameters:
idNew - PlaceUser-ID.
sName - Registrierungsname.
Method Detail

invoke

public abstract void invoke()
Startet den Stellennutzer. Diese Methode wird von jenem PlaceUserDriver-Thread aufgerufen, der für dieses Stellennutzer zuständig ist. Die Methode wird nach jeder Migration eines Agenten erneut aufgerufen. Ein AMETAS-Agent beginnt also seine Abarbeitung nach jeder Migration von vorne.


recoverError

public void recoverError(java.lang.Throwable e)
Wird aufgerufen, wenn ein nicht abgefangener Fehler in invoke auftrat. Dies kann ein Laufzeitfehler wie NullPointerException oder SecurityException sein. Der Stellennutzer hat die Gelegenheit, Maßnahmen zu treffen, um das Problem zu beheben.

Parameters:
e - Fehler oder Ausnahme, die aufgetreten ist.

getID

public final AMETASPlaceUserID getID()
Liefert die PlaceUserID dieses PlaceUsers zurück.

Returns:
ID des Stellennutzers.

getName

public java.lang.String getName()
Liefert den Registrierungsnamen dieses PlaceUsers zurück. Falls er nicht lokal registriert ist, liefert diese Methode null zurück.

Returns:
Registrierungsname des Stellennutzers.

getPULoader

public java.lang.ClassLoader getPULoader()
Liefert den Klassenlader des Stellennutzers.

Returns:
Klassenlader.

checkPermission

protected void checkPermission(AMETASPermission perm)
Prüft, ob eine bestimmte Berechtigung gegeben ist. Dies wird benötigt, um spezielle Felder zu setzen, die nur vom Treiber modifiziert werden dürfen.

Parameters:
perm - Berechtigung.
Throws:
java.lang.SecurityException - wenn die Berechtigung nicht gegeben ist.

specializeTypes

protected void specializeTypes(AMETASType[] aType)
Spezialisiert die Typen, die im SPU gefunden werden. Dies kann dazu dienen, der Instanz die Möglichkeit zu geben, den Typ so zu spezialisieren, dass eine Vermittlung direkt auf diese Instanz hinweist. Diese Methode muss entsprechend überschrieben werden; diese Implementierung kehrt still zurück.


getPUDriverIf

public AMETASPlaceUserDriverIf getPUDriverIf()
Liefert die Schnittstelle zum Treiber dieses PlaceUsers.

Returns:
Treiber des Stellennutzers.
Since:
2.6.0, da die Kontextverwaltung darauf zugreifen muss und der PUDriver nicht öffentlich ist.

submitMessage

public void submitMessage(AMETASMessage msg)
                   throws java.lang.IllegalArgumentException,
                          AccountExpiredException
Legt Nachrichten über den Treiber ab. Die Nachrichten sind fix und fertig formatiert; lediglich die Einstellungen über den Absender usw. werden noch vorgenommen.

Parameters:
msg - Nachricht.
Throws:
java.lang.IllegalArgumentException - falls die Nachricht leer ist oder nicht serialisiert werden kann.
AccountExpiredException - falls der Stellennutzer sein Konto aufgebraucht hat. (zurzeit nicht verwendet).
Since:
2.6.0

output

public void output(java.lang.String sText)
            throws AccountExpiredException
Wird aufgerufen, um eine Meldung auszugeben. Diese Meldung wird in das Log der Stelle geschrieben und führt zu einer Abbuchung auf dem Konto des Stellennutzers.

Throws:
AccountExpiredException - wenn das Konto aufgebraucht ist.
Since:
2.6.0

toString

public java.lang.String toString()
Liefert eine Stringrepräsentation des Stellennutzers.

Returns:
Stringrepräsentation.

getSignableData

public byte[] getSignableData(AMETASSPUContainer spu,
                              long nTime)
Liefert die Daten, welche der Eigner signiert.

Parameters:
spu - Zugehöriger SPU-Container.
nTime - Zeitstempel.
Returns:
Bytefeld, das die zu signierenden Daten enthält.

dispatchMessage

protected int dispatchMessage(AMETASMessage mes)
Zerlegt eine Nachricht und ruft je nach Art der Nachricht eine MessageHandler-Methode auf. dispatchMessage(AMETASMessage) soll die Nachrichtenverarbeitung vereinfachen. Ein Stellennutzer kann eine oder mehrere der weiter unten definierten MessageHandler-Methoden überladen, in der er in Abhängigkeit der übergebenen Spezifikation die Nachricht interpretiert und verarbeitet. Es gibt für jede der 6 vordefinierten Nachrichtenkategorien einen Handler, und zusätzlich gibt es einen Handler für Nachrichten, die nicht in eine dieser Kategorien fallen. Will ein Stellennutzer diesen Mechanismus benutzen, so überlädt er die Handler der Nachrichtenkategorien, die für ihn interessant sind und ruft dispatchMessage mit der neuen Nachricht als Parameter auf. dispatchMessage ruft daraufhin den von ihm überladenen Handler auf, falls die Nachricht die richtige Kategorie hat. Dem Handler werden als Parameter übergeben:
  1. Die Spezifikation aus dem Nutzlastvektor, um ein weiteres Dispatching durchführen zu können
  2. Die Daten des Nutzlastvektors.
  3. Die Nachricht selbst, um auf ihre Header-Felder zugreifen zu können.
Die Nachricht wird also in handliche Teile zerlegt, die der Programmierer direkt verwenden kann.

Nachrichten können aber auch nach wie vor per Hand verarbeitet werden, ohne diesen Mechanismus zu nutzen.

Parameters:
mes - Zu verarbeitende Nachricht.
Returns:
AMETASErrors.OK, falls kein Fehler auftrat.

handlePlaceMessage

protected boolean handlePlaceMessage(java.lang.String sSpec,
                                     java.lang.Object[] aBody,
                                     AMETASMessage mes)
MessageHandler-Methode für PLACE-Nachrichten.

Parameters:
sSpec - Spezifikation der Nachricht.
aBody - Nutzlast der Nachricht.
mes - Gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage

handleServiceMessage

protected boolean handleServiceMessage(java.lang.String sSpec,
                                       java.lang.Object[] aBody,
                                       AMETASMessage mes)
MessageHandler-Methode für SERVICE-Nachrichten.

Parameters:
sSpec - Spezifikation der Nachricht.
aBody - Nutzlast der Nachricht.
mes - Gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage

handleApplicationMessage

protected boolean handleApplicationMessage(java.lang.String sSpec,
                                           java.lang.Object[] aBody,
                                           AMETASMessage mes)
MessageHandler-Methode für APPLICATION-Nachrichten.

Parameters:
sSpec - Spezifikation der Nachricht.
aBody - Nutzlast der Nachricht.
mes - Gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage

handleSecurityMessage

protected boolean handleSecurityMessage(java.lang.String sSpec,
                                        java.lang.Object[] aBody,
                                        AMETASMessage mes)
MessageHandler-Methode für SECURITY-Nachrichten.

Parameters:
sSpec - Spezifikation der Nachricht.
aBody - Nutzlast der Nachricht.
mes - Gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage

handleTradingMessage

protected boolean handleTradingMessage(java.lang.String sSpec,
                                       java.lang.Object[] aBody,
                                       AMETASMessage mes)
MessageHandler-Methode für TRADING-Nachrichten.

Parameters:
sSpec - Spezifikation der Nachricht.
aBody - Nutzlast der Nachricht.
mes - Gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage

handleMessageMessage

protected boolean handleMessageMessage(java.lang.String sSpec,
                                       java.lang.Object[] aBody,
                                       AMETASMessage mes)
MessageHandler-Methode für MESSAGE-Nachrichten.

Parameters:
sSpec - Spezifikation der Nachricht.
aBody - Nutzlast der Nachricht.
mes - Gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage

handleCustomMessage

protected boolean handleCustomMessage(short nCategory,
                                      java.lang.String sSpec,
                                      java.lang.Object[] aBody,
                                      AMETASMessage mes)
MessageHandler-Methode für benutzerdefinierte Nachrichtenkategorien. Dieser Handler wird für Nachrichten aufgerufen, die in keine der vordefinierten Kategorien fallen. Hier wird die Kategorie mit übergeben. Dem Stellennutzer obliegt das vollständige Dispatching.

Parameters:
sSpec - Spezifikation der Nachricht.
nCategory - Kategorie der Nachricht.
aBody - Nutzlast der Nachricht.
mes - gesamte Nachricht.
Returns:
true, falls die Nachricht bearbeitet wurde, false sonst.
See Also:
AMETASMessage