Skip to content
Permalink
Browse files

[WFCORE-4416] Some capabilities requirements are not recorded in feat…

…ures generated by Galleon

The ReadFeatureDescriptionHandler is assuming that requestProperties variable is not empty to process the fixed requirements of the registrations capabilities

Jira issue: https://issues.jboss.org/browse/WFCORE-4416
  • Loading branch information
yersan committed Apr 12, 2019
1 parent 208356d commit dc8a482fe7cc1cff8de620bf6cda7c85106fe428
@@ -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);
}
}
}

0 comments on commit dc8a482

Please sign in to comment.
You can’t perform that action at this time.