@@ -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);
}
}
}