|
|
@@ -736,10 +736,10 @@ private void addRequiredCapabilities(ModelNode feature, |
|
|
final ImmutableManagementResourceRegistration registration, |
|
|
ModelNode requestProperties, CapabilityScope scope, boolean isProfile, |
|
|
Set<String> capabilities, Map<String, String> featureParamMappings) { |
|
|
final Map<String, ModelNode> required = new TreeMap<>(); |
|
|
if (requestProperties.isDefined()) { |
|
|
List<Property> request = requestProperties.asPropertyList(); |
|
|
if (!request.isEmpty()) { |
|
|
Map<String, ModelNode> required = new TreeMap<>(); |
|
|
boolean filteredOut = false; |
|
|
for (String cap : capabilities) { |
|
|
if (cap.startsWith("org.wildfly.domain.server-config.")) { |
|
|
@@ -784,51 +784,52 @@ private void addRequiredCapabilities(ModelNode feature, |
|
|
} |
|
|
} |
|
|
}} |
|
|
Set<CapabilityReferenceRecorder> resourceRequirements = registration.getRequirements(); |
|
|
if (!resourceRequirements.isEmpty()) { |
|
|
PathAddress aliasAddress = createAliasPathAddress(registration, registration.getPathAddress()); |
|
|
for (CapabilityReferenceRecorder requirement : resourceRequirements) { |
|
|
String[] segments = requirement.getRequirementPatternSegments(null, aliasAddress); |
|
|
String[] dynamicElements; |
|
|
if (segments == null || segments.length == 0) { |
|
|
dynamicElements = null; |
|
|
} else { |
|
|
dynamicElements = new String[segments.length]; |
|
|
for (int i = 0; i < segments.length; i++) { |
|
|
dynamicElements[i] = "$" + segments[i]; |
|
|
} |
|
|
} |
|
|
String baseRequirementName; |
|
|
if (isProfile) { |
|
|
baseRequirementName = PROFILE_PREFIX + requirement.getBaseRequirementName(); |
|
|
} else { |
|
|
baseRequirementName = requirement.getBaseRequirementName(); |
|
|
} |
|
|
ModelNode capability = new ModelNode(); |
|
|
if (dynamicElements == null) { |
|
|
capability.get(NAME).set(baseRequirementName); |
|
|
} else { |
|
|
capability.get(NAME).set(RuntimeCapability.buildDynamicCapabilityName(baseRequirementName, dynamicElements)); |
|
|
} |
|
|
required.put(capability.get(NAME).asString(), capability); |
|
|
} |
|
|
} |
|
|
|
|
|
Set<CapabilityReferenceRecorder> resourceRequirements = registration.getRequirements(); |
|
|
if (!resourceRequirements.isEmpty()) { |
|
|
PathAddress aliasAddress = createAliasPathAddress(registration, registration.getPathAddress()); |
|
|
for (CapabilityReferenceRecorder requirement : resourceRequirements) { |
|
|
String[] segments = requirement.getRequirementPatternSegments(null, aliasAddress); |
|
|
String[] dynamicElements; |
|
|
if (segments == null || segments.length == 0) { |
|
|
dynamicElements = null; |
|
|
} else { |
|
|
dynamicElements = new String[segments.length]; |
|
|
for (int i = 0; i < segments.length; i++) { |
|
|
dynamicElements[i] = "$" + segments[i]; |
|
|
} |
|
|
} |
|
|
// WFLY-4164 record the fixed requirements of the registration's capabilities |
|
|
for (RuntimeCapability<?> regCap : registration.getCapabilities()) { |
|
|
for (String capReq : regCap.getRequirements()) { |
|
|
if (!required.containsKey(capReq)) { |
|
|
ModelNode capability = new ModelNode(); |
|
|
capability.get(NAME).set(capReq); |
|
|
required.put(capReq, capability); |
|
|
} |
|
|
} |
|
|
String baseRequirementName; |
|
|
if (isProfile) { |
|
|
baseRequirementName = PROFILE_PREFIX + requirement.getBaseRequirementName(); |
|
|
} else { |
|
|
baseRequirementName = requirement.getBaseRequirementName(); |
|
|
} |
|
|
if (!required.isEmpty()) { |
|
|
ModelNode requiresList = feature.get(REQUIRES); |
|
|
for (ModelNode req : required.values()) { |
|
|
requiresList.add(req); |
|
|
} |
|
|
ModelNode capability = new ModelNode(); |
|
|
if (dynamicElements == null) { |
|
|
capability.get(NAME).set(baseRequirementName); |
|
|
} else { |
|
|
capability.get(NAME).set(RuntimeCapability.buildDynamicCapabilityName(baseRequirementName, dynamicElements)); |
|
|
} |
|
|
required.put(capability.get(NAME).asString(), capability); |
|
|
} |
|
|
} |
|
|
// WFLY-4164 record the fixed requirements of the registration's capabilities |
|
|
for (RuntimeCapability<?> regCap : registration.getCapabilities()) { |
|
|
for (String capReq : regCap.getRequirements()) { |
|
|
if (!required.containsKey(capReq)) { |
|
|
ModelNode capability = new ModelNode(); |
|
|
capability.get(NAME).set(capReq); |
|
|
required.put(capReq, capability); |
|
|
} |
|
|
} |
|
|
} |
|
|
if (!required.isEmpty()) { |
|
|
ModelNode requiresList = feature.get(REQUIRES); |
|
|
for (ModelNode req : required.values()) { |
|
|
requiresList.add(req); |
|
|
} |
|
|
} |
|
|
} |
|
|
|