Search in sources :

Example 21 with StatementContext

use of org.jboss.hal.meta.StatementContext in project console by hal.

the class ManagementOperationsPresenter method cancelNonProgressingOperation.

void cancelNonProgressingOperation() {
    if (environment.isStandalone()) {
        ResourceAddress address = MANAGEMENT_OPERATIONS_TEMPLATE.resolve(statementContext);
        Operation operation = new Operation.Builder(address, CANCEL_NON_PROGRESSING_OPERATION).build();
        dispatcher.execute(operation, result -> {
            MessageEvent.fire(eventBus, Message.info(resources.messages().cancelledOperation(result.asString())));
            reload();
        }, (operation1, failure) -> {
            // operation to cancel, handle this a non error in HAL
            if (failure.contains(WFLYDM_0089)) {
                MessageEvent.fire(eventBus, Message.success(SafeHtmlUtils.fromString(failure)));
            } else {
                MessageEvent.fire(eventBus, Message.error(SafeHtmlUtils.fromString(failure)));
            }
            reload();
        }, (operation1, ex) -> {
            // operation to cancel, handle this a non error in HAL
            if (ex.getMessage().contains(WFLYDM_0089)) {
                MessageEvent.fire(eventBus, Message.success(SafeHtmlUtils.fromString(ex.getMessage())));
            } else {
                MessageEvent.fire(eventBus, Message.error(SafeHtmlUtils.fromString(ex.getMessage())));
            }
            reload();
        });
    } else {
        Composite composite = new Composite();
        // return running hosts, to later call a cancel-non-progressing-operation on each host
        ResourceAddress rootAddress = new ResourceAddress();
        Operation opHosts = new Operation.Builder(rootAddress, READ_CHILDREN_NAMES_OPERATION).param(CHILD_TYPE, HOST).build();
        composite.add(opHosts);
        ResourceAddress address = new ResourceAddress().add(HOST, WILDCARD).add(SERVER, WILDCARD);
        Operation opRunningServers = new Operation.Builder(address, QUERY).param(SELECT, new ModelNode().add(HOST).add(NAME)).param(WHERE, new ModelNode().set(SERVER_STATE, "running")).build();
        composite.add(opRunningServers);
        dispatcher.execute(composite, (CompositeResult compositeResult) -> {
            // available hosts
            List<String> hosts = compositeResult.step(0).get(RESULT).asList().stream().map(ModelNode::asString).collect(toList());
            // runing servers
            List<String> servers = Collections.emptyList();
            ModelNode result = compositeResult.step(1);
            if (result != null && result.isDefined()) {
                servers = result.get(RESULT).asList().stream().map(r -> hostServerAddress(r.get(RESULT))).collect(toList());
            }
            // run each :cancel-non-progressing-operation on a specific task
            // because the :cancel-non-progressing-operation returns as a failure
            // for this case, continue to run the next task
            List<Task<FlowContext>> tasks = new ArrayList<>(hosts.size());
            for (String host : hosts) {
                // call cancel-non-progressing-operation on each host
                Task<FlowContext> task = context -> {
                    ResourceAddress hostAddress = new ResourceAddress().add(HOST, host).add(CORE_SERVICE, MANAGEMENT).add(SERVICE, MANAGEMENT_OPERATIONS);
                    return buildCancelOperation(hostAddress, context);
                };
                tasks.add(task);
            }
            for (String server : servers) {
                // call cancel-non-progressing-operation on each server
                Task<FlowContext> task = context -> {
                    ResourceAddress serverAddress = AddressTemplate.of(server).append(MANAGEMENT_OPERATIONS_TEMPLATE).resolve(statementContext);
                    return buildCancelOperation(serverAddress, context);
                };
                tasks.add(task);
            }
            series(new FlowContext(progress.get()), tasks).subscribe(new Outcome<FlowContext>() {

                @Override
                public void onError(FlowContext context, Throwable error) {
                    MessageEvent.fire(getEventBus(), Message.error(SafeHtmlUtils.fromString("Error loading management operations: " + error.getMessage())));
                }

                @Override
                public void onSuccess(FlowContext context) {
                    if (context.emptyStack()) {
                        // display the standard message if there is no cancelled operation
                        MessageEvent.fire(eventBus, Message.success(SafeHtmlUtils.fromString(context.get(WFLYDM_0089))));
                    } else {
                        // display the cancelled non progressing operation ids
                        List<String> canceledOps = new ArrayList<>();
                        while (!context.emptyStack()) {
                            canceledOps.add(context.pop());
                        }
                        String ids = Joiner.on(", ").join(canceledOps);
                        MessageEvent.fire(eventBus, Message.success(resources.messages().cancelledOperation(ids)));
                    }
                    reload();
                }
            });
        });
    }
}
Also used : ModelNode(org.jboss.hal.dmr.ModelNode) Completable(rx.Completable) Provider(javax.inject.Provider) Environment(org.jboss.hal.config.Environment) StatementContext(org.jboss.hal.meta.StatementContext) MessageEvent(org.jboss.hal.spi.MessageEvent) ProxyPlace(com.gwtplatform.mvp.client.proxy.ProxyPlace) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) FlowContext(org.jboss.hal.flow.FlowContext) Outcome(org.jboss.hal.flow.Outcome) ArrayList(java.util.ArrayList) ModelType(org.jboss.hal.dmr.ModelType) Inject(javax.inject.Inject) Property(org.jboss.hal.dmr.Property) Task(org.jboss.hal.flow.Task) Single(rx.Single) Progress(org.jboss.hal.flow.Progress) AddressTemplate(org.jboss.hal.meta.AddressTemplate) Message(org.jboss.hal.spi.Message) HasPresenter(org.jboss.hal.core.mvp.HasPresenter) Names(org.jboss.hal.resources.Names) ApplicationFinderPresenter(org.jboss.hal.core.mvp.ApplicationFinderPresenter) SafeHtmlUtils(com.google.gwt.safehtml.shared.SafeHtmlUtils) ModelNodeHelper.asNamedNodes(org.jboss.hal.dmr.ModelNodeHelper.asNamedNodes) Requires(org.jboss.hal.spi.Requires) CompositeResult(org.jboss.hal.dmr.CompositeResult) ProxyCodeSplit(com.gwtplatform.mvp.client.annotations.ProxyCodeSplit) Operation(org.jboss.hal.dmr.Operation) NameToken(com.gwtplatform.mvp.client.annotations.NameToken) Ids(org.jboss.hal.resources.Ids) FinderPathFactory(org.jboss.hal.core.finder.FinderPathFactory) EventBus(com.google.web.bindery.event.shared.EventBus) FinderPath(org.jboss.hal.core.finder.FinderPath) DialogFactory(org.jboss.hal.ballroom.dialog.DialogFactory) MANAGEMENT_OPERATIONS(org.jboss.hal.meta.token.NameTokens.MANAGEMENT_OPERATIONS) Composite(org.jboss.hal.dmr.Composite) List(java.util.List) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) Collectors.toList(java.util.stream.Collectors.toList) Resources(org.jboss.hal.resources.Resources) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) HalView(org.jboss.hal.core.mvp.HalView) Flow.series(org.jboss.hal.flow.Flow.series) Finder(org.jboss.hal.core.finder.Finder) Footer(org.jboss.hal.spi.Footer) NamedNode(org.jboss.hal.dmr.NamedNode) Collections(java.util.Collections) Joiner(com.google.common.base.Joiner) Task(org.jboss.hal.flow.Task) Composite(org.jboss.hal.dmr.Composite) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) CompositeResult(org.jboss.hal.dmr.CompositeResult) ArrayList(java.util.ArrayList) Operation(org.jboss.hal.dmr.Operation) FlowContext(org.jboss.hal.flow.FlowContext) ArrayList(java.util.ArrayList) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) ModelNode(org.jboss.hal.dmr.ModelNode)

