org.abora.gold.nkernel
Class FeKeyMaster

java.lang.Object
  |
  +--org.abora.gold.java.AboraHeaper
        |
        +--org.abora.gold.xpp.basic.Heaper
              |
              +--org.abora.gold.nkernel.FeKeyMaster

public class FeKeyMaster
extends Heaper

A KeyMaster provides the authority, or "holds the keys", for a client`s activities on the
BackEnd. A client can have any number of different KeyMasters, each with different
authority. FeServer_login (if successful) gives you back a KeyMaster with the authority of
a single Club (along with all the Clubs of which it is a member, directly or indirectly).
This will give you appropriate authority to do anything permitted to that Club. You can
incorporate the authority of other KeyMasters into it, so that it will additionally enable
you to do anything the other KeyMasters would have enabled.


Field Summary
protected  IDRegion myActualAuthority
           
protected  IDRegion myLoginAuthority
           
protected  PrimSet myRegisteredWorks
           
 
Fields inherited from class org.abora.gold.xpp.basic.Heaper
AllBlasts, BecomeMap, GarbageCount, InGC, InitializedClasses, InitializingClasses, LastMemory, NextClientRequestNumber, NotOneElementSignal, PackageTable, PromiseNameTable, StringHashSBoxes
 
Fields inherited from class org.abora.gold.java.AboraHeaper
ActiveClubs, CurrentAuthor, CurrentBertCanopyCache, CurrentBertCrum, CurrentChunk, CurrentGrandMap, CurrentKeyMaster, CurrentPacker, CurrentSensorCanopyCache, CurrentServer, CurrentSession, CurrentSessions, CurrentTrace, InitialEditClub, InitialOwner, InitialReadClub, InitialSponsor, InsideTransactionFlag
 
Constructor Summary
FeKeyMaster(IDRegion loginAuthority, IDRegion actualAuthority)
           
 
Method Summary
 IDRegion actualAuthority()
          Essential.
 int actualHashForEqual()
           
static void assertAdminAuthority()
          Blast if the CurrentKeyMaster doesn't have Admin authority.
static void assertSignatureAuthority()
          Blast if the CurrentKeyMaster doesn't have signature authority for the CurrentAuthor.
static void assertSponsorship()
          If there is a currentSponsor, then the CurrentKeyMaster must have authority for it.
 void authorityChanged()
          Notify all my dependents of a change in authority
 FeKeyMaster copy()
          Essential.
 boolean hasAuthority(ID clubID)
          Whether this KeyMaster is currently holding the authority of the given Club.
 boolean hasSignatureAuthority(ID club)
          Whether this KeyMaster has signature authority for the given Club
 void incorporate(FeKeyMaster other)
          Essential.
static void info()
          {IDRegion CLIENT} actualAuthority
{FeKeyMaster CLIENT} copy
{BooleanVar CLIENT} hasAuthority: clubID {ID}
{void CLIENT} incorporate: other {FeKeyMaster}
{IDRegion CLIENT} loginAuthority
{void CLIENT} removeLogins: oldLogins {IDRegion}
 boolean isEqual(java.lang.Object other)
           
 IDRegion loginAuthority()
          Essential.
static Heaper make(ID clubID)
          Make a KeyMaster initially logged in to the given Club
static Heaper make(IDRegion loginAuthority, IDRegion actualAuthority)
           
static FeKeyMaster makeAll(IDRegion clubIDs)
          Make a KeyMaster initially logged in to the given Clubs
static FeKeyMaster makePublic()
          Make a KeyMaster logged in to the Universal Public Club.
 Filter permissionsFilter()
          A filter for things which can be read by this KeyMaster
 void printOn(java.io.PrintWriter oo)
           
 void registerWork(FeWork work)
          Notify the Work whenever my authority changes
 void removeAuthority(IDRegion oldLogins)
           
 void removeLogins(IDRegion oldLogins)
          Essential.
 void unregisterWork(FeWork work)
          Notify the Work whenever my authority changes
 void updateAuthority()
          Recompute the actual authority of this KeyMaster based on the set of login Clubs
 
Methods inherited from class org.abora.gold.xpp.basic.Heaper
abstractDeclarationFor, abstractTypeFor, addMethodAttributeToInOf, addPackage, addPackageCategory, allClientProtocolOn, argumentTypesFor, arrow, blast, blast, BLAST, cachePromiseNameTable, cachePromiseNameTableIn, canYouBecome, cast, cleanPromiseClasses, cleanupGarbage, clientClassesDo, clientFunctionsOn, clientMethodsOn, clientProtocol, clientProtocolDo, clientProtocolOn, clientProtocolOn, collectibleClasses, compare, compileClientSubclasses, compileConstantPromiseMethods, compileCreateFromRcvr, compileEQ, compileGeneratedClassMethod, compileGeneratedMethod, compileHook, compilePromise, compilePromiseDefaultMethods, compilePromiseFluidDeclarations, compilePromiseHandlers, compilePromiseMethods, compileRequestCreateMsgInArguments, compileRequestEvaluateMsgInReturningArguments, compileRPCSpecialistEvaluateMsgForReturningArguments, compileSendSelfTo, compileSendSelfToSendHook, compileStubbleMethods, compileSubclassStubbleMethods, computeMangle, computePreorder, constantTypeValue, convert, convertCopyDeclarations, convertDeferredDeclarations, convertProxyDeclarations, convertSubclassCopyDeclarations, convertSubclassDeferredDeclarations, convertSubclassProxyDeclarations, copyReferencesToType, create, create, create, create, create, create, create, create, create, create, createRequestClassArguments, definesProxyMethods, delete, deref, destroy, destruct, destructor, enum, enumFlags, equals, exportName, fetchAttribute, fetchPackage, fetchSuperCategory, fileOutClientProtocol, findCategory, findSenderAndReceiverMethods, findTailInto, flushPromiseNameTable, foo, freezeClientClasses, freezeClientProtocol, freezeStProtocol, frozenClasses, garbageCollect, garbageCollectFrom, gcOpportunity, gcOpportunity, generatedCategory, generatePromiseNames, getCategory, getOrMakePackage, getSuperCategory, handlerSignaturesFrom, hash, hashForEqual, hasProxyMethods, info_clientClasses, info_clientSideClasses, info_promiseClasses, info_stProtocol, inGC, initializedClasses, initializingClasses, initPackages, initStringHashSBoxes, inspectPieces, instanceSize, IntegerVar, isByProxy, isConstructed, isDestructed, isEqual, isEqualOrSubclassOf, isGenerated, isIntType, isKindOf, isRawType, isUnlocked, linkTimeNonInherited, make, makeClassTable, makeFillTable, makeRequestTable, mangle, markChildren, markCount, markInstances, mayBecome, mayBecomeAnySubclassOf, new1, newX, nonCopyVariables, notWorking, pack, packageClasses, packagingCategory, parseExportName, passe, pointerToStaticMember, pointerToStaticMember, pointerToVirtualMember, preorderMax, preorderNumber, PROBLEM, problems, promiseClass, promiseDefaultValue, promiseName, promiseNameTable, promiseToAbstract, registerPackageCategory, removeGeneratedCode, removeStubbleMethods, removeSubclassGeneratedCode, removeSubclassStubbleMethods, requestProcedure, requestProceduresFrom, returnTypeFor, rootName, scheduleTermination, sendProxyTo, sendSelfTo, serverNameFor, setGC, signal, signals, smalltalkSelector, stClientProtocol, stubbleSelectorTokenReturnsArguments, subclassNonCopyVariables, takeOop, togglePromiseName, togglePromiseOfParse, unimplemented, unmangle, verifyFreeze, wipeStubble
 
Methods inherited from class org.abora.gold.java.AboraHeaper
asOop, basicInspect, displayString, error, hack, halt, inspect, knownBug, mightNotImplement, REQUIRES, shouldImplement, shouldNotImplement, stubbleForSubclassResponsibility, thingToDo, willNotImplement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

myLoginAuthority

protected IDRegion myLoginAuthority

myActualAuthority

protected IDRegion myActualAuthority

myRegisteredWorks

protected PrimSet myRegisteredWorks
Constructor Detail

FeKeyMaster

public FeKeyMaster(IDRegion loginAuthority,
                   IDRegion actualAuthority)
Method Detail

actualAuthority

public IDRegion actualAuthority()
Essential. The Clubs whose authority is actually being held right now. This may change
asynchronously when you or others change the membership lists of clubs. It is my
loginAuthority plus all clubs that list any of these clubs as members, transitively.


copy

public FeKeyMaster copy()
Essential. A different KeyMaster with the same login and actual authority as this one.


hasAuthority

public boolean hasAuthority(ID clubID)
Whether this KeyMaster is currently holding the authority of the given Club. Equivalent to
this->actualAuthority ()->hasMember (clubID)


incorporate

public void incorporate(FeKeyMaster other)
Essential. Add the other KeyMaster's login and actual authorities to my own respective
authorities.


loginAuthority

public IDRegion loginAuthority()
Essential. The Clubs whose authority was obtained directly, by logging in to them. They
are the ones from which all other authority is derived.


removeLogins

public void removeLogins(IDRegion oldLogins)
Essential. Remove the listed IDs from the set of Clubs whose login authority I exercise.
All authority derived from them that cannot be derived from the remaining login authority
will also disappear. Listed Clubs for which I do not hold login authority will be
silently ignored.


hasSignatureAuthority

public boolean hasSignatureAuthority(ID club)
Whether this KeyMaster has signature authority for the given Club


registerWork

public void registerWork(FeWork work)
Notify the Work whenever my authority changes


unregisterWork

public void unregisterWork(FeWork work)
Notify the Work whenever my authority changes


updateAuthority

public void updateAuthority()
Recompute the actual authority of this KeyMaster based on the set of login Clubs


authorityChanged

public void authorityChanged()
Notify all my dependents of a change in authority


printOn

public void printOn(java.io.PrintWriter oo)
Overrides:
printOn in class Heaper

permissionsFilter

public Filter permissionsFilter()
A filter for things which can be read by this KeyMaster


removeAuthority

public void removeAuthority(IDRegion oldLogins)

actualHashForEqual

public int actualHashForEqual()
Overrides:
actualHashForEqual in class Heaper

isEqual

public boolean isEqual(java.lang.Object other)

make

public static Heaper make(ID clubID)
Make a KeyMaster initially logged in to the given Club


makeAll

public static FeKeyMaster makeAll(IDRegion clubIDs)
Make a KeyMaster initially logged in to the given Clubs


makePublic

public static FeKeyMaster makePublic()
Make a KeyMaster logged in to the Universal Public Club.


make

public static Heaper make(IDRegion loginAuthority,
                          IDRegion actualAuthority)

info

public static void info()
{IDRegion CLIENT} actualAuthority
{FeKeyMaster CLIENT} copy
{BooleanVar CLIENT} hasAuthority: clubID {ID}
{void CLIENT} incorporate: other {FeKeyMaster}
{IDRegion CLIENT} loginAuthority
{void CLIENT} removeLogins: oldLogins {IDRegion}


assertAdminAuthority

public static void assertAdminAuthority()
Blast if the CurrentKeyMaster doesn't have Admin authority.


assertSignatureAuthority

public static void assertSignatureAuthority()
Blast if the CurrentKeyMaster doesn't have signature authority for the CurrentAuthor.


assertSponsorship

public static void assertSponsorship()
If there is a currentSponsor, then the CurrentKeyMaster must have authority for it.



Translation - Copyright © 2003 David G Jones. All Rights Reserved.
Original Udanax-Gold - Copyright © 1979-1999 Udanax.com. All rights reserved.