Skip to content

Commit

Permalink
[WFLY-8083] WebMigrateOperation shouldn't analyze the add ops until a…
Browse files Browse the repository at this point in the history
…ll are processed
  • Loading branch information
bstansberry committed Feb 12, 2017
1 parent 88c4fa3 commit a34cc72
Showing 1 changed file with 34 additions and 13 deletions.
47 changes: 34 additions & 13 deletions legacy/web/src/main/java/org/jboss/as/web/WebMigrateOperation.java
Expand Up @@ -58,6 +58,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -622,6 +623,7 @@ private Map<PathAddress, ModelNode> migrateSubsystems(OperationContext context,
}

private void transformResources(final OperationContext context, final ModelNode legacyModelDescription, final Map<PathAddress, ModelNode> newAddOperations, List<String> warnings, boolean domainMode) throws OperationFailedException {
Set<String> hosts = new LinkedHashSet<>();
for (ModelNode legacyAddOp : legacyModelDescription.get(RESULT).asList()) {
final ModelNode newAddOp = legacyAddOp.clone();
PathAddress address = pathAddress(newAddOp.get(ADDRESS));
Expand All @@ -640,7 +642,9 @@ private void transformResources(final OperationContext context, final ModelNode
} else if (wildcardEquals(address, pathAddress(WebExtension.SUBSYSTEM_PATH, WebExtension.CONNECTOR_PATH, WebExtension.SSL_PATH))) {
// ignore, handled as part of connector migration
} else if (wildcardEquals(address, pathAddress(WebExtension.SUBSYSTEM_PATH, WebExtension.HOST_PATH))) {
migrateVirtualHost(newAddOperations, newAddOp, address);
String host = address.getLastElement().getValue();
hosts.add(host);
migrateVirtualHost(newAddOperations, newAddOp, host);
} else if (wildcardEquals(address, pathAddress(WebExtension.SUBSYSTEM_PATH, WebExtension.VALVE_PATH))) {
migrateValves(newAddOperations, newAddOp, address, warnings);
} else if (wildcardEquals(address, pathAddress(WebExtension.SUBSYSTEM_PATH, WebExtension.HOST_PATH, WebExtension.ACCESS_LOG_PATH))) {
Expand All @@ -653,6 +657,9 @@ private void transformResources(final OperationContext context, final ModelNode
warnings.add(WebLogger.ROOT_LOGGER.couldNotMigrateResource(legacyAddOp));
}
}
if (!hosts.isEmpty()) {
migrateVirtualHostChildren(newAddOperations, hosts);
}
newAddOperations.remove(VALVE_ACCESS_LOG_ADDRESS);
}

Expand Down Expand Up @@ -772,8 +779,8 @@ private boolean wildcardEquals(PathAddress a1, PathAddress a2) {
return true;
}

private void migrateVirtualHost(Map<PathAddress, ModelNode> newAddOperations, ModelNode newAddOp, PathAddress address) {
PathAddress newAddress = pathAddress(UndertowExtension.SUBSYSTEM_PATH, DEFAULT_SERVER_PATH, pathElement(Constants.HOST, address.getLastElement().getValue()));
private void migrateVirtualHost(Map<PathAddress, ModelNode> newAddOperations, ModelNode newAddOp, String host) {
PathAddress newAddress = pathAddress(UndertowExtension.SUBSYSTEM_PATH, DEFAULT_SERVER_PATH, pathElement(Constants.HOST, host));
ModelNode add = createAddOperation(newAddress);

if (newAddOp.hasDefined(WebVirtualHostDefinition.ENABLE_WELCOME_ROOT.getName()) && newAddOp.get(WebVirtualHostDefinition.ENABLE_WELCOME_ROOT.getName()).asBoolean()) {
Expand All @@ -786,6 +793,10 @@ private void migrateVirtualHost(Map<PathAddress, ModelNode> newAddOperations, Mo
add.get(Constants.DEFAULT_WEB_MODULE).set(newAddOp.get(WebVirtualHostDefinition.DEFAULT_WEB_MODULE.getName()));

newAddOperations.put(newAddress, add);
}

private void migrateVirtualHostChildren(Map<PathAddress, ModelNode> newAddOperations, Set<String> hosts) {

final PathAddress customFilterAddresses = pathAddress(UndertowExtension.SUBSYSTEM_PATH, PATH_FILTERS, pathElement(CustomFilterDefinition.INSTANCE.getPathElement().getKey()));
final PathAddress expressionFilterAddresses = pathAddress(UndertowExtension.SUBSYSTEM_PATH, PATH_FILTERS, pathElement(ExpressionFilterDefinition.INSTANCE.getPathElement().getKey()));
List<PathAddress> filterAddresses = new ArrayList<>();
Expand All @@ -794,16 +805,26 @@ private void migrateVirtualHost(Map<PathAddress, ModelNode> newAddOperations, Mo
filterAddresses.add(a);
}
}
for (PathAddress filterAddress : filterAddresses) {
PathAddress filterRefAddress = pathAddress(newAddress, pathElement(Constants.FILTER_REF, filterAddress.getLastElement().getValue()));
ModelNode filterRefAdd = createAddOperation(filterRefAddress);
newAddOperations.put(filterRefAddress, filterRefAdd);
}
PathAddress accessLogAddress = pathAddress(UndertowExtension.SUBSYSTEM_PATH, DEFAULT_SERVER_PATH, pathElement(Constants.HOST, address.getLastElement().getValue()), UndertowExtension.PATH_ACCESS_LOG);
if(newAddOperations.containsKey(VALVE_ACCESS_LOG_ADDRESS) && !newAddOperations.containsKey(accessLogAddress)) {
ModelNode operation = newAddOperations.get(VALVE_ACCESS_LOG_ADDRESS).clone();
operation.get(OP_ADDR).set(accessLogAddress.toModelNode());
newAddOperations.put(accessLogAddress, operation);

boolean hasAccessLogValve = newAddOperations.containsKey(VALVE_ACCESS_LOG_ADDRESS);

if (hasAccessLogValve || !filterAddresses.isEmpty()) {
for (String host : hosts) {
PathAddress hostAddress = pathAddress(UndertowExtension.SUBSYSTEM_PATH, DEFAULT_SERVER_PATH, pathElement(Constants.HOST, host));
for (PathAddress filterAddress : filterAddresses) {
PathAddress filterRefAddress = pathAddress(hostAddress, pathElement(Constants.FILTER_REF, filterAddress.getLastElement().getValue()));
ModelNode filterRefAdd = createAddOperation(filterRefAddress);
newAddOperations.put(filterRefAddress, filterRefAdd);
}
if (hasAccessLogValve) {
PathAddress accessLogAddress = pathAddress(hostAddress, UndertowExtension.PATH_ACCESS_LOG);
if(!newAddOperations.containsKey(accessLogAddress)) {
ModelNode operation = newAddOperations.get(VALVE_ACCESS_LOG_ADDRESS).clone();
operation.get(OP_ADDR).set(accessLogAddress.toModelNode());
newAddOperations.put(accessLogAddress, operation);
}
}
}
}
}

Expand Down

0 comments on commit a34cc72

Please sign in to comment.