Example 22 with StatementContext

use of org.jboss.hal.meta.StatementContext in project console by hal.

the class ServerPreview method update.

@Override
public void update(Server server) {
    ServerStatusSwitch sss = new ServerStatusSwitch(serverActions) {

        @Override
        protected void onPending(Server server) {
            pending(resources.messages().serverPending(server.getName()));
            disableAllLinks();
        }

        @Override
        protected void onBootErrors(Server server) {
            error(resources.messages().serverBootErrors(server.getName()));
            disableAllLinksBut(bootErrorsLink);
        }

        @Override
        protected void onFailed(Server server) {
            error(resources.messages().serverFailed(server.getName()));
            if (server.isStandalone()) {
                disableAllLinks();
            } else {
                disableAllLinksBut(startLink);
            }
        }

        @Override
        protected void onAdminMode(Server server) {
            adminOnly(resources.messages().serverAdminMode(server.getName()));
            disableAllLinks();
        }

        @Override
        protected void onStarting(Server server) {
            adminOnly(resources.messages().serverAdminMode(server.getName()));
            disableAllLinks();
        }

        @Override
        protected void onSuspended(Server server) {
            suspended(resources.messages().serverSuspended(server.getName()));
            disableAllLinksBut(resumeLink);
        }

        @Override
        protected void onNeedsReload(Server server) {
            needsReload(resources.messages().serverNeedsReload(server.getName()));
            disableAllLinksBut(reloadLink);
        }

        @Override
        protected void onNeedsRestart(Server server) {
            needsRestart(resources.messages().serverNeedsRestart(server.getName()));
            disableAllLinksBut(restartLink);
        }

        @Override
        protected void onRunning(Server server) {
            running(resources.messages().serverRunning(server.getName()));
            if (server.isStandalone()) {
                disableAllLinks();
            } else {
                disableAllLinksBut(stopLink);
            }
        }

        @Override
        protected void onStopped(Server server) {
            alertContainer.className = alert + " " + alertInfo;
            alertIcon.className = Icons.STOPPED;
            alertText.innerHTML = resources.messages().serverStopped(server.getName()).asString();
            if (server.isStandalone()) {
                disableAllLinks();
            } else {
                disableAllLinksBut(startLink);
            }
        }

        @Override
        protected void onUnknown(Server server) {
            unknown(resources.messages().serverUndefined(server.getName()));
            disableAllLinks();
        }
    };
    sss.accept(server);
    ServerPreviewAttributes.refresh(server, attributes);
    boolean displayOpenPorts = server.isRunning() || server.needsRestart() || server.needsReload();
    if (displayOpenPorts) {
        List<Task<FlowContext>> tasks = new ArrayList<>();
        tasks.add(flowContext -> {
            ResourceAddress address = SELECTED_SERVER.resolve(statementContext);
            Operation operation = new Operation.Builder(address, READ_CHILDREN_NAMES_OPERATION).param(CHILD_TYPE, SOCKET_BINDING_GROUP).build();
            return dispatcher.execute(operation).doOnSuccess(result -> flowContext.push(result.get(0).asString())).toCompletable();
        });
        tasks.add(flowContext -> {
            String socketBnding = flowContext.pop();
            ResourceAddress address = SELECTED_SERVER.resolve(statementContext).add(SOCKET_BINDING_GROUP, socketBnding).add(SOCKET_BINDING, "*");
            ModelNode select = new ModelNode();
            select.add("bound-port").add(NAME);
            ModelNode where = new ModelNode();
            where.set("bound", true);
            Operation operation = new Operation.Builder(address, QUERY).param(SELECT, select).param(WHERE, where).build();
            return dispatcher.execute(operation).doOnSuccess(result -> {
                ModelNode openPortsModel = new ModelNode();
                result.asList().forEach(m -> {
                    ModelNode sbModel = m.get(RESULT);
                    openPortsModel.add(sbModel.get(NAME).asString(), sbModel.get("bound-port").asInt());
                    flowContext.push(openPortsModel);
                });
            }).toCompletable();
        });
        series(new FlowContext(progress.get()), tasks).subscribe(new SuccessfulOutcome<FlowContext>(eventBus, resources) {

            @Override
            public void onSuccess(FlowContext flowContext) {
                ModelNode openPorts = flowContext.pop();
                buildOpenPortsElement(openPorts);
            }
        });
        serverActions.readUrl(server, serverUrl);
    }
    Elements.setVisible(headerOpenPorts, displayOpenPorts);
    Elements.setVisible(ulOpenPorts, displayOpenPorts);
}
Also used : ModelNode(org.jboss.hal.dmr.ModelNode) Provider(javax.inject.Provider) Constraint(org.jboss.hal.meta.security.Constraint) StatementContext(org.jboss.hal.meta.StatementContext) SuccessfulOutcome(org.jboss.hal.core.SuccessfulOutcome) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) Icons(org.jboss.hal.resources.Icons) FlowContext(org.jboss.hal.flow.FlowContext) ArrayList(java.util.ArrayList) Task(org.jboss.hal.flow.Task) Progress(org.jboss.hal.flow.Progress) AddressTemplate(org.jboss.hal.meta.AddressTemplate) HTMLElement(elemental2.dom.HTMLElement) PreviewAttribute(org.jboss.hal.core.finder.PreviewAttributes.PreviewAttribute) PlaceManager(com.gwtplatform.mvp.client.proxy.PlaceManager) PreviewAttributes(org.jboss.hal.core.finder.PreviewAttributes) Server(org.jboss.hal.core.runtime.server.Server) Places(org.jboss.hal.core.mvp.Places) Names(org.jboss.hal.resources.Names) ServerActions(org.jboss.hal.core.runtime.server.ServerActions) PreviewAttributeFunction(org.jboss.hal.core.finder.PreviewAttributes.PreviewAttributeFunction) Operation(org.jboss.hal.dmr.Operation) Ids(org.jboss.hal.resources.Ids) FinderPathFactory(org.jboss.hal.core.finder.FinderPathFactory) EventBus(com.google.web.bindery.event.shared.EventBus) CSS(org.jboss.hal.resources.CSS) EventType.click(org.jboss.gwt.elemento.core.EventType.click) FinderPath(org.jboss.hal.core.finder.FinderPath) ServerPreviewAttributes(org.jboss.hal.core.runtime.server.ServerPreviewAttributes) PlaceRequest(com.gwtplatform.mvp.shared.proxy.PlaceRequest) List(java.util.List) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) UIConstants(org.jboss.hal.resources.UIConstants) HTMLLIElement(elemental2.dom.HTMLLIElement) NameTokens(org.jboss.hal.meta.token.NameTokens) Resources(org.jboss.hal.resources.Resources) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) Flow.series(org.jboss.hal.flow.Flow.series) RuntimePreview(org.jboss.hal.client.runtime.RuntimePreview) ServerColumn.serverConfigTemplate(org.jboss.hal.client.runtime.server.ServerColumn.serverConfigTemplate) Elements(org.jboss.gwt.elemento.core.Elements) Task(org.jboss.hal.flow.Task) Server(org.jboss.hal.core.runtime.server.Server) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) ArrayList(java.util.ArrayList) Operation(org.jboss.hal.dmr.Operation) FlowContext(org.jboss.hal.flow.FlowContext) ModelNode(org.jboss.hal.dmr.ModelNode)

