hammant 02/03/30 00:55:46 Modified: altrmi/src/java/org/apache/commons/altrmi/client/impl BaseServedObject.java altrmi/src/java/org/apache/commons/altrmi/common GarbageCollectionRequest.java altrmi/src/java/org/apache/commons/altrmi/server MethodInvocationHandler.java altrmi/src/java/org/apache/commons/altrmi/server/impl DefaultMethodInvocationHandler.java altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters InvocationHandlerAdapter.java PublicationAdapter.java Log: DGC processed by MethodInvocationHandler now. Revision Changes Path 1.17 +2 -2 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/BaseServedObject.java Index: BaseServedObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/BaseServedObject.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- BaseServedObject.java 30 Mar 2002 08:32:10 -0000 1.16 +++ BaseServedObject.java 30 Mar 2002 08:55:45 -0000 1.17 @@ -34,7 +34,7 @@ * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> * @author Vinay Chandrasekharan <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.16 $ + * @version $Revision: 1.17 $ */ public final class BaseServedObject { @@ -350,7 +350,7 @@ protected void finalize() throws Throwable { synchronized(mAltrmiFactory) { - GarbageCollectionReply gcr = (GarbageCollectionReply) mInvocationHandler.handleInvocation(new GarbageCollectionRequest(mReferenceID)); + GarbageCollectionReply gcr = (GarbageCollectionReply) mInvocationHandler.handleInvocation(new GarbageCollectionRequest(mPublishedServiceName, mObjectName, mSession, mReferenceID)); //System.out.println("BO finalizing"); } super.finalize(); 1.2 +26 -3 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/GarbageCollectionRequest.java Index: GarbageCollectionRequest.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/GarbageCollectionRequest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- GarbageCollectionRequest.java 30 Mar 2002 08:03:49 -0000 1.1 +++ GarbageCollectionRequest.java 30 Mar 2002 08:55:45 -0000 1.2 @@ -20,21 +20,30 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ -public final class GarbageCollectionRequest extends AltrmiRequest implements Sessionable { +public final class GarbageCollectionRequest extends PublishedNameRequest implements Sessionable { private Long mSession; + private Long mReferenceID; /** * Constructor GarbageCollectionRequest * * + * @param publishedServiceName + * @param objectName * @param session + * @param referenceID * */ - public GarbageCollectionRequest(Long session) { + public GarbageCollectionRequest(String publishedServiceName, String objectName, Long session, + Long referenceID) { + + super(publishedServiceName, objectName); + mSession = session; + mReferenceID = referenceID; } /** @@ -67,6 +76,17 @@ } /** + * Method getReferenceID + * + * + * @return + * + */ + public Long getReferenceID() { + return mReferenceID; + } + + /** * The object implements the writeExternal method to save its contents * by calling the methods of DataOutput for its primitive values or * calling the writeObject method of ObjectOutput for objects, strings, @@ -82,8 +102,10 @@ * @exception IOException Includes any I/O exceptions that may occur */ public void writeExternal(ObjectOutput out) throws IOException { + super.writeExternal(out); out.writeObject(mSession); + out.writeObject(mReferenceID); } /** @@ -103,5 +125,6 @@ super.readExternal(in); mSession = (Long) in.readObject(); + mReferenceID = (Long) in.readObject(); } } 1.2 +16 -5 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/MethodInvocationHandler.java Index: MethodInvocationHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/MethodInvocationHandler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MethodInvocationHandler.java 29 Jan 2002 10:05:00 -0000 1.1 +++ MethodInvocationHandler.java 30 Mar 2002 08:55:45 -0000 1.2 @@ -1,3 +1,4 @@ + /* * Copyright (C) The Apache Software Foundation. All rights reserved. * @@ -7,14 +8,17 @@ */ package org.apache.commons.altrmi.server; + + import org.apache.commons.altrmi.common.AltrmiInvocationHandler; + /** * Class MethodInvocationHandler * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public interface MethodInvocationHandler extends AltrmiInvocationHandler { @@ -26,7 +30,7 @@ * @param beanImpl * */ - void addImplementationBean(Long referenceID, Object beanImpl); + void addImplementationBean(Long referenceID, Object beanImpl); /** * Method replaceImplementationBean @@ -36,7 +40,7 @@ * @param withImplBean * */ - void replaceImplementationBean(Object implBean, Object withImplBean); + void replaceImplementationBean(Object implBean, Object withImplBean); /** * Method getOrMakeReferenceIDForBean @@ -45,8 +49,15 @@ * @param implBean * */ - Long getOrMakeReferenceIDForBean(Object implBean); - + Long getOrMakeReferenceIDForBean(Object implBean); + /** + * Method garbageCollectionRequest + * + * + * @param sessionID + * @param refereinceID + * + */ + void garbageCollectionRequest(Long sessionID, Long refereinceID); } - 1.6 +5 -1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/DefaultMethodInvocationHandler.java Index: DefaultMethodInvocationHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/DefaultMethodInvocationHandler.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DefaultMethodInvocationHandler.java 22 Mar 2002 22:51:37 -0000 1.5 +++ DefaultMethodInvocationHandler.java 30 Mar 2002 08:55:45 -0000 1.6 @@ -39,7 +39,7 @@ * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> * @author Vinay Chandrasekharan <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class DefaultMethodInvocationHandler implements MethodInvocationHandler { @@ -198,6 +198,10 @@ new AltrmiInvocationException( "Some ServerSide exception problem :" + t.getMessage())); } + } + + public void garbageCollectionRequest(Long sessionID, Long refereinceID) { + //TODO } private void correctArgs(MethodRequest mr, Object[] args) { 1.6 +25 -10 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters/InvocationHandlerAdapter.java Index: InvocationHandlerAdapter.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters/InvocationHandlerAdapter.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- InvocationHandlerAdapter.java 30 Mar 2002 08:32:10 -0000 1.5 +++ InvocationHandlerAdapter.java 30 Mar 2002 08:55:45 -0000 1.6 @@ -33,6 +33,7 @@ import org.apache.commons.altrmi.common.ListReply; import org.apache.commons.altrmi.common.MethodFacadeArrayReply; import org.apache.commons.altrmi.common.GarbageCollectionReply; +import org.apache.commons.altrmi.common.GarbageCollectionRequest; import org.apache.commons.altrmi.server.AltrmiServer; import org.apache.commons.altrmi.server.MethodInvocationHandler; import org.apache.commons.altrmi.server.ClassRetrievalException; @@ -43,7 +44,6 @@ import org.apache.commons.altrmi.server.impl.AbstractServer; import java.util.Vector; -import java.util.HashMap; import java.util.Iterator; @@ -52,7 +52,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class InvocationHandlerAdapter extends PublicationAdapter implements AltrmiInvocationHandler { @@ -128,9 +128,9 @@ new AltrmiInvocationException("TODO - you dirty rat/hacker")); } - MethodInvocationHandler mih = + MethodInvocationHandler methodInvocationHandler = (MethodInvocationHandler) mPublishedObjects.get(publishedThing); - AltrmiReply ar = mih.handleInvocation(mFacReq); + AltrmiReply ar = methodInvocationHandler.handleInvocation(mFacReq); if (ar.getReplyCode() == AltrmiReply.EXCEPTIONREPLY) { return ar; @@ -148,11 +148,11 @@ Object beanImpl = replyObject; - MethodInvocationHandler asih2 = + MethodInvocationHandler methodInvocationHandler2 = (MethodInvocationHandler) mPublishedObjects.get( mFacReq.getPublishedServiceName() + "_" + mFacReq.getBaseReturnClassNameEncoded()); - if (asih2 == null) { + if (methodInvocationHandler2 == null) { return new NotPublishedReply(); } @@ -162,7 +162,7 @@ } //TODO a decent ref number for main? - Long newRef = asih2.getOrMakeReferenceIDForBean(beanImpl); + Long newRef = methodInvocationHandler2.getOrMakeReferenceIDForBean(beanImpl); //long newRef2 = asih2.getOrMakeReferenceIDForBean(beanImpl); return new MethodFacadeReply(newRef); @@ -171,11 +171,11 @@ Long[] refs = new Long[beanImpls.length]; for (int i = 0; i < beanImpls.length; i++) { Object impl = beanImpls[i]; - MethodInvocationHandler asih2 = + MethodInvocationHandler methodInvocationHandler2 = (MethodInvocationHandler) mPublishedObjects.get( mFacReq.getPublishedServiceName() + "_" + mFacReq.getBaseReturnClassNameEncoded()); - if (asih2 == null) { + if (methodInvocationHandler2 == null) { return new NotPublishedReply(); } @@ -188,13 +188,28 @@ if (beanImpls[i] == null) { refs[i] = null; } else { - refs[i] = asih2.getOrMakeReferenceIDForBean(beanImpls[i]); + refs[i] = methodInvocationHandler2.getOrMakeReferenceIDForBean(beanImpls[i]); } } return new MethodFacadeArrayReply(refs); } } else if (request.getRequestCode() == AltrmiRequest.GCREQUEST) { + GarbageCollectionRequest gcr = (GarbageCollectionRequest) request; + String publishedThing = gcr.getPublishedServiceName() + "_" + gcr.getObjectName(); + + if (!mPublishedObjects.containsKey(publishedThing)) { + return new NotPublishedReply(); + } + + if (!sessionExists(gcr.getSession())) { + return new ExceptionReply( + new AltrmiInvocationException("TODO - you dirty rat/hacker")); + } + + MethodInvocationHandler methodInvocationHandler = + (MethodInvocationHandler) mPublishedObjects.get(publishedThing); + methodInvocationHandler.garbageCollectionRequest(gcr.getSession(), gcr.getReferenceID()); return new GarbageCollectionReply(); } else if (request.getRequestCode() == AltrmiRequest.LOOKUPREQUEST) { LookupRequest lr = (LookupRequest) request; 1.5 +3 -3 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters/PublicationAdapter.java Index: PublicationAdapter.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters/PublicationAdapter.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PublicationAdapter.java 26 Mar 2002 11:24:06 -0000 1.4 +++ PublicationAdapter.java 30 Mar 2002 08:55:45 -0000 1.5 @@ -28,7 +28,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public class PublicationAdapter extends AbstractMethodHandler implements AltrmiPublisher { @@ -105,7 +105,7 @@ Method methods[] = additionalFacades[x].getMethods(); String encodedClassName = encodeClassName(additionalFacades[x].getName()); HashMap methodMap = new HashMap(); - MethodInvocationHandler asih = new DefaultMethodInvocationHandler(this, + MethodInvocationHandler methodInvocationHandler = new DefaultMethodInvocationHandler(this, asName + "_" + encodedClassName, methodMap); for (int y = 0; y < methods.length; y++) { @@ -117,7 +117,7 @@ } } - mPublishedObjects.put(asName + "_" + encodedClassName, asih); + mPublishedObjects.put(asName + "_" + encodedClassName, methodInvocationHandler); } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>