[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [ecf-dev] How to register a custom RegistrySharedObject Implementation
 | 
Hi All,
In my previous note I provide an implementation of createContainer/4.   
I believe I left out one necessary line...see // it's necessary... below
On 11/26/2018 10:48 AM, Scott Lewis wrote:
<stuff deleted>
This method can then be overridden something like this:
protected IContainer createContainer(ServiceReference serviceReference,
            Map<String, Object> properties,
            ContainerTypeDescription containerTypeDescription, 
String[] intents)
            throws SelectContainerException {
         // call superclass to create container instance
         IContainer container = 
super.createContainer(serviceReference, properties, 
containerTypeDescription, intents);
           // it's necessary to call getAdapter, so that the 
RegistrySharedObject gets added to the just-created container.
        container
                .getAdapter(IRemoteServiceContainerAdapter.class);
final ID adapterID = 
IDFactory.getDefault().createStringID(IRemoteServiceContainerAdapter.class.getName());
final ISharedObjectManager manager = container.getSharedObjectManager();
// Remove any existing registry shared object
         manager.removeSharedObject(adapterID);
         // add yours
         ISharedObject  so = new P4RegistrySharedObject(); // <- 
Custom RegistrySharedObject
         manager.addSharedObject(adapterID, so, null);
         // and return container
         return container;
}
Does this make sense?
Scott
Thanks!
Bye Peter
The callstack for the initialization:
Thread [main] (Suspended)
                owns: RemoteServiceContainerAdapterFactory (id=358)
                owns: AuthHostContainerSelector  (id=82)
RemoteServiceContainerAdapterFactory.createAdapter(ISharedObjectContainer, 
Class, ID) line: 25
RemoteServiceContainerAdapterFactory(AbstractSharedObjectContainerAdapterFactory).getSharedObjectAdapter(ISharedObjectContainer, 
Class) line: 93
RemoteServiceContainerAdapterFactory(AbstractSharedObjectContainerAdapterFactory).getContainerAdapter(IContainer, 
Class) line: 51
RemoteServiceContainerAdapterFactory(AbstractContainerAdapterFactory).getAdapter(Object, 
Class) line: 32
                AdapterManager.getAdapter(Object, String, boolean) 
line: 333
                AdapterManager.loadAdapter(Object, String) line: 366
TCPServerSOContainer(SOContainer).getAdapter(Class) line: 298
AuthHostContainerSelector(AbstractContainerSelector).hasRemoteServiceContainerAdapter(IContainer) 
line: 70
AuthHostContainerSelector(AbstractHostContainerSelector).selectExistingHostContainers(ServiceReference, 
Map<String,Object>, String[], String[], String[]) line: 121
AuthHostContainerSelector(HostContainerSelector).selectHostContainers(ServiceReference, 
Map<String,Object>, String[], String[], String[]) line: 69
AuthHostContainerSelector.selectHostContainers(ServiceReference, 
Map<String,Object>, String[], String[], String[]) line: 37
                RemoteServiceAdmin$1.run() line: 300
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not 
available [native method]
RemoteServiceAdmin.exportService(ServiceReference<?>, Map<String,?>) 
line: 298
TopologyManagerImpl(AbstractTopologyManager).handleServiceRegistering(ServiceReference) 
line: 466
TopologyManagerImpl(AbstractTopologyManager).handleEvent(ServiceEvent, 
Map) line: 425
                TopologyManagerImpl.handleEvent(ServiceEvent, Map) 
line: 69
BasicTopologyManager(TopologyManager).event(ServiceEvent, Map) line: 246
                ServiceRegistry$6.call(Object, 
ServiceRegistration<?>) line: 1238
ServiceRegistry.notifyHookPrivileged(BundleContextImpl, 
ServiceRegistrationImpl<?>, HookContext) line: 1280
ServiceRegistry.notifyHooksPrivileged(HookContext) line: 1263
ServiceRegistry.notifyEventListenerHooksPrivileged(ServiceEvent, 
Map<BundleContext,Collection<ListenerInfo>>) line: 1235
ServiceRegistry.publishServiceEventPrivileged(ServiceEvent) line: 841
ServiceRegistry.publishServiceEvent(ServiceEvent) line: 801
ServiceRegistrationImpl<S>.register(Dictionary<String,?>) line: 127
ServiceRegistry.registerService(BundleContextImpl, String[], Object, 
Dictionary<String,?>) line: 225
                BundleContextImpl.registerService(String[], Object, 
Dictionary<String,?>) line: 464
InstanceProcess.registerService(ServiceComponentProp, boolean, 
ComponentInstanceImpl) line: 536
                InstanceProcess.buildComponents(Vector, boolean) 
line: 260
                Resolver.getEligible(ServiceEvent) line: 343
                SCRManager.serviceChanged(ServiceEvent) line: 222
FilteredServiceListener.serviceChanged(ServiceEvent) line: 109
                BundleContextImpl.dispatchEvent(Object, Object, int, 
Object) line: 914
EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, 
int, E) line: 230
ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148
ServiceRegistry.publishServiceEventPrivileged(ServiceEvent) line: 862
ServiceRegistry.publishServiceEvent(ServiceEvent) line: 801
ServiceRegistrationImpl<S>.register(Dictionary<String,?>) line: 127
ServiceRegistry.registerService(BundleContextImpl, String[], Object, 
Dictionary<String,?>) line: 225
                BundleContextImpl.registerService(String[], Object, 
Dictionary<String,?>) line: 464
                BundleContextImpl.registerService(String, Object, 
Dictionary<String,?>) line: 482
BundleContextImpl.registerService(Class<S>, S, Dictionary<String,?>) 
line: 998
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or 
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/ecf-dev
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or 
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/ecf-dev