use of org.jboss.hal.resources.Resources in project console by hal.
the class OtherSettingsPresenter method addKeyManager.
// ------------------------------------------------------ key manager
void addKeyManager() {
Metadata metadata = metadataRegistry.lookup(KEY_MANAGER_TEMPLATE);
Metadata crMetadata = metadata.forComplexAttribute(CREDENTIAL_REFERENCE, true);
crMetadata.copyComplexAttributeAttributes(asList(STORE, ALIAS, TYPE, CLEAR_TEXT), metadata);
String id = Ids.build(Ids.ELYTRON_KEY_MANAGER, Ids.ADD);
NameItem nameItem = new NameItem();
ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).addOnly().unboundFormItem(nameItem, 0).include(STORE, ALIAS, TYPE, CLEAR_TEXT).unsorted().build();
form.addFormValidation(new RequireAtLeastOneAttributeValidation<>(asList(STORE, CLEAR_TEXT), resources));
new AddResourceDialog(resources.messages().addResourceTitle(Names.KEY_MANAGER), form, (name, model) -> {
if (model != null) {
move(model, STORE, CREDENTIAL_REFERENCE + "/" + STORE);
move(model, ALIAS, CREDENTIAL_REFERENCE + "/" + ALIAS);
move(model, TYPE, CREDENTIAL_REFERENCE + "/" + TYPE);
move(model, CLEAR_TEXT, CREDENTIAL_REFERENCE + "/" + CLEAR_TEXT);
}
ResourceAddress address = KEY_MANAGER_TEMPLATE.resolve(statementContext, nameItem.getValue());
crud.add(Names.KEY_MANAGER, name, address, model, (n, a) -> reload(KEY_MANAGER, nodes -> getView().updateResourceElement(KEY_MANAGER, nodes)));
}).show();
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class CacheViewImpl method initConfiguration.
private void initConfiguration(CacheType cacheType, MetadataRegistry metadataRegistry, Resources resources) {
Metadata metadata = metadataRegistry.lookup(cacheType.template);
Tabs tabs = new Tabs(Ids.build(cacheType.baseId, Ids.TAB_CONTAINER));
form = new ModelNodeForm.Builder<Cache>(Ids.build(cacheType.baseId, Ids.FORM), metadata).onSave((form, changedValues) -> presenter.saveCache(changedValues)).prepareReset(f -> presenter.resetCache(f)).build();
tabs.add(Ids.build(cacheType.baseId, Ids.TAB), resources.constants().attributes(), form.element());
registerAttachable(form);
components = new HashMap<>();
for (Component component : cacheType.components) {
String tabId = Ids.build(cacheType.baseId, component.baseId, Ids.TAB);
String formId = Ids.build(cacheType.baseId, component.baseId, Ids.FORM);
Metadata cm = metadataRegistry.lookup(cacheType.template.append(COMPONENT + "=" + component.resource));
Form<ModelNode> cf = new ModelNodeForm.Builder<>(formId, cm).singleton(() -> presenter.readComponent(component), () -> presenter.addComponent(component)).onSave((f, changedValues) -> presenter.saveComponent(component, changedValues)).prepareReset(f -> presenter.resetComponent(component, f)).prepareRemove(f -> presenter.removeComponent(component, f)).build();
tabs.add(tabId, component.type, cf.element());
components.put(component, cf);
}
registerAttachables(components.values());
HTMLElement section = section().add(h(1).textContent(cacheType.type)).add(p().textContent(metadata.getDescription().getDescription())).add(tabs).element();
navigation.addPrimary(Ids.build(cacheType.baseId, Ids.ITEM), Names.CONFIGURATION, pfIcon("settings"), section);
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class ResourcePanel method update.
void update(Node<Context> node, ResourceAddress address, Metadata metadata) {
SafeHtml safeHtml = SafeHtmlUtils.fromSafeConstant(metadata.getDescription().getDescription());
Elements.innerHtml(this.description, safeHtml);
tabs.setContent(dataId, PLACE_HOLDER_ELEMENT);
tabs.setContent(attributesId, PLACE_HOLDER_ELEMENT);
tabs.setContent(operationsId, PLACE_HOLDER_ELEMENT);
Elements.setVisible(tabs.element(), description.hasAttributes());
Elements.setVisible(empty, !description.hasAttributes());
if (description.hasAttributes()) {
Operation operation = new Operation.Builder(address, READ_RESOURCE_OPERATION).param(INCLUDE_RUNTIME, true).build();
dispatcher.execute(operation, result -> {
List<String> plainObjects = new ArrayList<>();
flattenDescription(metadata.getDescription().get(ATTRIBUTES), plainObjects);
flattenModel(result, plainObjects);
ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(Ids.build(Ids.MODEL_BROWSER, node.id, Ids.FORM), metadata).includeRuntime().showDeprecated().onSave((f, changedValues) -> modelBrowser.save(address, changedValues, metadata)).prepareReset(f -> modelBrowser.reset(address, f, metadata)).build();
tabs.setContent(dataId, form.element());
PatternFly.initComponents();
form.attach();
form.view(result);
});
tabs.setContent(attributesId, new AttributesTable(metadata.getDescription().getAttributes(ATTRIBUTES), resources).element());
if (!metadata.getDescription().getOperations().isEmpty()) {
tabs.setContent(operationsId, new OperationsTable(metadata.getDescription().getOperations(), resources).element());
}
}
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class CrudOperations method readChildren.
/**
* Read multiple different child resources using a composite operation. The steps in the composite result map to the
* position of the resource in the {@code resources} collection.
*
* @param address the fq address for the {@code read-children-resource} operation
* @param resources the child resources (not human readable, but the actual child resource name!)
* @param callback the callback which gets the composite result
*/
@JsIgnore
public void readChildren(ResourceAddress address, Iterable<String> resources, ReadCompositeCallback callback) {
List<Operation> operations = stream(resources.spliterator(), false).map(resource -> new Operation.Builder(address, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, resource).build()).collect(toList());
dispatcher.execute(new Composite(operations), callback::execute);
}
use of org.jboss.hal.resources.Resources in project console by hal.
the class CredentialReference method form.
/**
* Creates a form for the {@code credential-reference} complex attribute of a resource. The form is setup as a singleton
* form to add, save, reset and remove the complex attribute.
*
* @param baseId base ID used for the generated form and add resource dialog
* @param metadata the metadata of the resource which contains the {@code credential-reference} attribute
* @param crName the name of the credential-reference complex attribute
* @param alternativeName the name of the alternative attribute
* @param alternativeValue the value of the alternative attribute
* @param address the fully qualified address of the resource used for the CRUD actions
* @param callback the callback executed after the {@code credential-reference} attributes has been added, saved, reset or
* removed
*/
public Form<ModelNode> form(String baseId, Metadata metadata, String crName, String alternativeName, Supplier<String> alternativeValue, Supplier<ResourceAddress> address, Callback callback) {
String credentialReferenceName = crName == null ? CREDENTIAL_REFERENCE : crName;
Metadata crMetadata = metadata.forComplexAttribute(credentialReferenceName);
EmptyState.Builder emptyStateBuilder = new EmptyState.Builder(Ids.build(baseId, credentialReferenceName, Ids.FORM, Ids.EMPTY), resources.constants().noResource());
if (crMetadata.getSecurityContext().isWritable()) {
emptyStateBuilder.primaryAction(resources.constants().add(), () -> {
if (alternativeName != null && alternativeValue != null && !Strings.isNullOrEmpty(alternativeValue.get())) {
String alternativeLabel = new LabelBuilder().label(alternativeName);
DialogFactory.showConfirmation(resources.messages().addResourceTitle(Names.CREDENTIAL_REFERENCE), resources.messages().credentialReferenceAddConfirmation(alternativeLabel), () -> setTimeout(o -> addCredentialReference(baseId, crMetadata, credentialReferenceName, alternativeName, address, callback), SHORT_TIMEOUT));
} else {
addCredentialReference(baseId, crMetadata, credentialReferenceName, null, address, callback);
}
}, Constraint.executable(metadata.getTemplate(), ADD)).description(resources.messages().noResource());
} else {
emptyStateBuilder.description(resources.constants().restricted());
}
EmptyState noCredentialReference = emptyStateBuilder.build();
ModelNodeForm.Builder<ModelNode> formBuilder = new ModelNodeForm.Builder<>(Ids.build(baseId, credentialReferenceName, Ids.FORM), crMetadata).include(STORE, ALIAS, CLEAR_TEXT, TYPE).unsorted().singleton(() -> {
ResourceAddress fqAddress = address.get();
Operation operation = null;
if (fqAddress != null && crMetadata.getSecurityContext().isReadable()) {
operation = new Operation.Builder(address.get(), READ_ATTRIBUTE_OPERATION).param(NAME, credentialReferenceName).build();
}
return operation;
}, noCredentialReference).onSave(((f, changedValues) -> {
ResourceAddress fqa = address.get();
if (fqa != null) {
if (changedValues.isEmpty()) {
MessageEvent.fire(eventBus, Message.warning(resources.messages().noChanges()));
callback.execute();
} else {
ca.save(credentialReferenceName, Names.CREDENTIAL_REFERENCE, fqa, f.getModel(), callback);
}
} else {
MessageEvent.fire(eventBus, Message.error(resources.messages().credentialReferenceAddressError()));
}
}));
// some credential-reference attributes are nillable=false, so only nillable=true may be removed
if (crMetadata.getDescription().get(NILLABLE).asBoolean()) {
formBuilder.prepareRemove(f -> {
ResourceAddress fqAddress = address.get();
if (fqAddress != null) {
ca.remove(credentialReferenceName, Names.CREDENTIAL_REFERENCE, fqAddress, new Form.FinishRemove<ModelNode>(f) {
@Override
public void afterRemove(Form<ModelNode> form) {
callback.execute();
}
});
} else {
MessageEvent.fire(eventBus, Message.error(resources.messages().credentialReferenceAddressError()));
}
});
}
Form<ModelNode> form = formBuilder.build();
form.addFormValidation(new CrFormValidation(alternativeName, alternativeValue, resources));
form.addFormValidation(new CrFormValuesValidation(resources));
return form;
}
Aggregations