diff options
Diffstat (limited to 'compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/ECFEventHookImpl.java')
-rw-r--r-- | compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/ECFEventHookImpl.java | 150 |
1 files changed, 104 insertions, 46 deletions
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/ECFEventHookImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/ECFEventHookImpl.java index 2af80f3d2..e6125c66f 100644 --- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/ECFEventHookImpl.java +++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/ECFEventHookImpl.java @@ -1,12 +1,12 @@ /******************************************************************************* -* Copyright (c) 2009 EclipseSource 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: -* EclipseSource - initial API and implementation -******************************************************************************/ + * Copyright (c) 2009 EclipseSource 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: + * EclipseSource - initial API and implementation + ******************************************************************************/ package org.eclipse.ecf.internal.osgi.services.distribution; import java.util.ArrayList; @@ -32,26 +32,39 @@ public class ECFEventHookImpl extends AbstractEventHookImpl { } protected void registerRemoteService(ServiceReference serviceReference, - String[] remoteInterfaces, String [] remoteConfigurationType) { - if (remoteConfigurationType == null || remoteConfigurationType.length == 0) { - trace("registerRemoteService","remoteConfigurationType is null or empty so does not match ECF remote configuration type"); + String[] remoteInterfaces, String[] remoteConfigurationType) { + if (remoteConfigurationType == null + || remoteConfigurationType.length == 0) { + trace( + "registerRemoteService", + "remoteConfigurationType is null or empty so does not match ECF remote configuration type"); return; } - // If the first remote configuration type value is not for us, then we don't do anything with it - if (!remoteConfigurationType[0].equals(ServiceConstants.ECF_REMOTE_CONFIGURATION_TYPE)) { - trace("registerRemoteService","remoteConfigurationType not ECF type"); + // If the first remote configuration type value is not for us, then we + // don't do anything with it + if (!remoteConfigurationType[0] + .equals(ServiceConstants.ECF_REMOTE_CONFIGURATION_TYPE)) { + trace("registerRemoteService", + "remoteConfigurationType not ECF type"); return; } Map ecfConfiguration = parseECFConfigurationType(remoteConfigurationType); - // We get the list of ECF distribution providers (IRemoteServiceContainerAdapters) - IRemoteServiceContainerAdapter [] rscas = findRemoteServiceContainerAdapters(serviceReference,ecfConfiguration); - // If there are relevant ones then actually register a remote service with them. + // We get the list of ECF distribution providers + // (IRemoteServiceContainerAdapters) + IRemoteServiceContainerAdapter[] rscas = findRemoteServiceContainerAdapters( + serviceReference, ecfConfiguration); + // If there are relevant ones then actually register a remote service + // with them. if (rscas == null) { - trace("registerRemoteService","No remote service container adapters found for serviceReference="+serviceReference+" and configuration="+ecfConfiguration); + trace("registerRemoteService", + "No remote service container adapters found for serviceReference=" + + serviceReference + " and configuration=" + + ecfConfiguration); return; } - // Now actually register remote service with remote service container adapters - registerRemoteService(rscas,remoteInterfaces,serviceReference); + // Now actually register remote service with remote service container + // adapters + registerRemoteService(rscas, remoteInterfaces, serviceReference); } private Map parseECFConfigurationType(String[] remoteConfigurationType) { @@ -60,59 +73,104 @@ public class ECFEventHookImpl extends AbstractEventHookImpl { return results; } - protected void registerRemoteService(IRemoteServiceContainerAdapter[] rscas, String[] remoteInterfaces, ServiceReference sr) { - for(int i=0; i < rscas.length; i++) { - IRemoteServiceRegistration remoteRegistration = rscas[i].registerRemoteService(remoteInterfaces, getService(sr), createPropertiesForRemoteService(rscas[i],remoteInterfaces,sr)); - trace("registerRemoteService","REGISTERED REMOTE SERVICE serviceReference="+sr+" remoteRegistration="+remoteRegistration); - fireRemoteServiceRegistered(sr,remoteRegistration); + protected void registerRemoteService( + IRemoteServiceContainerAdapter[] rscas, String[] remoteInterfaces, + ServiceReference sr) { + for (int i = 0; i < rscas.length; i++) { + IRemoteServiceRegistration remoteRegistration = rscas[i] + .registerRemoteService(remoteInterfaces, getService(sr), + createPropertiesForRemoteService(rscas[i], + remoteInterfaces, sr)); + trace("registerRemoteService", + "REGISTERED REMOTE SERVICE serviceReference=" + sr + + " remoteRegistration=" + remoteRegistration); + fireRemoteServiceRegistered(sr, remoteRegistration); } } - + protected Dictionary createPropertiesForRemoteService( IRemoteServiceContainerAdapter iRemoteServiceContainerAdapter, String[] remotes, ServiceReference sr) { - String [] propKeys = sr.getPropertyKeys(); + String[] propKeys = sr.getPropertyKeys(); Properties newProps = new Properties(); - for(int i=0; i < propKeys.length; i++) { + for (int i = 0; i < propKeys.length; i++) { newProps.put(propKeys[i], sr.getProperty(propKeys[i])); } return newProps; } - protected IRemoteServiceContainerAdapter[] findRemoteServiceContainerAdapters(ServiceReference serviceReference, Map ecfConfiguration) { - IContainerManager containerManager = Activator.getDefault().getContainerManager(); - return (containerManager != null)?getRSCAsFromContainers(containerManager.getAllContainers(),serviceReference,ecfConfiguration):null; + protected IRemoteServiceContainerAdapter[] findRemoteServiceContainerAdapters( + ServiceReference serviceReference, Map ecfConfiguration) { + IContainerManager containerManager = Activator.getDefault() + .getContainerManager(); + return (containerManager != null) ? getRSCAsFromContainers( + containerManager.getAllContainers(), serviceReference, + ecfConfiguration) : null; } private IRemoteServiceContainerAdapter[] getRSCAsFromContainers( - IContainer[] containers, ServiceReference serviceReference, Map ecfConfiguration) { - if (containers == null) return null; + IContainer[] containers, ServiceReference serviceReference, + Map ecfConfiguration) { + if (containers == null) + return null; List rscas = new ArrayList(); - for(int i=0; i < containers.length; i++) { - IRemoteServiceContainerAdapter rsca = (IRemoteServiceContainerAdapter) containers[i].getAdapter(IRemoteServiceContainerAdapter.class); + for (int i = 0; i < containers.length; i++) { + IRemoteServiceContainerAdapter rsca = (IRemoteServiceContainerAdapter) containers[i] + .getAdapter(IRemoteServiceContainerAdapter.class); if (rsca == null) { - Trace.trace(Activator.PLUGIN_ID, DebugOptions.DEBUG, this.getClass(), "getRCSAsFromContainers", "Container="+containers[i]+" not an IRemoteServiceContainerAdapter. Excluding rsca="+rsca+" from remote registration"); + Trace + .trace( + Activator.PLUGIN_ID, + DebugOptions.DEBUG, + this.getClass(), + "getRCSAsFromContainers", + "Container=" + + containers[i] + + " not an IRemoteServiceContainerAdapter. Excluding rsca=" + + rsca + " from remote registration"); continue; - } else if (includeContainer(containers[i],rsca,serviceReference,ecfConfiguration)) rscas.add(rsca); + } else if (includeContainer(containers[i], rsca, serviceReference, + ecfConfiguration)) + rscas.add(rsca); } - return (IRemoteServiceContainerAdapter[]) rscas.toArray(new IRemoteServiceContainerAdapter[] {}); + return (IRemoteServiceContainerAdapter[]) rscas + .toArray(new IRemoteServiceContainerAdapter[] {}); } - - protected boolean includeContainer(IContainer container, IRemoteServiceContainerAdapter rsca, ServiceReference serviceReference, Map ecfConfiguration) { - Object cID = serviceReference.getProperty(org.eclipse.ecf.remoteservice.Constants.REMOTE_SERVICE_CONTAINER_ID); + + protected boolean includeContainer(IContainer container, + IRemoteServiceContainerAdapter rsca, + ServiceReference serviceReference, Map ecfConfiguration) { + Object cID = serviceReference + .getProperty(org.eclipse.ecf.remoteservice.Constants.REMOTE_SERVICE_CONTAINER_ID); if (cID == null || !(cID instanceof ID)) { - Trace.trace(Activator.PLUGIN_ID, DebugOptions.DEBUG, this.getClass(), "includeContainer", "serviceReference="+serviceReference+" does not set remote service container id service property. INCLUDING containerID="+container.getID()+" in remote registration"); + Trace + .trace( + Activator.PLUGIN_ID, + DebugOptions.DEBUG, + this.getClass(), + "includeContainer", + "serviceReference=" + + serviceReference + + " does not set remote service container id service property. INCLUDING containerID=" + + container.getID() + + " in remote registration"); return true; } ID containerID = (ID) cID; if (container.getID().equals(containerID)) { - Trace.trace(Activator.PLUGIN_ID, DebugOptions.DEBUG, this.getClass(), "includeContainer", "serviceReference="+serviceReference+" has MATCHING container id="+containerID+". INCLUDING rsca="+rsca+" in remote registration"); + Trace.trace(Activator.PLUGIN_ID, DebugOptions.DEBUG, this + .getClass(), "includeContainer", "serviceReference=" + + serviceReference + " has MATCHING container id=" + + containerID + ". INCLUDING rsca=" + rsca + + " in remote registration"); return true; } - Trace.trace(Activator.PLUGIN_ID, DebugOptions.DEBUG, this.getClass(), "includeContainer", "serviceReference="+serviceReference+" has non-matching container id="+containerID+". EXCLUDING rsca="+rsca+" in remote registration"); + Trace.trace(Activator.PLUGIN_ID, DebugOptions.DEBUG, this.getClass(), + "includeContainer", "serviceReference=" + serviceReference + + " has non-matching container id=" + containerID + + ". EXCLUDING rsca=" + rsca + + " in remote registration"); return false; } - - } |