/*******************************************************************************
 * 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.ide;
/*


 */

import org.eclipse.jem.internal.proxy.core.*;
/**
 * Number BeanType Proxy.
 */
public abstract class IDENumberBeanTypeProxy extends IDEBeanTypeProxy {
	protected final IDENumberBeanProxy zeroProxy;
/**
 * IDENumberBeanTypeProxy constructor comment.
 * @param aRegistry com.ibm.etools.vce.proxy.ProxyFactoryRegistry
 * @param aClass java.lang.Class
 */
protected IDENumberBeanTypeProxy(IDEProxyFactoryRegistry aRegistry, Class aClass, Number zeroNumber) {
	super(aRegistry, aClass);
	// Cache a zero proxy of this type (though the number will be Long).
	zeroProxy = new IDENumberBeanProxy(aRegistry, zeroNumber , this);
}
/**
 * Helper to create a bean proxy
 * Package protected because everyone should go through the factory API
 * that is defined as part of IBeanProxyFactory
 */
INumberBeanProxy createNumberBeanProxy(Number aNumber) {
	if (aNumber == null || zeroProxy.fBean.equals(aNumber))
		return zeroProxy;
	return new IDENumberBeanProxy(fProxyFactoryRegistry, aNumber, this);
}
/**
 * Specialized from IDEBeanTypeProxy to ensure INumberBeanProxies are created correctly.
 */
protected IIDEBeanProxy newBeanProxy(Object anObject){

	return (IIDEBeanProxy)createNumberBeanProxy((Number) anObject);

}
}
