Search in sources :

Example 1 with MountHandle

use of org.jboss.vfs.spi.MountHandle in project wildfly-core by wildfly.

the class DeployArchiveCommand method buildRequest.

/**
 * null attachments means that the command is in a batch, non null means
 * command executed.
 *
 * Inside a batch, the attachments must be added to the existing batch and
 * NOT to the temporary batch created to build the composite request.
 * Outside of a batch, the attachments MUST be added to the passed non null
 * attachments.
 *
 * @param context
 * @param attachments
 * @return
 * @throws CommandFormatException
 */
@Override
public ModelNode buildRequest(CommandContext context, Attachments attachments) throws CommandFormatException {
    CommandContext ctx = context;
    TempFileProvider tempFileProvider;
    MountHandle root;
    try {
        String name = "cli-" + System.currentTimeMillis();
        tempFileProvider = TempFileProvider.create(name, Executors.newSingleThreadScheduledExecutor((r) -> new Thread(r, "CLI (un)deploy archive tempFile")), true);
        root = extractArchive(file, tempFileProvider, name);
    } catch (IOException e) {
        e.printStackTrace();
        throw new OperationFormatException("Unable to extract archive '" + file.getAbsolutePath() + "' to temporary location");
    }
    Consumer<Attachments> cl = (a) -> {
        VFSUtils.safeClose(root, tempFileProvider);
    };
    if (attachments != null) {
        attachments.addConsumer(cl);
    }
    final File currentDir = ctx.getCurrentDir();
    ctx.setCurrentDir(root.getMountSource());
    String holdbackBatch = activateNewBatch(ctx);
    try {
        if (script == null) {
            script = getDefaultScript();
        }
        File scriptFile = new File(ctx.getCurrentDir(), script);
        if (!scriptFile.exists()) {
            throw new CommandFormatException("ERROR: script '" + script + "' not found.");
        }
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(scriptFile));
            String line = reader.readLine();
            while (!ctx.isTerminated() && line != null) {
                context.handle(line);
                line = reader.readLine();
            }
        } catch (FileNotFoundException e) {
            throw new CommandFormatException("ERROR: script '" + script + "' not found.");
        } catch (IOException e) {
            throw new CommandFormatException("Failed to read the next command from " + scriptFile.getName() + ": " + e.getMessage(), e);
        } catch (CommandLineException ex) {
            throw new CommandFormatException(ex);
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                }
            }
        }
        return ctx.getBatchManager().getActiveBatch().toRequest();
    } catch (CommandFormatException cfex) {
        cl.accept(attachments);
        throw cfex;
    } finally {
        // reset current dir in context
        ctx.setCurrentDir(currentDir);
        discardBatch(ctx, holdbackBatch, attachments, cl);
    }
}
Also used : CommandDefinition(org.aesh.command.CommandDefinition) TempFileProvider(org.jboss.vfs.TempFileProvider) Operation(org.jboss.as.controller.client.Operation) OperationBuilder(org.jboss.as.controller.client.OperationBuilder) OperationFormatException(org.jboss.as.cli.operation.OperationFormatException) LegacyBridge(org.jboss.as.cli.impl.aesh.cmd.LegacyBridge) Command(org.aesh.command.Command) Argument(org.aesh.command.option.Argument) HideOptionActivator(org.wildfly.core.cli.command.aesh.activator.HideOptionActivator) CommandResult(org.aesh.command.CommandResult) BatchCompliantCommand(org.wildfly.core.cli.command.BatchCompliantCommand) AccessRequirements(org.jboss.as.cli.impl.aesh.cmd.deployment.security.AccessRequirements) MountHandle(org.jboss.vfs.spi.MountHandle) Option(org.aesh.command.option.Option) VFS(org.jboss.vfs.VFS) CommandWithPermissions(org.jboss.as.cli.impl.aesh.cmd.deployment.security.CommandWithPermissions) IOException(java.io.IOException) BatchManager(org.jboss.as.cli.batch.BatchManager) ControlledCommandActivator(org.jboss.as.cli.impl.aesh.cmd.security.ControlledCommandActivator) File(java.io.File) FileNotFoundException(java.io.FileNotFoundException) Executors(java.util.concurrent.Executors) CommandException(org.aesh.command.CommandException) Util(org.jboss.as.cli.Util) CommandLineException(org.jboss.as.cli.CommandLineException) Consumer(java.util.function.Consumer) VFSUtils(org.jboss.vfs.VFSUtils) Batch(org.jboss.as.cli.batch.Batch) Permissions(org.jboss.as.cli.impl.aesh.cmd.deployment.security.Permissions) CommandContext(org.jboss.as.cli.CommandContext) CommandFormatException(org.jboss.as.cli.CommandFormatException) ModelNode(org.jboss.dmr.ModelNode) CLICommandInvocation(org.wildfly.core.cli.command.aesh.CLICommandInvocation) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) Attachments(org.jboss.as.cli.Attachments) CommandContext(org.jboss.as.cli.CommandContext) OperationFormatException(org.jboss.as.cli.operation.OperationFormatException) MountHandle(org.jboss.vfs.spi.MountHandle) TempFileProvider(org.jboss.vfs.TempFileProvider) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) Attachments(org.jboss.as.cli.Attachments) CommandLineException(org.jboss.as.cli.CommandLineException) CommandFormatException(org.jboss.as.cli.CommandFormatException) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) File(java.io.File)

Aggregations

BufferedReader (java.io.BufferedReader)1 File (java.io.File)1 FileNotFoundException (java.io.FileNotFoundException)1 FileReader (java.io.FileReader)1 IOException (java.io.IOException)1 Executors (java.util.concurrent.Executors)1 Consumer (java.util.function.Consumer)1 Command (org.aesh.command.Command)1 CommandDefinition (org.aesh.command.CommandDefinition)1 CommandException (org.aesh.command.CommandException)1 CommandResult (org.aesh.command.CommandResult)1 Argument (org.aesh.command.option.Argument)1 Option (org.aesh.command.option.Option)1 Attachments (org.jboss.as.cli.Attachments)1 CommandContext (org.jboss.as.cli.CommandContext)1 CommandFormatException (org.jboss.as.cli.CommandFormatException)1 CommandLineException (org.jboss.as.cli.CommandLineException)1 Util (org.jboss.as.cli.Util)1 Batch (org.jboss.as.cli.batch.Batch)1 BatchManager (org.jboss.as.cli.batch.BatchManager)1