Example 23 with StatementContext

use of org.jboss.hal.meta.StatementContext in project console by hal.

the class ApplyPatchWizard method show.

public void show() {
    Messages messages = resources.messages();
    Wizard.Builder<PatchContext, PatchState> wb = new Wizard.Builder<>(messages.addResourceTitle(Names.PATCH), new PatchContext());
    checkServersState(servers -> {
        if (servers != null) {
            wb.addStep(CHECK_SERVERS, new CheckRunningServersStep(resources, servers, statementContext.selectedHost()));
        }
        wb.addStep(UPLOAD, new UploadPatchStep(resources)).addStep(CONFIGURE, new ConfigurationStep(metadata, resources)).onBack((context, currentState) -> {
            PatchState previous = null;
            switch(currentState) {
                case CHECK_SERVERS:
                    break;
                case UPLOAD:
                    previous = CHECK_SERVERS;
                    break;
                case CONFIGURE:
                    previous = UPLOAD;
                    break;
                default:
                    break;
            }
            return previous;
        }).onNext((context, currentState) -> {
            PatchState next = null;
            switch(currentState) {
                case CHECK_SERVERS:
                    next = UPLOAD;
                    break;
                case UPLOAD:
                    next = CONFIGURE;
                    break;
                case CONFIGURE:
                    break;
                default:
                    break;
            }
            return next;
        }).stayOpenAfterFinish().onFinish((wzd, context) -> {
            String name = context.file.name;
            wzd.showProgress(resources.constants().patchInProgress(), messages.patchInProgress(name));
            series(new FlowContext(progress.get()), new UploadPatch(statementContext, dispatcher, serverActions, context)).subscribe(new Outcome<FlowContext>() {

                @Override
                public void onError(FlowContext flowContext, Throwable error) {
                    wzd.showError(resources.constants().patchError(), messages.patchAddError(name, error.getMessage()), error.getMessage());
                }

                @Override
                public void onSuccess(FlowContext context) {
                    callback.execute();
                    wzd.showSuccess(resources.constants().patchSuccessful(), messages.patchSucessfullyApplied(name), messages.view(Names.PATCH), cxt -> {
                    /* nothing to do, content is already selected */
                    });
                }
            });
        });
        Wizard<PatchContext, PatchState> wizard = wb.build();
        wizard.show();
    });
}
Also used : Completable(rx.Completable) Provider(javax.inject.Provider) Environment(org.jboss.hal.config.Environment) StatementContext(org.jboss.hal.meta.StatementContext) Messages(org.jboss.hal.resources.Messages) UPLOAD(org.jboss.hal.client.patching.wizard.PatchState.UPLOAD) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) FlowContext(org.jboss.hal.flow.FlowContext) Outcome(org.jboss.hal.flow.Outcome) Property(org.jboss.hal.dmr.Property) Task(org.jboss.hal.flow.Task) Progress(org.jboss.hal.flow.Progress) PATCHING_TEMPLATE(org.jboss.hal.client.patching.PatchesColumn.PATCHING_TEMPLATE) Server(org.jboss.hal.core.runtime.server.Server) Metadata(org.jboss.hal.meta.Metadata) Names(org.jboss.hal.resources.Names) ServerActions(org.jboss.hal.core.runtime.server.ServerActions) Operation(org.jboss.hal.dmr.Operation) CONFIGURE(org.jboss.hal.client.patching.wizard.PatchState.CONFIGURE) Wizard(org.jboss.hal.ballroom.wizard.Wizard) CHECK_SERVERS(org.jboss.hal.client.patching.wizard.PatchState.CHECK_SERVERS) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) Callback(org.jboss.hal.spi.Callback) Resources(org.jboss.hal.resources.Resources) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) Flow.series(org.jboss.hal.flow.Flow.series) Messages(org.jboss.hal.resources.Messages) FlowContext(org.jboss.hal.flow.FlowContext) Wizard(org.jboss.hal.ballroom.wizard.Wizard)

