private RuntimeRequirementRegistration removeRequirement(RuntimeRequirementRegistration requirementRegistration, boolean optional) { assert writeLock.isHeldByCurrentThread(); Map<CapabilityId, Map<String, RuntimeRequirementRegistration>> requirementMap = optional ? runtimeOnlyRequirements : requirements; Map<String, RuntimeRequirementRegistration> dependents = requirementMap.get(requirementRegistration.getDependentId()); RuntimeRequirementRegistration result = null; if (dependents != null) { RuntimeRequirementRegistration rrr = dependents.get(requirementRegistration.getRequiredName()); if (rrr != null) { rrr.removeRegistrationPoint(requirementRegistration.getOldestRegistrationPoint()); if (rrr.getRegistrationPointCount() == 0) { result = dependents.remove(requirementRegistration.getRequiredName()); } if (dependents.size() == 0) { requirementMap.remove(requirementRegistration.getDependentId()); } modified = true; } } return result; }
private RuntimeRequirementRegistration removeRequirement(RuntimeRequirementRegistration requirementRegistration, boolean optional) { assert writeLock.isHeldByCurrentThread(); Map<CapabilityId, Map<String, RuntimeRequirementRegistration>> requirementMap = optional ? runtimeOnlyRequirements : requirements; Map<String, RuntimeRequirementRegistration> dependents = requirementMap.get(requirementRegistration.getDependentId()); RuntimeRequirementRegistration result = null; if (dependents != null) { RuntimeRequirementRegistration rrr = dependents.get(requirementRegistration.getRequiredName()); if (rrr != null) { rrr.removeRegistrationPoint(requirementRegistration.getOldestRegistrationPoint()); if (rrr.getRegistrationPointCount() == 0) { result = dependents.remove(requirementRegistration.getRequiredName()); } if (dependents.size() == 0) { requirementMap.remove(requirementRegistration.getDependentId()); } modified = true; } } return result; }