Mercurial > hg > blitz_condensed
view src/org/dancres/blitz/remote/ConstrainableTxnParticipantProxy.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line source
package org.dancres.blitz.remote; import java.io.IOException; import java.io.ObjectInputStream; import java.io.InvalidObjectException; import net.jini.id.Uuid; import net.jini.core.transaction.server.TransactionParticipant; import net.jini.core.constraint.RemoteMethodControl; import net.jini.core.constraint.MethodConstraints; import net.jini.security.proxytrust.ProxyTrustIterator; import net.jini.security.proxytrust.SingletonProxyTrustIterator; /** When the remote stub generated by the exporter implements RemoteMethodControl, Blitz exports this proxy for participant duties to support appropriate constraints etc. */ public final class ConstrainableTxnParticipantProxy extends TxnParticipantProxy implements RemoteMethodControl { private static TransactionParticipant constrainStub(TransactionParticipant aServer, MethodConstraints aConstraints) { RemoteMethodControl myServer = (RemoteMethodControl) aServer; myServer.setConstraints(aConstraints); return (TransactionParticipant) myServer; } private final MethodConstraints theConstraints; ConstrainableTxnParticipantProxy(TransactionParticipant aPart, Uuid aUuid) { super(aPart, aUuid); theConstraints = null; } private ConstrainableTxnParticipantProxy(TransactionParticipant aPart, Uuid aUuid, MethodConstraints aConstraints) { super(constrainStub(aPart, aConstraints), aUuid); theConstraints = aConstraints; } private ProxyTrustIterator getProxyTrustIterator() { return new SingletonProxyTrustIterator(theStub); } public RemoteMethodControl setConstraints(MethodConstraints aConstraints) { return new ConstrainableTxnParticipantProxy(theStub, theUuid, aConstraints); } public MethodConstraints getConstraints() { return theConstraints; } private void readObject(ObjectInputStream anOIS) throws IOException, ClassNotFoundException { anOIS.defaultReadObject(); if(! (theStub instanceof RemoteMethodControl) ) { throw new InvalidObjectException("space does not implement RemoteMethodControl"); } } }