Example 24 with StatementContext

use of org.jboss.hal.meta.StatementContext in project console by hal.

the class ServerPresenter method disableSsl.

void disableSsl(String httpsListener) {
    AddressTemplate httpsTemplate = SERVER_TEMPLATE.append(HTTPS_LISTENER + EQ_WILDCARD);
    Metadata metadata = metadataRegistry.lookup(httpsTemplate);
    SafeHtml description = resources.messages().disableSSLUndertowQuestion(httpsListener);
    String label = new LabelBuilder().label(SECURITY_REALM);
    TextBoxItem securityRealmItem = new TextBoxItem(SECURITY_REALM, label);
    securityRealmItem.setRequired(true);
    SafeHtml securityRealmDescription = SafeHtmlUtils.fromTrustedString(metadata.getDescription().get(ATTRIBUTES).get(SECURITY_REALM).get(DESCRIPTION).asString());
    Form<ModelNode> form = new ModelNodeForm.Builder<>(Ids.build(SECURITY_REALM, Ids.FORM), Metadata.empty()).unboundFormItem(securityRealmItem, 0, securityRealmDescription).build();
    HTMLElement content = div().add(p().innerHtml(description)).add(form.element()).element();
    Dialog dialog = new Dialog.Builder(resources.constants().disableSSL()).size(Dialog.Size.MEDIUM).primary(resources.constants().yes(), () -> {
        boolean valid = form.save();
        // if the form contains validation error, don't close the dialog
        if (valid) {
            ResourceAddress httpsAddress = httpsTemplate.resolve(statementContext, serverName, httpsListener);
            Operation undefineSslCtx = new Operation.Builder(httpsAddress, UNDEFINE_ATTRIBUTE_OPERATION).param(NAME, SSL_CONTEXT).build();
            Operation writeSecurityRealm = new Operation.Builder(httpsAddress, WRITE_ATTRIBUTE_OPERATION).param(NAME, SECURITY_REALM).param(VALUE, securityRealmItem.getValue()).build();
            Composite composite = new Composite();
            composite.add(undefineSslCtx);
            composite.add(writeSecurityRealm);
            dispatcher.execute(composite, (CompositeResult result) -> {
                MessageEvent.fire(getEventBus(), Message.success(resources.messages().disableSSLUndertowSuccess(httpsListener)));
                reload();
            }, (operation, failure) -> {
                MessageEvent.fire(getEventBus(), Message.error(resources.messages().disableSSLUndertowError(httpsListener, failure)));
            }, (operation, exception) -> {
                SafeHtml message = resources.messages().disableSSLUndertowError(httpsListener, exception.getMessage());
                MessageEvent.fire(getEventBus(), Message.error(message));
            });
        }
        return valid;
    }).secondary(resources.constants().no(), () -> true).closeIcon(true).closeOnEsc(true).add(content).build();
    dialog.registerAttachable(form);
    dialog.show();
    ModelNode model = new ModelNode().setEmptyObject();
    form.edit(model);
}
Also used : AddressTemplate(org.jboss.hal.meta.AddressTemplate) Dialog(org.jboss.hal.ballroom.dialog.Dialog) Provider(javax.inject.Provider) FinishRemove(org.jboss.hal.ballroom.form.Form.FinishRemove) Environment(org.jboss.hal.config.Environment) StatementContext(org.jboss.hal.meta.StatementContext) AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) FilteringStatementContext(org.jboss.hal.meta.FilteringStatementContext) Collections.singletonList(java.util.Collections.singletonList) TextBoxItem(org.jboss.hal.ballroom.form.TextBoxItem) Elements.p(org.jboss.gwt.elemento.core.Elements.p) HTMLElement(elemental2.dom.HTMLElement) Map(java.util.Map) Message(org.jboss.hal.spi.Message) AddressTemplates(org.jboss.hal.client.configuration.subsystem.undertow.AddressTemplates) FinishReset(org.jboss.hal.ballroom.form.Form.FinishReset) HasPresenter(org.jboss.hal.core.mvp.HasPresenter) Metadata(org.jboss.hal.meta.Metadata) Names(org.jboss.hal.resources.Names) ModelNodeHelper.asNamedNodes(org.jboss.hal.dmr.ModelNodeHelper.asNamedNodes) CrudOperations(org.jboss.hal.core.CrudOperations) NameToken(com.gwtplatform.mvp.client.annotations.NameToken) FinderPath(org.jboss.hal.core.finder.FinderPath) Collectors(java.util.stream.Collectors) List(java.util.List) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) MetadataRegistry(org.jboss.hal.meta.MetadataRegistry) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) HalView(org.jboss.hal.core.mvp.HalView) Flow.series(org.jboss.hal.flow.Flow.series) ModelNodeHelper.encodeValue(org.jboss.hal.dmr.ModelNodeHelper.encodeValue) Finder(org.jboss.hal.core.finder.Finder) Footer(org.jboss.hal.spi.Footer) SafeHtml(com.google.gwt.safehtml.shared.SafeHtml) SupportsExpertMode(org.jboss.hal.core.mvp.SupportsExpertMode) ModelNode(org.jboss.hal.dmr.ModelNode) Elements.div(org.jboss.gwt.elemento.core.Elements.div) MessageEvent(org.jboss.hal.spi.MessageEvent) ProxyPlace(com.gwtplatform.mvp.client.proxy.ProxyPlace) SuccessfulOutcome(org.jboss.hal.core.SuccessfulOutcome) HashMap(java.util.HashMap) FlowContext(org.jboss.hal.flow.FlowContext) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) ModelNodeForm(org.jboss.hal.core.mbui.form.ModelNodeForm) Filter(org.jboss.hal.meta.FilteringStatementContext.Filter) Task(org.jboss.hal.flow.Task) Progress(org.jboss.hal.flow.Progress) AddressTemplate(org.jboss.hal.meta.AddressTemplate) NameItem(org.jboss.hal.core.mbui.dialog.NameItem) ApplicationFinderPresenter(org.jboss.hal.core.mvp.ApplicationFinderPresenter) SafeHtmlUtils(com.google.gwt.safehtml.shared.SafeHtmlUtils) Requires(org.jboss.hal.spi.Requires) SELECTION_KEY(org.jboss.hal.meta.SelectionAwareStatementContext.SELECTION_KEY) CompositeResult(org.jboss.hal.dmr.CompositeResult) ProxyCodeSplit(com.gwtplatform.mvp.client.annotations.ProxyCodeSplit) EnableSSLWizard(org.jboss.hal.client.shared.sslwizard.EnableSSLWizard) Operation(org.jboss.hal.dmr.Operation) Ids(org.jboss.hal.resources.Ids) FinderPathFactory(org.jboss.hal.core.finder.FinderPathFactory) EventBus(com.google.web.bindery.event.shared.EventBus) ReadChildrenAutoComplete(org.jboss.hal.ballroom.autocomplete.ReadChildrenAutoComplete) PlaceRequest(com.gwtplatform.mvp.shared.proxy.PlaceRequest) Consumer(java.util.function.Consumer) Composite(org.jboss.hal.dmr.Composite) ModelNodeHelper.failSafePropertyList(org.jboss.hal.dmr.ModelNodeHelper.failSafePropertyList) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) NameTokens(org.jboss.hal.meta.token.NameTokens) Resources(org.jboss.hal.resources.Resources) EnableSSLPresenter(org.jboss.hal.client.shared.sslwizard.EnableSSLPresenter) NamedNode(org.jboss.hal.dmr.NamedNode) Form(org.jboss.hal.ballroom.form.Form) HTMLElement(elemental2.dom.HTMLElement) Composite(org.jboss.hal.dmr.Composite) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) SafeHtml(com.google.gwt.safehtml.shared.SafeHtml) CompositeResult(org.jboss.hal.dmr.CompositeResult) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) Metadata(org.jboss.hal.meta.Metadata) Operation(org.jboss.hal.dmr.Operation) TextBoxItem(org.jboss.hal.ballroom.form.TextBoxItem) Dialog(org.jboss.hal.ballroom.dialog.Dialog) AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) ModelNode(org.jboss.hal.dmr.ModelNode)

