blob: 0659d1ef9cad22caa1fa89eb68c996f12261861f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2004 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.core;
/*
* $RCSfile: Init.java,v $
* $Revision: 1.3 $ $Date: 2005/02/15 22:44:20 $
*/
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.jem.internal.beaninfo.adapters.BeaninfoAdapterFactory;
import org.eclipse.jem.internal.java.beaninfo.IIntrospectionAdapter;
import org.eclipse.jem.internal.proxy.core.ProxyFactoryRegistry;
/**
* Static initializer class to initialize the beaninfo stuff.
* It is disconnected from the desktop and so doesn't require it.
*/
public class Init {
// So it can't be instantiated.
private Init() {
};
/**
* Initialize the context with an IBeaninfoSupplier, used to set up the
* introspection process.
*
* The beaninfo supplier is responsible for setting up the bean info search path,
* including removing the sun beaninfos, if desired.
*/
public static void initialize(ResourceSet rset, final IBeaninfoSupplier supplier) {
rset.getAdapterFactories().add(new BeaninfoAdapterFactory(supplier));
}
/**
* Initialize the registry now that it is available.
*/
public static void initialize(ProxyFactoryRegistry registry) {
// Remove the "sun.beans.info" from the beaninfo search path because
// we completely override the sun bean infos.
Utilities.removeBeanInfoPath(registry, "sun.beans.infos"); //$NON-NLS-1$
}
/**
* Cleanup from the context because we are being removed.
* If clearResults is true, then the factory should clear the results of introspection
* from the everything because the context will still be around.
*/
public static void cleanup(ResourceSet rset, boolean clearResults) {
BeaninfoAdapterFactory factory =
(BeaninfoAdapterFactory) EcoreUtil.getAdapterFactory(rset.getAdapterFactories(), IIntrospectionAdapter.ADAPTER_KEY);
rset.getAdapterFactories().remove(factory);
if (factory != null)
factory.closeAll(clearResults);
}
}