Skip to content
Permalink
Browse files

Merge pull request #3739 from yersan/bugs/WFCORE-4416

[WFCORE-4416] Some capabilities requirements are not recorded in features generated by Galleon
  • Loading branch information
bstansberry committed Apr 14, 2019
2 parents 766fdeb + dc8a482 commit d5b6367b5df3c79aa82aba0795535aed0ba44c90
@@ -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 d5b6367

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