Example 25 with StatementContext

use of org.jboss.hal.meta.StatementContext in project console by hal.

the class SecurityDomainPresenter method addModule.

void addModule(Module module) {
    // first check for (and add if necessary) the intermediate singleton
    // then add the final resource
    AddressTemplate singletonTemplate = SELECTED_SECURITY_DOMAIN_TEMPLATE.append(module.singleton);
    series(new FlowContext(progress.get()), new ResourceCheck(dispatcher, singletonTemplate.resolve(statementContext)), context -> {
        int status = context.pop();
        if (status == 200) {
            return Completable.complete();
        } else {
            Operation operation = new Operation.Builder(singletonTemplate.resolve(statementContext), ADD).build();
            return dispatcher.execute(operation).toCompletable();
        }
    }).subscribe(new SuccessfulOutcome<FlowContext>(getEventBus(), resources) {

        @Override
        public void onSuccess(FlowContext context) {
            AddressTemplate metadataTemplate = SECURITY_DOMAIN_TEMPLATE.append(module.singleton).append(module.resource + EQ_WILDCARD);
            AddressTemplate selectionTemplate = SELECTED_SECURITY_DOMAIN_TEMPLATE.append(module.singleton).append(module.resource + EQ_WILDCARD);
            Metadata metadata = metadataRegistry.lookup(metadataTemplate);
            AddResourceDialog dialog = new AddResourceDialog(module.id, resources.messages().addResourceTitle(module.type), metadata, (name, modelNode) -> {
                ResourceAddress address = selectionTemplate.resolve(statementContext, name);
                crud.add(module.type, name, address, modelNode, (n, a) -> reload());
            });
            dialog.show();
        }
    });
}
Also used : AddressTemplate(org.jboss.hal.meta.AddressTemplate) Provider(javax.inject.Provider) StatementContext(org.jboss.hal.meta.StatementContext) SELECTED_SECURITY_DOMAIN_TEMPLATE(org.jboss.hal.client.configuration.subsystem.security.AddressTemplates.SELECTED_SECURITY_DOMAIN_TEMPLATE) AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) SECURITY_DOMAIN_TEMPLATE(org.jboss.hal.client.configuration.subsystem.security.AddressTemplates.SECURITY_DOMAIN_TEMPLATE) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) TRUST_MODULE_ADDRESS(org.jboss.hal.client.configuration.subsystem.security.AddressTemplates.TRUST_MODULE_ADDRESS) Map(java.util.Map) Message(org.jboss.hal.spi.Message) NAME(org.jboss.hal.dmr.ModelDescriptionConstants.NAME) FinishReset(org.jboss.hal.ballroom.form.Form.FinishReset) READ_RESOURCE_OPERATION(org.jboss.hal.dmr.ModelDescriptionConstants.READ_RESOURCE_OPERATION) Metadata(org.jboss.hal.meta.Metadata) ResourceCheck(org.jboss.hal.dmr.ResourceCheck) Names(org.jboss.hal.resources.Names) CrudOperations(org.jboss.hal.core.CrudOperations) Table(org.jboss.hal.ballroom.table.Table) NameToken(com.gwtplatform.mvp.client.annotations.NameToken) FinderPath(org.jboss.hal.core.finder.FinderPath) MetadataRegistry(org.jboss.hal.meta.MetadataRegistry) SelectionAwareStatementContext(org.jboss.hal.meta.SelectionAwareStatementContext) Flow.series(org.jboss.hal.flow.Flow.series) Finder(org.jboss.hal.core.finder.Finder) Footer(org.jboss.hal.spi.Footer) SECURITY_DOMAIN(org.jboss.hal.meta.token.NameTokens.SECURITY_DOMAIN) SupportsExpertMode(org.jboss.hal.core.mvp.SupportsExpertMode) ModelNode(org.jboss.hal.dmr.ModelNode) Completable(rx.Completable) MessageEvent(org.jboss.hal.spi.MessageEvent) ProxyPlace(com.gwtplatform.mvp.client.proxy.ProxyPlace) SuccessfulOutcome(org.jboss.hal.core.SuccessfulOutcome) SECURITY_DOMAIN_ADDRESS(org.jboss.hal.client.configuration.subsystem.security.AddressTemplates.SECURITY_DOMAIN_ADDRESS) ADD(org.jboss.hal.dmr.ModelDescriptionConstants.ADD) FlowContext(org.jboss.hal.flow.FlowContext) Inject(javax.inject.Inject) Progress(org.jboss.hal.flow.Progress) AddressTemplate(org.jboss.hal.meta.AddressTemplate) Requires(org.jboss.hal.spi.Requires) ProxyCodeSplit(com.gwtplatform.mvp.client.annotations.ProxyCodeSplit) Operation(org.jboss.hal.dmr.Operation) Ids(org.jboss.hal.resources.Ids) FinderPathFactory(org.jboss.hal.core.finder.FinderPathFactory) EventBus(com.google.web.bindery.event.shared.EventBus) PlaceRequest(com.gwtplatform.mvp.shared.proxy.PlaceRequest) SECURITY(org.jboss.hal.dmr.ModelDescriptionConstants.SECURITY) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) MbuiPresenter(org.jboss.hal.core.mbui.MbuiPresenter) Resources(org.jboss.hal.resources.Resources) MbuiView(org.jboss.hal.core.mbui.MbuiView) NamedNode(org.jboss.hal.dmr.NamedNode) Form(org.jboss.hal.ballroom.form.Form) AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) ResourceCheck(org.jboss.hal.dmr.ResourceCheck) Metadata(org.jboss.hal.meta.Metadata) Operation(org.jboss.hal.dmr.Operation) FlowContext(org.jboss.hal.flow.FlowContext)

