package gr.upatras.ece.nam.fstoolkit; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IViewPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; import gr.upatras.ece.nam.fstoolkit.views.FSDLView.OfferedServicesView; import gr.upatras.ece.nam.fstoolkit.views.FSDLView.RunningScenariosView; import gr.upatras.ece.nam.fstoolkit.views.FSDLView.ScenariosView; import brokermodel.BrokermodelPackage; import brokermodel.Broker; import brokermodel.extensionInterfaces.IBrokerRepository; import brokermodel.extensionInterfaces.IBrokerRepositoryListener; import brokermodel.federationscenarios.RequestedFederationScenario; import brokermodel.uiObjects.BrokerManager; import brokermodel.uiObjects.UiObjectsFactory; //import org.apache.log4j.Logger; /** * The activator class controls the plug-in life cycle */ public class Activator extends AbstractUIPlugin { //private transient final Logger log = Logger.getLogger(Activator.class); private transient final Log log = LogFactory.getLog(Activator.class); // The plug-in ID public static final String PLUGIN_ID = "gr.upatras.ece.nam.fstoolkit"; //$NON-NLS-1$ // The shared instance private static Activator plugin; //The Broker manager private BrokerManager BrokerManager; protected IBrokerRepositoryListener BrokerRepositoryListener ; /** * The constructor */ public Activator() { } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { super.start(context); plugin = this; CreateTaxonomyModel(); } public void ReloadModelsAndViews(){ CreateTaxonomyModel(); // //find view org.panlab.software.fstoolkit.views.OfferedServicesView and then initializeOfferedServicesDomain() IViewPart view_part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(OfferedServicesView.ID); if (view_part!=null){ ( (OfferedServicesView)view_part).initializeOfferedServicesDomain(); } view_part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ScenariosView.ID); if (view_part!=null){ ( (ScenariosView)view_part).initializeScenariosDomain(); } view_part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(RunningScenariosView.ID); if (view_part!=null){ ( (RunningScenariosView)view_part).initializeRunningResourcesDomain(); } } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { plugin = null; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static Activator getDefault() { return plugin; } /** * Returns an image descriptor for the image file at the given * plug-in relative path * * @param path the path * @return the image descriptor */ public static ImageDescriptor getImageDescriptor(String path) { return imageDescriptorFromPlugin(PLUGIN_ID, path); } // This is the ID from our extension point private static final String IBrokerREPOSITORY_ID = "gr.upatras.ece.nam.fstoolkit.extensionpoint.brokerrepository"; public void CreateTaxonomyModel(){ log.info("============CreateTaxonomyModel================"); // Initialize the model BrokermodelPackage.eINSTANCE.eClass(); BrokerManager = UiObjectsFactory.eINSTANCE.createBrokerManager(); runBrokerReposityExtension(); // BasicEMap<String,Object> BrokerImportURIMap = new BasicEMap<String, Object>(); // // Obtain a new resource set ResourceSet resSet = new ResourceSetImpl(); // // Get the resource // Resource resource = resSet.getResource(URI.createURI("http://localhost:8081/org.panlab.software.ws.repos.m2m/repo/panlab.Broker"), true); // Resource resource = resSet.getResource( URI.createFileURI("C:\\Users\\ctranoris\\Desktop\\panlab.Broker" ), true); // Resource resource = resSet.getResource(URI.createURI("platform:/resource/myProject/src/another.federationBroker"), true); // Broker of = (Broker) resource.getContents().get(0); // of.setResourceURI( resource.getURI().toString() ); // BrokerManager.getBrokersRef().add( (Broker) resource.getContents().get(0) ); // // resource = resSet.getResource(URI.createURI("platform:/resource/myProject/src/Amazon.Brokerdl"), true); // BrokerRule = (BrokerRule) resource.getContents().get(0); // BrokerRule.getTestbedBrokerv().setResourceURI( resource.getURI().toString() ); // BrokerManager.getBrokersRef().add( BrokerRule.getTestbedBrokerv() ); // // Resource resource = resSet.getResource(URI.createURI("platform:/resource/org.panlab.software.fstoolkit.scenarios.p2nerLargeScale/scenarios/small.Brokerdl"), true); // BrokerRule BrokerRule = (BrokerRule) resource.getContents().get(0); // BrokerRule.getTestbedBrokerv().setResourceURI( resource.getURI().toString() ); // BrokerManager.getBrokersRef().add( BrokerRule.getTestbedBrokerv() ); } private void runBrokerReposityExtension() { IConfigurationElement[] config = Platform.getExtensionRegistry() .getConfigurationElementsFor(IBrokerREPOSITORY_ID); try { for (IConfigurationElement e : config) { log.info("Evaluating extension "+IBrokerREPOSITORY_ID); final Object o = e.createExecutableExtension("class"); if (o instanceof IBrokerRepository) { ISafeRunnable runnable = new ISafeRunnable() { @Override public void handleException(Throwable exception) { log.info("Exception in client"); } @Override public void run() throws Exception { List<Broker> Brokers = ((IBrokerRepository) o).loadBrokers( ); registerRepositoryListener((IBrokerRepository) o); for (Iterator iterator = Brokers.iterator(); iterator.hasNext();) { Broker Broker = (Broker) iterator.next(); if (Broker!=null) BrokerManager.getBrokersRef().add( Broker ); } } }; SafeRunner.run(runnable); } } } catch (CoreException ex) { log.info(ex.getMessage()); } } protected void registerRepositoryListener(IBrokerRepository o) { if (BrokerRepositoryListener==null){ BrokerRepositoryListener = new BrokerRepositoryListener(); o.registerBrokerRepositoryListener(BrokerRepositoryListener ); } } /** * Returns the shared BrokerManager instance * * @return the shared BrokerManager instance */ public BrokerManager getBrokerManager() { return BrokerManager; } public void LoadScenarioFromBroker(final RequestedFederationScenario fedScenario) { final Broker tempof = (Broker)fedScenario.eContainer(); if (fedScenario.getInfrastructureRequest() !=null){ return;//it is already loaded } //log.info("Container = "+fedScenario.eContainer()); //PanlabServices.getInstance().LoadFSbyVCT(fedScenario); //ask now all plugins if they can load it IConfigurationElement[] config = Platform.getExtensionRegistry() .getConfigurationElementsFor(IBrokerREPOSITORY_ID); try { for (IConfigurationElement e : config) { log.info("Evaluating extension "+IBrokerREPOSITORY_ID); final Object o = e.createExecutableExtension("class"); if (o instanceof IBrokerRepository) { ISafeRunnable runnable = new ISafeRunnable() { @Override public void handleException(Throwable exception) { log.info("Exception in client"); } @Override public void run() throws Exception { List<Broker> Brokers = ((IBrokerRepository) o).getBrokers( ); for (Iterator iterator = Brokers.iterator(); iterator .hasNext();) { Broker Broker = (Broker) iterator.next(); if (Broker!=null) if (Broker.getName().equalsIgnoreCase( tempof.getName() ) ) //don;t compare objects..they may not be the same. for example the Broker can be an BrokerProxy and the other one an BrokerImpl ((IBrokerRepository) o).LoadScenario(fedScenario); } } }; SafeRunner.run(runnable); } } } catch (CoreException ex) { log.info(ex.getMessage()); } } }