@SuppressWarnings( "unchecked" ) ServiceReference locateService( Application anApplication ) { if( layerName != null ) { Module module = anApplication.findModule( layerName, moduleName ); return module.findServices( serviceType ) .filter( ref -> ref.identity().toString().equals( serviceId ) ) .findFirst().orElse( null ); } return null; } }
protected Stream<ServiceReference<Object>> getServiceReferences( final InjectionContext context ) { if( serviceQualifier == null ) { return context.module().instance().findServices( serviceType ); } else { return context.module().instance().findServices( serviceType ).filter( serviceQualifier ); } } }
public boolean isAvailable() { Class<?> mainType = serviceDescriptor.types().findFirst().orElse( null ); ServiceReference<?> first = module.findServices( mainType ) .filter( withId( serviceDescriptor.identity().toString() ) ) .findFirst().orElse( null ); return first != null && first.isAvailable(); }
public boolean isActive() { Class<?> mainType = serviceDescriptor.types().findFirst().orElse( null ); ServiceReference<?> first = module.findServices( mainType ) .filter( withId( serviceDescriptor.identity().toString() ) ) .findFirst().orElse( null ); return first != null && first.isActive(); }
public boolean isActive() { Class<?> mainType = serviceDescriptor.types().findFirst().orElse( null ); ServiceReference<?> first = module.findServices( mainType ) .filter( withId( serviceDescriptor.identity().toString() ) ) .findFirst().orElse( null ); return first != null && first.isActive(); }
public boolean isAvailable() { Class<?> mainType = serviceDescriptor.types().findFirst().orElse( null ); ServiceReference<?> first = module.findServices( mainType ) .filter( withId( serviceDescriptor.identity().toString() ) ) .findFirst().orElse( null ); return first != null && first.isAvailable(); }
public String restart() { ServiceReference<?> serviceRef = module.findServices( serviceDescriptor.types() .findFirst().orElse( null ) ) .filter( withId( serviceDescriptor.identity().toString() ) ) .findFirst().orElse( null ); if( serviceRef != null ) { try { ( (Activation) serviceRef ).passivate(); ( (Activation) serviceRef ).activate(); return "Restarted service"; } catch( Exception e ) { return "Could not restart service:" + e.getMessage(); } } else { return "Could not find service"; } } }
protected ServiceReference<Object> getServiceReference( InjectionContext context ) { try { if( serviceQualifier == null ) { return context.module().instance().findService( serviceType ); } else { return context.module().instance().findServices( serviceType ) .filter( serviceQualifier ).findFirst().orElse( null ); } } catch( NoSuchServiceTypeException e ) { return null; } }
public String restart() { ServiceReference<?> serviceRef = module.findServices( serviceDescriptor.types() .findFirst().orElse( null ) ) .filter( withId( serviceDescriptor.identity().toString() ) ) .findFirst().orElse( null ); if( serviceRef != null ) { try { ( (Activation) serviceRef ).passivate(); ( (Activation) serviceRef ).activate(); return "Restarted service"; } catch( Exception e ) { return "Could not restart service:" + e.getMessage(); } } else { return "Could not find service"; } } }
@Override public void registerServices() throws Exception { BundleContext context = descriptor.metaInfo( BundleContext.class ); if( context == null ) { return; } module.findServices( descriptor.types().findFirst().orElse( null ) ).forEach( ref -> { if( ref.identity().equals( identity().get() ) ) { Stream<? extends Type> classesSet = descriptor.types(); Dictionary properties = descriptor.metaInfo( Dictionary.class ); String[] clazzes = fetchInterfacesImplemented( classesSet ); registration = context.registerService( clazzes, ref.get(), properties ); } } ); }
return module.findServices( Deserializer.class ) .filter( ref ->
return module.findServices( Deserializer.class ) .filter( ref ->
@Test public void servicesPluralDeclaration() throws ActivationException, AssemblyException { Module module = new SingletonAssembler() { @Override public void assemble( ModuleAssembly module ) throws AssemblyException { module.services( SomeOtherFoo.class, BasicFoo.class ); } }.module(); assertEquals( 1, module.findServices( SomeOtherFoo.class ).count() ); assertEquals( 2, module.findServices( BasicFoo.class ).count() ); assertEquals( 2, module.findServices( Foo.class ).count() ); assertEquals( CATHEDRAL, module.findService( SomeOtherFoo.class ).get().bar() ); // Exact type match first even if it is assembled _after_ an assignable, the assignable comes after Iterator<ServiceReference<BasicFoo>> basicFoos = module.findServices( BasicFoo.class ).iterator(); assertEquals( BAZAR, basicFoos.next().get().bar() ); assertEquals( CATHEDRAL, basicFoos.next().get().bar() ); assertFalse( basicFoos.hasNext() ); // No exact type match, all assembled are assignable, follows assembly Type order Iterator<ServiceReference<Foo>> foos = module.findServices( Foo.class ).iterator(); assertEquals( CATHEDRAL, foos.next().get().bar() ); assertEquals( BAZAR, foos.next().get().bar() ); assertFalse( foos.hasNext() ); }
assembly.module().findServices( DataAccess.class ).forEach( service -> assembly.module().findServices( DataAccess.class ).forEach( service ->
@Test public void givenSuccessPassivationWhenPassivatingExpectNoExceptions() throws Throwable { SingletonAssembler assembly = new SingletonAssembler() { public void assemble( ModuleAssembly module ) throws AssemblyException { module.addServices( DataAccessService.class ).withActivators( PassivationSuccessActivator.class ); module.addServices( DataAccessService.class ).withActivators( PassivationSuccessActivator.class ); } }; assembly.module().findServices( DataAccess.class ).forEach( service -> { assertTrue( "Service should not be Active before accessed", !service.isActive() ); assertTrue( service.get().data().activated ); assertTrue( "Service should be Active after access.", service.isActive() ); } ); assembly.application().passivate(); }
@Test(expected = PassivationException.class) public void givenMultipleFailingPassivationWhenPassivatingExpectPassivationExceptionToBubbleUp() throws Exception { SingletonAssembler assembly = new SingletonAssembler() { public void assemble( ModuleAssembly module ) throws AssemblyException { module.addServices( DataAccessService.class ).withActivators( PassivationFailureActivator.class ); module.addServices( DataAccessService.class ).withActivators( PassivationFailureActivator.class ); } }; assembly.module().findServices( DataAccess.class ).forEach( service -> { assertTrue( "Service should not be Active before accessed", !service.isActive() ); assertTrue( service.get().data().activated ); assertTrue( "Service should be Active after access.", service.isActive() ); } ); assembly.application().passivate(); }