@Override
 public void execute(OperationContext context, ModelNode operation)
     throws OperationFailedException {
   if (context.getProcessType() == ProcessType.SELF_CONTAINED) {
     throw DomainControllerLogger.ROOT_LOGGER.cannotReadContentFromSelfContainedServer();
   }
   final Resource deploymentResource = context.readResource(PathAddress.EMPTY_ADDRESS);
   ModelNode contentItemNode = getContentItem(deploymentResource);
   // Validate this op is available
   if (!isManaged(contentItemNode)) {
     throw DomainControllerLogger.ROOT_LOGGER.cannotReadContentFromUnmanagedDeployment();
   }
   final byte[] deploymentHash =
       CONTENT_HASH.resolveModelAttribute(context, contentItemNode).asBytes();
   final ModelNode pathNode = DEPLOYMENT_CONTENT_PATH.resolveModelAttribute(context, operation);
   final String path;
   if (pathNode.isDefined()) {
     path = pathNode.asString();
   } else {
     path = "";
   }
   int depth = DEPTH.resolveModelAttribute(context, operation).asInt();
   boolean explodable = ARCHIVE.resolveModelAttribute(context, operation).asBoolean();
   try {
     for (ContentRepositoryElement content :
         contentRepository.listContent(
             deploymentHash, path, ContentFilter.Factory.createContentFilter(depth, explodable))) {
       ModelNode contentNode = new ModelNode();
       contentNode.get(PATH).set(content.getPath());
       contentNode.get(DIRECTORY).set(content.isFolder());
       if (!content.isFolder()) {
         contentNode.get(FILE_SIZE).set(content.getSize());
       }
       context.getResult().add(contentNode);
     }
   } catch (ExplodedContentException ex) {
     throw new OperationFailedException(ex.getMessage());
   }
 }
  /** {@inheritDoc */
  public void execute(final OperationContext context, final ModelNode operation)
      throws OperationFailedException {

    final Resource resource = context.createResource(PathAddress.EMPTY_ADDRESS);
    final ModelNode model = resource.getModel();

    for (AttributeDefinition attr : ServerGroupResourceDefinition.ADD_ATTRIBUTES) {
      attr.validateAndSet(operation, model);
    }

    // Validate the profile reference.

    // Future proofing: We resolve the profile in Stage.MODEL even though system properties may not
    // be available yet
    // solely because currently the attribute doesn't support expressions. In the future if system
    // properties
    // can safely be resolved in stage model, this profile attribute can be changed and this will
    // still work.
    boolean reloadRequired = false;
    final String profile = PROFILE.resolveModelAttribute(context, model).asString();
    try {
      context.readResourceFromRoot(
          PathAddress.pathAddress(PathElement.pathElement(PROFILE.getName(), profile)));
    } catch (Exception e) {
      if (master) {
        throw DomainControllerLogger.ROOT_LOGGER.noProfileCalled(profile);
      } else {
        // We are a slave HC and we don't have the socket-binding-group required, so put the slave
        // into reload-required
        reloadRequired = true;
        context.reloadRequired();
      }
    }

    final String socketBindingGroup;
    if (operation.hasDefined(SOCKET_BINDING_GROUP.getName())) {
      socketBindingGroup = SOCKET_BINDING_GROUP.resolveModelAttribute(context, model).asString();
      try {
        context.readResourceFromRoot(
            PathAddress.pathAddress(
                PathElement.pathElement(SOCKET_BINDING_GROUP.getName(), socketBindingGroup)));
      } catch (NoSuchElementException e) {
        if (master) {
          throw new OperationFailedException(
              DomainControllerLogger.ROOT_LOGGER.unknown(
                  SOCKET_BINDING_GROUP.getName(), socketBindingGroup));
        } else {
          // We are a slave HC and we don't have the socket-binding-group required, so put the slave
          // into reload-required
          reloadRequired = true;
          context.reloadRequired();
        }
      }
    } else {
      socketBindingGroup = null;
    }

    final boolean revertReloadRequiredOnRollback = reloadRequired;
    context.completeStep(
        new OperationContext.ResultHandler() {
          @Override
          public void handleResult(
              ResultAction resultAction, OperationContext context, ModelNode operation) {
            if (resultAction == ResultAction.ROLLBACK) {
              if (revertReloadRequiredOnRollback) {
                context.revertReloadRequired();
              }
            }
          }
        });
  }