private static void copyCapabilities(final Map<CapabilityId, RuntimeCapabilityRegistration> source, final Map<CapabilityId, RuntimeCapabilityRegistration> dest) { for (Map.Entry<CapabilityId, RuntimeCapabilityRegistration> entry : source.entrySet()) { dest.put(entry.getKey(), new RuntimeCapabilityRegistration(entry.getValue())); } }
if (candidate != null) { RegistrationPoint rp = new RegistrationPoint(registrationPoint, null); if (candidate.removeRegistrationPoint(rp)) { if (candidate.getRegistrationPointCount() == 0) { removed = capabilities.remove(capabilityId); removedRequirements = requirements.remove(capabilityId); removeReg = new RuntimeCapabilityRegistration(candidate.getCapability(), candidate.getCapabilityScope(), rp); pendingRemoveCapabilities.put(capabilityId, removeReg); } else { removeReg.addRegistrationPoint(rp);
writeLock.lock(); try { CapabilityId capabilityId = capabilityRegistration.getCapabilityId(); RegistrationPoint rp = capabilityRegistration.getOldestRegistrationPoint(); RuntimeCapabilityRegistration currentRegistration = capabilities.get(capabilityId); if (currentRegistration != null) { if (!Objects.equals(capabilityRegistration.getCapability(), currentRegistration.getCapability()) || !currentRegistration.getCapability().isAllowMultipleRegistrations() || !currentRegistration.addRegistrationPoint(rp)) { throw ControllerLogger.MGMT_OP_LOGGER.capabilityAlreadyRegisteredInContext(capabilityId.getName(), rp, capabilityId.getScope().getName(), currentRegistration.getRegistrationPoints()); for (String req : capabilityRegistration.getCapability().getRequirements()) { registerRequirement(new RuntimeRequirementRegistration(req, capabilityId.getName(), capabilityId.getScope(), rp));
void removeCapability(String capabilityName, Step step) { assert isControllingThread(); assertStageModel(currentStage); ensureLocalCapabilityRegistry(); CapabilityScope context = createCapabilityContext(step.address); RuntimeCapabilityRegistration capReg = managementModel.getCapabilityRegistry().removeCapability(capabilityName, context, step.address); if (capReg != null) { RuntimeCapability capability = capReg.getCapability(); for (String required : capability.getRequirements()) { removeRequirement(required, context, step); } removedCapabilities.put(capReg.getCapabilityId(), step); } }
@Override public ServiceName getCapabilityServiceName(String capabilityName, CapabilityScope scope, Class<?> serviceType) { // Here we can't know the dependent name. So this can only be called when resolution is complete. assert resolutionContext.resolutionComplete; readLock.lock(); try { RuntimeCapabilityRegistration reg = getCapabilityRegistration(capabilityName, scope); RuntimeCapability<?> cap = reg.getCapability(); return cap.getCapabilityServiceName(serviceType); } finally { readLock.unlock(); } }
void removeCapability(String capabilityName, Step step) { assert isControllingThread(); assertStageModel(currentStage); ensureLocalCapabilityRegistry(); CapabilityScope context = createCapabilityContext(step.address); RuntimeCapabilityRegistration capReg = managementModel.getCapabilityRegistry().removeCapability(capabilityName, context, step.address); if (capReg != null) { RuntimeCapability capability = capReg.getCapability(); for (String required : capability.getRequirements()) { removeRequirement(required, context, step); } removedCapabilities.put(capReg.getCapabilityId(), step); } }
@Override public ServiceName getCapabilityServiceName(String capabilityName, CapabilityScope scope, Class<?> serviceType) { // Here we can't know the dependent name. So this can only be called when resolution is complete. assert resolutionContext.resolutionComplete; readLock.lock(); try { RuntimeCapabilityRegistration reg = getCapabilityRegistration(capabilityName, scope); RuntimeCapability<?> cap = reg.getCapability(); return cap.getCapabilityServiceName(serviceType); } finally { readLock.unlock(); } }
private static void copyCapabilities(final Map<CapabilityId, RuntimeCapabilityRegistration> source, final Map<CapabilityId, RuntimeCapabilityRegistration> dest) { for (Map.Entry<CapabilityId, RuntimeCapabilityRegistration> entry : source.entrySet()) { dest.put(entry.getKey(), new RuntimeCapabilityRegistration(entry.getValue())); } }
if (candidate != null) { RegistrationPoint rp = new RegistrationPoint(registrationPoint, null); if (candidate.removeRegistrationPoint(rp)) { if (candidate.getRegistrationPointCount() == 0) { removed = capabilities.remove(capabilityId); removedRequirements = requirements.remove(capabilityId); removeReg = new RuntimeCapabilityRegistration(candidate.getCapability(), candidate.getCapabilityScope(), rp); pendingRemoveCapabilities.put(capabilityId, removeReg); } else { removeReg.addRegistrationPoint(rp);
writeLock.lock(); try { CapabilityId capabilityId = capabilityRegistration.getCapabilityId(); RegistrationPoint rp = capabilityRegistration.getOldestRegistrationPoint(); RuntimeCapabilityRegistration currentRegistration = capabilities.get(capabilityId); if (currentRegistration != null) { if (!Objects.equals(capabilityRegistration.getCapability(), currentRegistration.getCapability()) || !currentRegistration.getCapability().isAllowMultipleRegistrations() || !currentRegistration.addRegistrationPoint(rp)) { throw ControllerLogger.MGMT_OP_LOGGER.capabilityAlreadyRegisteredInContext(capabilityId.getName(), rp, capabilityId.getScope().getName(), currentRegistration.getRegistrationPoints()); for (String req : capabilityRegistration.getCapability().getRequirements()) { registerRequirement(new RuntimeRequirementRegistration(req, capabilityId.getName(), capabilityId.getScope(), rp));
@Override public <T> T getCapabilityRuntimeAPI(String capabilityName, CapabilityScope scope, Class<T> apiType) { // Here we can't know the dependent name. So this can only be called when resolution is complete. assert resolutionContext.resolutionComplete; readLock.lock(); try { RuntimeCapabilityRegistration reg = getCapabilityRegistration(capabilityName, scope); Object api = reg.getCapability().getRuntimeAPI(); if (api == null) { throw ControllerLogger.MGMT_OP_LOGGER.capabilityDoesNotExposeRuntimeAPI(capabilityName); } return apiType.cast(api); } finally { readLock.unlock(); } }
private RuntimeCapabilityRegistration createCapabilityRegistration(RuntimeCapability capability, Step step, String attribute) { CapabilityScope context = createCapabilityContext(step.address); RegistrationPoint rp = new RegistrationPoint(step.address, attribute); return new RuntimeCapabilityRegistration(capability, context, rp); }
@Override public <T> T getCapabilityRuntimeAPI(String capabilityName, CapabilityScope scope, Class<T> apiType) { // Here we can't know the dependent name. So this can only be called when resolution is complete. assert resolutionContext.resolutionComplete; readLock.lock(); try { RuntimeCapabilityRegistration reg = getCapabilityRegistration(capabilityName, scope); Object api = reg.getCapability().getRuntimeAPI(); if (api == null) { throw ControllerLogger.MGMT_OP_LOGGER.capabilityDoesNotExposeRuntimeAPI(capabilityName); } return apiType.cast(api); } finally { readLock.unlock(); } }
private RuntimeCapabilityRegistration createCapabilityRegistration(RuntimeCapability capability, Step step, String attribute) { CapabilityScope context = createCapabilityContext(step.address); RegistrationPoint rp = new RegistrationPoint(step.address, attribute); return new RuntimeCapabilityRegistration(capability, context, rp); }
/** * Simple utility method to register a {@link org.jboss.as.controller.capability.RuntimeCapability} with the * specified {@link org.jboss.as.controller.capability.RuntimeCapability#getRuntimeAPI() runtime API} * for each of the given capability names. They will be registered against {@link CapabilityScope#GLOBAL} * and with the root resource and no specific attribute as their {@link org.jboss.as.controller.capability.registry.RegistrationPoint}. * * @param capabilityRegistry registry to use * @param capabilities map of names of capabilities to their runtime API implementation. */ public static void registerCapabilities(RuntimeCapabilityRegistry capabilityRegistry, final Map<String, Object> capabilities) { for (Map.Entry<String, Object> entry : capabilities.entrySet()) { final String capabilityName = entry.getKey(); RuntimeCapability<?> capability = createCapability(capabilityName, entry.getValue()); capabilityRegistry.registerCapability(new RuntimeCapabilityRegistration(capability, CapabilityScope.GLOBAL, new RegistrationPoint(PathAddress.EMPTY_ADDRESS, null))); } }
/** * Simple utility method to register a {@link org.jboss.as.controller.capability.RuntimeCapability} with the * specified {@link org.jboss.as.controller.capability.RuntimeCapability#getRuntimeAPI() runtime API} * for each of the given capability names. They will be registered against {@link CapabilityScope#GLOBAL} * and with the root resource and no specific attribute as their {@link org.jboss.as.controller.capability.registry.RegistrationPoint}. * * @param capabilityRegistry registry to use * @param capabilities map of names of capabilities to their runtime API implementation. */ public static void registerCapabilities(RuntimeCapabilityRegistry capabilityRegistry, final Map<String, Object> capabilities) { for (Map.Entry<String, Object> entry : capabilities.entrySet()) { final String capabilityName = entry.getKey(); RuntimeCapability<?> capability = createCapability(capabilityName, entry.getValue()); capabilityRegistry.registerCapability(new RuntimeCapabilityRegistration(capability, CapabilityScope.GLOBAL, new RegistrationPoint(PathAddress.EMPTY_ADDRESS, null))); } }
/** * Simple utility method to register a {@link org.jboss.as.controller.capability.RuntimeCapability} with the * specified service type for each of the given capability names. They will be registered against * {@link CapabilityScope#GLOBAL} * and with the root resource and no specific attribute as their {@link org.jboss.as.controller.capability.registry.RegistrationPoint}. * * @param capabilityRegistry registry to use * @param capabilities map of names of capabilities to the type exposed by the MSC service the capability installs */ public static void registerServiceCapabilities(RuntimeCapabilityRegistry capabilityRegistry, final Map<String, Class> capabilities) { for (Map.Entry<String, Class> entry : capabilities.entrySet()) { final String capabilityName = entry.getKey(); RuntimeCapability<?> capability = RuntimeCapability.Builder.of(capabilityName, entry.getValue()).build(); capabilityRegistry.registerCapability(new RuntimeCapabilityRegistration(capability, CapabilityScope.GLOBAL, new RegistrationPoint(PathAddress.EMPTY_ADDRESS, null))); } }
/** * Simple utility method to register a {@link org.jboss.as.controller.capability.RuntimeCapability} with the * specified service type for each of the given capability names. They will be registered against * {@link CapabilityScope#GLOBAL} * and with the root resource and no specific attribute as their {@link org.jboss.as.controller.capability.registry.RegistrationPoint}. * * @param capabilityRegistry registry to use * @param capabilities map of names of capabilities to the type exposed by the MSC service the capability installs */ public static void registerServiceCapabilities(RuntimeCapabilityRegistry capabilityRegistry, final Map<String, Class> capabilities) { for (Map.Entry<String, Class> entry : capabilities.entrySet()) { final String capabilityName = entry.getKey(); RuntimeCapability<?> capability = RuntimeCapability.Builder.of(capabilityName, entry.getValue()).build(); capabilityRegistry.registerCapability(new RuntimeCapabilityRegistration(capability, CapabilityScope.GLOBAL, new RegistrationPoint(PathAddress.EMPTY_ADDRESS, null))); } }
/** * Simple utility method to register a * {@link org.jboss.as.controller.capability.RuntimeCapability RuntimeCapability<?>} for each of the given * capability. They will be registered against {@link CapabilityScope#GLOBAL} and with the root resource and no * specific attribute as their {@link org.jboss.as.controller.capability.registry.RegistrationPoint}. * * @param capabilityRegistry registry to use * @param capabilities the capabilities. */ public static void registerCapabilities(RuntimeCapabilityRegistry capabilityRegistry, RuntimeCapability<?>... capabilities) { for (final RuntimeCapability<?> capability : capabilities) { capabilityRegistry.registerCapability(new RuntimeCapabilityRegistration(capability, CapabilityScope.GLOBAL, new RegistrationPoint(PathAddress.EMPTY_ADDRESS, null))); } }
/** * Simple utility method to register a * {@link org.jboss.as.controller.capability.RuntimeCapability RuntimeCapability<?>} for each of the given * capability. They will be registered against {@link CapabilityScope#GLOBAL} and with the root resource and no * specific attribute as their {@link org.jboss.as.controller.capability.registry.RegistrationPoint}. * * @param capabilityRegistry registry to use * @param capabilities the capabilities. */ public static void registerCapabilities(RuntimeCapabilityRegistry capabilityRegistry, RuntimeCapability<?>... capabilities) { for (final RuntimeCapability<?> capability : capabilities) { capabilityRegistry.registerCapability(new RuntimeCapabilityRegistration(capability, CapabilityScope.GLOBAL, new RegistrationPoint(PathAddress.EMPTY_ADDRESS, null))); } }