Skip to content

Commit

Permalink
[WFLY-5732] Fix export-journal operation with custom paths
Browse files Browse the repository at this point in the history
* if the paths resources are not defined (as is the case by default),
  use their default values to resolve the actual paths
* check if the path value is absolute to determine whether the
  relative-to path must also be resolved.

JIRA: https://issues.jboss.org/browse/WFLY-5732
  • Loading branch information
jmesnil committed Nov 25, 2015
1 parent 6a97d9f commit 9dad840
Showing 1 changed file with 12 additions and 9 deletions.
Expand Up @@ -43,6 +43,7 @@
import org.jboss.as.controller.descriptions.ResourceDescriptionResolver;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.as.controller.registry.Resource;
import org.jboss.as.controller.services.path.AbsolutePathService;
import org.jboss.as.controller.services.path.PathManager;
import org.jboss.as.controller.services.path.PathManagerService;
import org.jboss.dmr.ModelNode;
Expand Down Expand Up @@ -82,14 +83,13 @@ protected void executeRuntimeStep(OperationContext context, ModelNode operation)
throw MessagingLogger.ROOT_LOGGER.managementOperationAllowedOnlyInRunningMode("export-journal", ADMIN_ONLY);
}

final Resource serverResource = context.readResource(EMPTY_ADDRESS, false);
final ServiceController<PathManager> service = (ServiceController<PathManager>) context.getServiceRegistry(false).getService(PathManagerService.SERVICE_NAME);
final PathManager pathManager = service.getService().getValue();

final String journal = resolvePath(context, pathManager, JOURNAL_DIRECTORY_PATH, serverResource);
final String bindings = resolvePath(context, pathManager, BINDINGS_DIRECTORY_PATH, serverResource);
final String paging = resolvePath(context, pathManager, PAGING_DIRECTORY_PATH, serverResource);
final String largeMessages = resolvePath(context, pathManager, LARGE_MESSAGES_DIRECTORY_PATH, serverResource);
final String journal = resolvePath(context, pathManager, JOURNAL_DIRECTORY_PATH);
final String bindings = resolvePath(context, pathManager, BINDINGS_DIRECTORY_PATH);
final String paging = resolvePath(context, pathManager, PAGING_DIRECTORY_PATH);
final String largeMessages = resolvePath(context, pathManager, LARGE_MESSAGES_DIRECTORY_PATH);

final XmlDataExporter exporter = new XmlDataExporter();

Expand All @@ -113,10 +113,13 @@ protected void executeRuntimeStep(OperationContext context, ModelNode operation)
}
}

private static String resolvePath(OperationContext context, PathManager pathManager, PathElement pathElement, Resource serverResource) throws OperationFailedException {
final ModelNode pathModel = serverResource.hasChild(pathElement) ? serverResource.getChild(pathElement).getModel() : new ModelNode();
final String relativeTo = PathDefinition.RELATIVE_TO.resolveModelAttribute(context, pathModel).asString();
final String path = PathDefinition.PATHS.get(pathElement.getValue()).resolveModelAttribute(context, pathModel).asString();
private static String resolvePath(OperationContext context, PathManager pathManager, PathElement pathElement) throws OperationFailedException {
Resource serverResource = context.readResource(EMPTY_ADDRESS);
// if the path resource does not exist, resolve its attributes against an empty ModelNode to get its default values
final ModelNode model = serverResource.hasChild(pathElement) ? serverResource.getChild(pathElement).getModel() : new ModelNode();
final String path = PathDefinition.PATHS.get(pathElement.getValue()).resolveModelAttribute(context, model).asString();
final String relativeToPath = PathDefinition.RELATIVE_TO.resolveModelAttribute(context, model).asString();
final String relativeTo = AbsolutePathService.isAbsoluteUnixOrWindowsPath(path) ? null : relativeToPath;
return pathManager.resolveRelativePathEntry(path, relativeTo);
}
}

0 comments on commit 9dad840

Please sign in to comment.