@Override public List<DependencyDescriptor> getDependencies() { if(myLifecycleProvider == null){ return null; } return myLifecycleProvider.getDependencyDescriptors(); }
@Override public Properties getRegistrationProperties() { Properties props = myLifecycleProvider.getRegistrationProperties(); Properties allProps = new Properties(); if(props != null){ allProps.putAll(props); } if(myRegistrationProperties != null){ allProps.putAll(myRegistrationProperties); } if(myUniqueProperties != null){ allProps.putAll(myUniqueProperties); } return allProps; }
@Override public String[] getServiceClassNames() { return myLifecycleProvider.getServiceClassNames(); }
private void stopLifecycle() { if(myLifecycleProvider == null){ return; } myLifecycleProvider.stop(); if(myLifecycleListener != null){ myLifecycleProvider.removePropertyChangeListener( myLifecycleListener); myLifecycleListener = null; } }
private void handleAllDependencies(Map<String,Object> requiredServices){ if(!ServiceLifecycleProvider.Validator.validateServices( myLifecycleProvider.getDependencyDescriptors(), requiredServices)){ throw new IllegalArgumentException( "Invalid dependency set for service."); } myLifecycleProvider.start(requiredServices); myService = myLifecycleProvider.getService(); if(myService == null){ getLogger().warn("The lifecycle failed to create a service."); }else{ getLogger().info( "Service created of type(s): {}", Arrays.toString( myLifecycleProvider.getServiceClassNames())); register(); } myLifecycleListener.flush(); }
myLifecycleProvider = lifecycle; List<DependencyDescriptor> descriptors = myLifecycleProvider.getDependencyDescriptors(); myRegistrationClassNames = myLifecycleProvider.getServiceClassNames(); myRegistrationProperties = registrationProps; myUniqueProperties = uniqueProps;
private void handleChanged(String id, Object newDependency){ if(id == null){ throw new NullPointerException(); }else if(!validate(id, newDependency)){ throw new IllegalArgumentException("Invalid id or dependency. " + "id: " + id + ", dependency: " + newDependency); } myLifecycleProvider.dependencyChanged(id, newDependency, myDependenciesTracker.getAvailableDependencies()); checkForModification(); myLifecycleListener.flush(); }
@Override public void run() { if(mySelfRegistrationEnabledFlag){ registerSelf(); } if(myLifecycleListener == null && myLifecycleProvider != null){ myLifecycleListener = new LifecycleDependencyListener(); myLifecycleProvider.addPropertyChangeListener(myLifecycleListener); } __start(); }}); }
private void checkForModification(){ T service = myLifecycleProvider.getService(); if(myService == null && service == null){ return; } if(service == null && myService != null){ getLogger().info("Required Service change stopped this service. " + "Service is being unregistered."); unregister(); myService = null; }else if(service != null && myService == null){ getLogger().info( "Required Service change has started this service."); if(myServiceRegistration != null){ unregister(); } myService = service; register(); }else if(service != myService){ getLogger().info( "Required Service change has changed this service."); ServiceRegistration oldReg = myServiceRegistration; myService = service; register(); if(oldReg != null){ oldReg.unregister(); } } }
private boolean validate(String id, Object req){ List<DependencyDescriptor> reqs = myLifecycleProvider.getDependencyDescriptors(); return (req == null && Validator.validateServiceId(reqs, id)) || Validator.validateService(reqs, id, req); }