use of org.jboss.hal.resources.Resources 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();
});
}
use of org.jboss.hal.resources.Resources 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();
}
});
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class ModelBrowser method add.
void add(Node<Context> parent, List<String> children) {
if (parent.data.hasSingletons()) {
if (parent.data.getSingletons().size() == children.size()) {
MessageEvent.fire(eventBus, Message.warning(resources.messages().allSingletonsExist()));
} else if (parent.data.getSingletons().size() - children.size() == 1) {
// no need to show a wizard - find the missing singleton
HashSet<String> singletons = Sets.newHashSet(parent.data.getSingletons());
singletons.removeAll(children);
String singleton = singletons.iterator().next();
ResourceAddress singletonAddress = parent.data.getAddress().getParent().add(parent.text, singleton);
AddressTemplate template = asGenericTemplate(parent, singletonAddress);
String id = Ids.build(parent.id, "singleton", Ids.ADD);
crud.addSingleton(id, singleton, template, address -> refresh(parent));
} else {
// open wizard to choose the singleton
Wizard<SingletonContext, SingletonState> wizard = new Wizard.Builder<SingletonContext, SingletonState>(resources.messages().addResourceTitle(parent.text), new SingletonContext(parent, children)).addStep(CHOOSE, new ChooseSingletonStep(parent, children, resources)).addStep(CREATE, new CreateSingletonStep(parent, metadataProcessor, progress, eventBus, resources)).onBack((context, currentState) -> currentState == CREATE ? CHOOSE : null).onNext((context, currentState) -> currentState == CHOOSE ? CREATE : null).onFinish((wzrd, context) -> {
Operation.Builder builder = new Operation.Builder(fqAddress(parent, context.singleton), ADD);
if (context.modelNode != null) {
builder.payload(context.modelNode);
}
dispatcher.execute(builder.build(), result -> {
MessageEvent.fire(eventBus, Message.success(resources.messages().addResourceSuccess(parent.text, context.singleton)));
refresh(parent);
});
}).build();
wizard.show();
}
} else {
AddressTemplate template = asGenericTemplate(parent, parent.data.getAddress());
metadataProcessor.lookup(template, progress.get(), new SuccessfulMetadataCallback(eventBus, resources) {
@Override
public void onMetadata(Metadata metadata) {
flattenDescription(metadata.getDescription().get(OPERATIONS).get(ADD).get(REQUEST_PROPERTIES));
String title = new LabelBuilder().label(parent.text);
NameItem nameItem = new NameItem();
String id = Ids.build(parent.id, "add");
ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).unboundFormItem(nameItem, 0).fromRequestProperties().panelForOptionalAttributes().build();
AddResourceDialog dialog = new AddResourceDialog(resources.messages().addResourceTitle(title), form, (name1, model) -> {
unflattenModel(model);
crud.add(title, nameItem.getValue(), fqAddress(parent, nameItem.getValue()), model, (n, a) -> refresh(parent));
});
dialog.show();
}
});
}
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class RoleColumn method editStandardRole.
// ------------------------------------------------------ modify roles
private void editStandardRole(Role role) {
Metadata metadata = metadataRegistry.lookup(ROLE_MAPPING_TEMPLATE);
Form<ModelNode> form = new ModelNodeForm.Builder<>(Ids.ROLE_MAPPING_FORM, metadata).unboundFormItem(new NameItem(), 0).include(INCLUDE_ALL).build();
form.getFormItem(NAME).setEnabled(false);
form.getFormItem(NAME).setRequired(false);
ModelNode modelNode = new ModelNode();
modelNode.get(INCLUDE_ALL).set(role.isIncludeAll());
new ModifyResourceDialog(resources.messages().modifyResourceTitle(resources.constants().role()), form, (frm, changedValues) -> series(new FlowContext(progress.get()), new CheckRoleMapping(dispatcher, role), new AddRoleMapping(dispatcher, role, status -> status == 404), new ModifyIncludeAll(dispatcher, role, frm.getModel().get(INCLUDE_ALL).asBoolean())).subscribe(new SuccessfulOutcome<FlowContext>(eventBus, resources) {
@Override
public void onSuccess(FlowContext context) {
MessageEvent.fire(eventBus, Message.success(resources.messages().modifyResourceSuccess(resources.constants().role(), role.getName())));
accessControl.reload(() -> {
refresh(role.getId());
eventBus.fireEvent(new RolesChangedEvent());
});
}
})).show(modelNode);
form.getFormItem(NAME).setValue(role.getName());
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class RoleColumn method removeScopedRole.
// ------------------------------------------------------ remove roles
private void removeScopedRole(Role role, String type) {
List<Task<FlowContext>> tasks = new ArrayList<>();
List<Assignment> assignments = accessControl.assignments().byRole(role).collect(toList());
if (!assignments.isEmpty()) {
tasks.add(new RemoveAssignments(dispatcher, assignments));
}
tasks.add(new CheckRoleMapping(dispatcher, role));
tasks.add(new RemoveRoleMapping(dispatcher, role, status -> status == 200));
tasks.add(new RemoveScopedRole(dispatcher, role));
series(new FlowContext(progress.get()), tasks).subscribe(new SuccessfulOutcome<FlowContext>(eventBus, resources) {
@Override
public void onSuccess(FlowContext context) {
MessageEvent.fire(eventBus, Message.success(resources.messages().removeResourceSuccess(type, role.getName())));
accessControl.reload(() -> {
refresh(RefreshMode.CLEAR_SELECTION);
eventBus.fireEvent(new RolesChangedEvent());
});
}
});
}
Aggregations