/*******************************************************************************
* Copyright (c) 2016 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.windup.ui;
import org.jboss.tools.foundation.ui.ext.AbstractUiExtensionFactory;
import org.osgi.framework.Bundle;
import com.google.inject.ConfigurationException;
import com.google.inject.Injector;
import com.google.inject.Provider;
/**
* Windup e4 extension factory.
*/
public class WindupExtensionFactory extends AbstractUiExtensionFactory {
protected Bundle getBundle() {
return WindupUIPlugin.getDefault().getBundle();
}
@Override
protected Object getInstance() throws Exception {
Injector injector = WindupUIPlugin.getDefault().getInjector();
Class<?> type = getBundle().loadClass(data);
try {
injector.getBinding(type);
return injector.getInstance(type);
} catch (ConfigurationException e) {
try {
Provider<?> provider = injector.getProvider(type);
return provider.get();
} catch (ConfigurationException e2) {
}
}
return super.getInstance();
}
}