blob: c8baf18e1c71e51a24bcee02da31bc33492153e1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jem.internal.proxy.remote;
/*
* $RCSfile: REMAnAbstractBeanTypeProxy.java,v $
* $Revision: 1.3 $ $Date: 2005/08/24 20:39:06 $
*/
import org.eclipse.jem.internal.proxy.core.*;
/**
* This is a proxy for an abstract bean type. I.e. you can't create a new instance of it.
* It can be used as a general abstract type. It will pass newBeanTypeForClass unto
* the main super type passed in.
*/
public class REMAnAbstractBeanTypeProxy extends REMAbstractBeanTypeProxy {
protected IREMSpecialBeanTypeProxy fMainSuperType; // The type that this was created from so that
// any non-abstract subclasses can create the correct
// type of beantype proxy.
public REMAnAbstractBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType, IREMSpecialBeanTypeProxy aType) {
super(aRegistry, anID, aClassname, aSuperType);
fMainSuperType = aType;
}
/**
* Create a new bean proxy with the specified id.
*
* For all of the abstract types, this is an invalid operation.
*/
public IREMBeanProxy newBeanProxy(Integer anID) {
throw new UnsupportedOperationException();
}
/**
* Note: Since new instances of abstract classes can never be done,
* this function is not supported.
*/
public IBeanProxy newInstance() {
throw new UnsupportedOperationException();
}
/**
* newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
* This is used by beantype proxy factory when creating a beantype proxy for a subclass.
* This is because subclasses, unless explicitly overridden, should use the same kind
* of beantype proxy. This way if anything special is needed for a specific type, then
* that can be done.
*/
public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
return fMainSuperType.newBeanTypeForClass(anID, aClassname, anAbstract, this);
}
/**
* release - BeanType is about to be released.
* Clear the fMainSupertype (supertype is cleared so that
* it won't hold onto it and will let the supertype be GC'd
* if necessary.
*/
public void release() {
fMainSuperType = null;
super.release();
}
}