Aggregations

StatementContext (org.jboss.hal.meta.StatementContext)51 Dispatcher (org.jboss.hal.dmr.dispatch.Dispatcher)47 ModelDescriptionConstants (org.jboss.hal.dmr.ModelDescriptionConstants)46 ResourceAddress (org.jboss.hal.dmr.ResourceAddress)46 ModelNode (org.jboss.hal.dmr.ModelNode)44 Resources (org.jboss.hal.resources.Resources)44 Ids (org.jboss.hal.resources.Ids)43 EventBus (com.google.web.bindery.event.shared.EventBus)42 List (java.util.List)42 Names (org.jboss.hal.resources.Names)41 Inject (javax.inject.Inject)40 Metadata (org.jboss.hal.meta.Metadata)40 Finder (org.jboss.hal.core.finder.Finder)37 Operation (org.jboss.hal.dmr.Operation)37 Requires (org.jboss.hal.spi.Requires)37 AddressTemplate (org.jboss.hal.meta.AddressTemplate)36 Form (org.jboss.hal.ballroom.form.Form)35 FinderPath (org.jboss.hal.core.finder.FinderPath)35 FinderPathFactory (org.jboss.hal.core.finder.FinderPathFactory)34 ModelNodeForm (org.jboss.hal.core.mbui.form.ModelNodeForm)34