blob: a9a0b81141137ec8897a994ed0ad34c9ad8ff5a3 [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.beaninfo.adapters;
import org.eclipse.jem.internal.proxy.core.*;
/**
* This holds the proxy constants for access in beaninfo. It is created on a per-registry basis and stored in the constants section of the registry so
* that they can be accessed as needed.
* <p>
* To gain access to these constants, use the static accessor method "getConstants()" so that the instance is not created until actually needed.
*
* @since 1.0.0
*/
public final class BeaninfoProxyConstants {
private static final Object REGISTRY_KEY = new Object();
private final IMethodProxy introspectProxy;
private final IMethodProxy getBeanInfoSearchPathProxy;
private final IMethodProxy setBeanInfoSearchPathProxy;
private final IMethodProxy sendBeanInfoProxy;
/**
* Get the constants instance for the specified registry.
*/
public static BeaninfoProxyConstants getConstants(ProxyFactoryRegistry registry) {
if (registry != null && registry.isValid()) {
BeaninfoProxyConstants constants = (BeaninfoProxyConstants) registry.getConstants(REGISTRY_KEY);
if (constants == null)
registry.registerConstants(REGISTRY_KEY, constants = new BeaninfoProxyConstants(registry));
return constants;
} else
return null;
}
private BeaninfoProxyConstants(ProxyFactoryRegistry registry) {
IStandardBeanTypeProxyFactory typeFactory = registry.getBeanTypeProxyFactory();
IBeanTypeProxy introspector = typeFactory.getBeanTypeProxy("java.beans.Introspector"); //$NON-NLS-1$
getBeanInfoSearchPathProxy = introspector.getMethodProxy("getBeanInfoSearchPath"); //$NON-NLS-1$
setBeanInfoSearchPathProxy = introspector.getMethodProxy("setBeanInfoSearchPath", "[Ljava.lang.String;"); //$NON-NLS-1$ //$NON-NLS-2$
IBeanTypeProxy modelingBeaninfo = typeFactory.getBeanTypeProxy("org.eclipse.jem.internal.beaninfo.vm.ModelingBeanInfo");//$NON-NLS-1$
introspectProxy = modelingBeaninfo.getMethodProxy("introspect", new String[] { "java.lang.Class", "boolean", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
sendBeanInfoProxy = modelingBeaninfo.getMethodProxy("send"); //$NON-NLS-1$
}
/**
* Get the sendBeanDecorator method proxy from ModelingBeanInfo.
* @return
*
* @since 1.1.0
*/
public IMethodProxy getSendBeanInfoProxy() {
return sendBeanInfoProxy;
}
/**
* Get the getBeanInfoSearchPath method proxy from Introspector.
* @return
*
* @since 1.0.0
*/
public IMethodProxy getGetBeanInfoSearchPathProxy() {
return getBeanInfoSearchPathProxy;
}
/**
* Get the setBeanInfoSearchPath method proxy from Introspector.
* @return
*
* @since 1.0.0
*/
public IMethodProxy getSetBeanInfoSearchPathProxy() {
return setBeanInfoSearchPathProxy;
}
/**
* Get the introspect method proxy from ModelingBeanInfo.
* @return
*
* @since 1.1.0
*/
public IMethodProxy getIntrospectProxy() {
return introspectProxy;
}
}