diff --git a/jbpm-wb-integration/jbpm-wb-integration-api/src/main/java/org/jbpm/workbench/wi/dd/type/DDResourceTypeDefinition.java b/jbpm-wb-integration/jbpm-wb-integration-api/src/main/java/org/jbpm/workbench/wi/dd/type/DDResourceTypeDefinition.java deleted file mode 100644 index eecc3070a8..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-api/src/main/java/org/jbpm/workbench/wi/dd/type/DDResourceTypeDefinition.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.dd.type; - -import javax.enterprise.context.ApplicationScoped; - -import org.uberfire.backend.vfs.Path; -import org.uberfire.workbench.type.ResourceTypeDefinition; - -@ApplicationScoped -public class DDResourceTypeDefinition implements ResourceTypeDefinition { - - @Override - public String getShortName() { - return "kie deployment descriptor"; - } - - @Override - public String getDescription() { - return null; - } - - @Override - public String getPrefix() { - return "kie-deployment-descriptor"; - } - - @Override - public String getSuffix() { - return "xml"; - } - - @Override - public int getPriority() { - return 0; - } - - @Override - public String getSimpleWildcardPattern() { - return getPrefix() + "." + getSuffix(); - } - - @Override - public boolean accept(final Path path) { - return path.getFileName().equals(getPrefix() + "." + getSuffix()); - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-backend/src/main/java/org/jbpm/workbench/wi/backend/server/dd/DDEditorServiceImpl.java b/jbpm-wb-integration/jbpm-wb-integration-backend/src/main/java/org/jbpm/workbench/wi/backend/server/dd/DDEditorServiceImpl.java index e0b0f3ba9a..25bbc9187a 100644 --- a/jbpm-wb-integration/jbpm-wb-integration-backend/src/main/java/org/jbpm/workbench/wi/backend/server/dd/DDEditorServiceImpl.java +++ b/jbpm-wb-integration/jbpm-wb-integration-backend/src/main/java/org/jbpm/workbench/wi/backend/server/dd/DDEditorServiceImpl.java @@ -36,7 +36,6 @@ import org.jbpm.workbench.wi.dd.model.ItemObjectModel; import org.jbpm.workbench.wi.dd.model.Parameter; import org.jbpm.workbench.wi.dd.service.DDEditorService; -import org.jbpm.workbench.wi.dd.type.DDResourceTypeDefinition; import org.jbpm.workbench.wi.dd.validation.DeploymentDescriptorValidationMessage; import org.kie.internal.runtime.conf.AuditMode; import org.kie.internal.runtime.conf.DeploymentDescriptor; @@ -77,9 +76,6 @@ public class DDEditorServiceImpl @Inject private CommentedOptionFactory commentedOptionFactory; - @Inject - private DDResourceTypeDefinition resourceTypeDefinition; - @Override public DeploymentDescriptorModel load(Path path) { return super.loadContent(path); @@ -498,7 +494,7 @@ public void createIfNotExists(Path path) { @Override public boolean accepts(Path path) { - return this.resourceTypeDefinition.accept(path); + return path.getFileName().equals("kie-deployment-descriptor.xml"); } @Override diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/pom.xml b/jbpm-wb-integration/jbpm-wb-integration-client/pom.xml index 22d424265f..96b143de6c 100644 --- a/jbpm-wb-integration/jbpm-wb-integration-client/pom.xml +++ b/jbpm-wb-integration/jbpm-wb-integration-client/pom.xml @@ -91,6 +91,16 @@ jbpm-wb-common-client + + org.kie.workbench.screens + kie-wb-common-project-editor-api + + + + org.kie.workbench.screens + kie-wb-common-library-client + + org.kie.workbench.screens kie-wb-common-library-api @@ -170,6 +180,16 @@ errai-data-binding + + com.google.elemental2 + elemental2-dom + + + + com.google.elemental2 + elemental2-promise + + org.uberfire uberfire-commons-editor-client diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/CustomizedSettingsSections.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/CustomizedSettingsSections.java new file mode 100644 index 0000000000..1c10a184b7 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/CustomizedSettingsSections.java @@ -0,0 +1,75 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor; + +import java.util.Arrays; +import java.util.List; + +import javax.enterprise.context.Dependent; +import javax.inject.Inject; + +import org.kie.workbench.common.screens.library.client.settings.SettingsPresenter; +import org.kie.workbench.common.screens.library.client.settings.SettingsSections; +import org.kie.workbench.common.screens.library.client.settings.dependencies.DependenciesPresenter; +import org.kie.workbench.common.screens.library.client.settings.externaldataobjects.ExternalDataObjectsPresenter; +import org.kie.workbench.common.screens.library.client.settings.generalsettings.GeneralSettingsPresenter; +import org.kie.workbench.common.screens.library.client.settings.knowledgebases.KnowledgeBasesPresenter; +import org.kie.workbench.common.screens.library.client.settings.persistence.PersistencePresenter; +import org.kie.workbench.common.screens.library.client.settings.validation.ValidationPresenter; + +@Dependent +public class CustomizedSettingsSections implements SettingsSections { + + private final GeneralSettingsPresenter generalSettingsSection; + private final DependenciesPresenter dependenciesSettingsSection; + private final KnowledgeBasesPresenter knowledgeBasesSettingsSection; + private final ExternalDataObjectsPresenter externalDataObjectsSettingsSection; + private final ValidationPresenter validationSettingsSection; + private final DeploymentsSectionPresenter deploymentsSettingsSection; + private final PersistencePresenter persistenceSettingsSection; + + @Inject + public CustomizedSettingsSections(final GeneralSettingsPresenter generalSettingsSection, + final DependenciesPresenter dependenciesSettingsSection, + final KnowledgeBasesPresenter knowledgeBasesSettingsSection, + final ExternalDataObjectsPresenter externalDataObjectsSettingsSection, + final ValidationPresenter validationSettingsSection, + final DeploymentsSectionPresenter deploymentsSettingsSection, + final PersistencePresenter persistenceSettingsSection) { + + this.generalSettingsSection = generalSettingsSection; + this.dependenciesSettingsSection = dependenciesSettingsSection; + this.knowledgeBasesSettingsSection = knowledgeBasesSettingsSection; + this.externalDataObjectsSettingsSection = externalDataObjectsSettingsSection; + this.validationSettingsSection = validationSettingsSection; + this.deploymentsSettingsSection = deploymentsSettingsSection; + this.persistenceSettingsSection = persistenceSettingsSection; + } + + @Override + public List getList() { + return Arrays.asList( + generalSettingsSection, + dependenciesSettingsSection, + knowledgeBasesSettingsSection, + externalDataObjectsSettingsSection, + validationSettingsSection, + deploymentsSettingsSection, + persistenceSettingsSection + ); + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DDParametersPopup.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DDParametersPopup.java deleted file mode 100644 index 88dd7589cd..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DDParametersPopup.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor; - -import java.util.ArrayList; -import java.util.List; - -import com.google.gwt.cell.client.EditTextCell; -import com.google.gwt.cell.client.FieldUpdater; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.cellview.client.Column; -import com.google.gwt.user.cellview.client.TextHeader; -import com.google.gwt.user.client.Command; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.Widget; -import com.google.gwt.view.client.ListDataProvider; -import org.gwtbootstrap3.client.ui.Button; -import org.gwtbootstrap3.client.ui.FormGroup; -import org.gwtbootstrap3.client.ui.FormLabel; -import org.gwtbootstrap3.client.ui.HelpBlock; -import org.gwtbootstrap3.client.ui.Label; -import org.gwtbootstrap3.client.ui.constants.ButtonSize; -import org.gwtbootstrap3.client.ui.constants.ButtonType; -import org.gwtbootstrap3.client.ui.constants.IconType; -import org.gwtbootstrap3.client.ui.gwt.ButtonCell; -import org.gwtbootstrap3.client.ui.gwt.CellTable; -import org.jbpm.workbench.wi.client.i18n.Constants; -import org.jbpm.workbench.wi.dd.model.ItemObjectModel; -import org.jbpm.workbench.wi.dd.model.Parameter; -import org.uberfire.ext.widgets.common.client.common.popups.BaseModal; -import org.uberfire.ext.widgets.common.client.common.popups.footers.ModalFooterOKCancelButtons; - -import static org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentDescriptorViewImpl.PAGE_SIZE_UNLIMITED; - -public class DDParametersPopup extends BaseModal { - - private static DDParametersPopupBinder uiBinder = GWT.create(DDParametersPopupBinder.class); - - private final Command cancelCommand = () -> hide(); - - @UiField - FormGroup parametersGroup; - - @UiField(provided = true) - CellTable parametersTable = new CellTable<>(PAGE_SIZE_UNLIMITED); - - @UiField - HelpBlock parametersHelpInline; - - @UiField - Button addParameterButton; - - @UiField - FormLabel parametersLabel; - - private Command callbackCommand; - - private final Command okCommand = new Command() { - @Override - public void execute() { - if (callbackCommand != null) { - callbackCommand.execute(); - } - hide(); - } - }; - private final ModalFooterOKCancelButtons footer = new ModalFooterOKCancelButtons(okCommand, - cancelCommand); - - private ListDataProvider parametersDataProvider = new ListDataProvider(); - - public DDParametersPopup() { - setTitle(Constants.INSTANCE.DDParametersPopupTitle()); - setBody(uiBinder.createAndBindUi(DDParametersPopup.this)); - configureParametersTable(); - add(footer); - } - - public void setContent(final Command callbackCommand, - ItemObjectModel model) { - this.callbackCommand = callbackCommand; - this.parametersLabel.setTitle(Constants.INSTANCE.DeploymentDescriptorParameters() + model.getName()); - this.parametersDataProvider.getList().clear(); - if (model.getParameters() != null) { - this.parametersDataProvider.setList(model.getParameters()); - } - this.parametersDataProvider.refresh(); - } - - public List getContent() { - - return new ArrayList(parametersDataProvider.getList()); - } - - @UiHandler("addParameterButton") - public void onClickAddParameterButton(final ClickEvent event) { - parametersDataProvider.getList().add(new Parameter("java.lang.String", - "")); - } - - private void configureParametersTable() { - //Setup table - parametersTable.setStriped(true); - parametersTable.setCondensed(true); - parametersTable.setBordered(true); - parametersTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - final Column typeColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final Parameter item) { - return item.getType(); - } - }; - typeColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - Parameter object, - String value) { - if (value.equals("")) { - return; - } - object.setType(value); - } - }); - - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final Parameter item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - Parameter object, - String value) { - if (value.equals("")) { - return; - } - object.setValue(value); - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final Parameter item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final Parameter item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - parametersDataProvider.getList().remove(index); - } - } - }); - - parametersTable.addColumn(typeColumn, - new TextHeader(Constants.INSTANCE.Type())); - parametersTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Value())); - parametersTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - parametersDataProvider.addDataDisplay(parametersTable); - } - - interface DDParametersPopupBinder - extends - UiBinder { - - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DDParametersPopup.ui.xml b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DDParametersPopup.ui.xml deleted file mode 100644 index c52c2891e5..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DDParametersPopup.ui.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - .edit-cell input { - width: 95%; - text-align: left; - } - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorEditorPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorEditorPresenter.java deleted file mode 100644 index ecec3802a4..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorEditorPresenter.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor; - -import java.util.List; -import javax.enterprise.event.Event; -import javax.inject.Inject; - -import com.google.gwt.user.client.ui.IsWidget; -import org.guvnor.common.services.shared.validation.model.ValidationMessage; -import org.jboss.errai.common.client.api.Caller; -import org.jboss.errai.common.client.api.RemoteCallback; -import org.jboss.errai.ui.client.local.spi.TranslationService; -import org.jbpm.workbench.wi.client.editors.deployment.descriptor.type.DDResourceType; -import org.jbpm.workbench.wi.dd.model.DeploymentDescriptorModel; -import org.jbpm.workbench.wi.dd.service.DDEditorService; -import org.kie.workbench.common.screens.server.management.client.util.ClientRuntimeStrategy; -import org.kie.workbench.common.widgets.client.popups.validation.ValidationPopup; -import org.kie.workbench.common.widgets.client.resources.i18n.CommonConstants; -import org.kie.workbench.common.widgets.metadata.client.KieEditor; -import org.uberfire.backend.vfs.ObservablePath; -import org.uberfire.client.annotations.WorkbenchEditor; -import org.uberfire.client.annotations.WorkbenchMenu; -import org.uberfire.client.annotations.WorkbenchPartTitle; -import org.uberfire.client.annotations.WorkbenchPartTitleDecoration; -import org.uberfire.client.annotations.WorkbenchPartView; -import org.uberfire.client.views.pfly.multipage.PageImpl; -import org.uberfire.ext.widgets.common.client.callbacks.HasBusyIndicatorDefaultErrorCallback; -import org.uberfire.lifecycle.OnClose; -import org.uberfire.lifecycle.OnMayClose; -import org.uberfire.lifecycle.OnStartup; -import org.uberfire.mvp.Command; -import org.uberfire.mvp.ParameterizedCommand; -import org.uberfire.mvp.PlaceRequest; -import org.uberfire.workbench.events.NotificationEvent; -import org.uberfire.workbench.model.menu.Menus; - -@WorkbenchEditor(identifier = "org.kie.jbpmconsole.dd", supportedTypes = {DDResourceType.class}, priority = 101) -public class DeploymentDescriptorEditorPresenter extends KieEditor { - - private Caller ddEditorService; - - private DeploymentDescriptorView view; - - @Inject - private DDResourceType type; - - @Inject - private Event notification; - - @Inject - private ValidationPopup validationPopup; - - private DeploymentDescriptorModel model; - - private TranslationService translationService; - - @Inject - public DeploymentDescriptorEditorPresenter(final DeploymentDescriptorView baseView, - final Caller ddEditorService, - TranslationService translationService) { - super(baseView); - view = baseView; - this.translationService = translationService; - this.ddEditorService = ddEditorService; - } - - //This is called after the View's content has been loaded - public void onAfterViewLoaded() { - setOriginalHash(model.hashCode()); - } - - @OnStartup - public void onStartup(final ObservablePath path, - final PlaceRequest place) { - ddEditorService.call().createIfNotExists(path); - init(path, - place, - type); - fillPersistenceModes(); - fillAuditModes(); - fillRuntimeStrategies(translationService); - view.setSourceTabReadOnly(true); - view.setup(); - } - - protected void loadContent() { - view.showLoading(); - ddEditorService.call(new RemoteCallback() { - - @Override - public void callback(final DeploymentDescriptorModel content) { - //Path is set to null when the Editor is closed (which can happen before async calls complete). - if (versionRecordManager.getCurrentPath() == null) { - return; - } - - model = content; - resetEditorPages(content.getOverview()); - addSourcePage(); - - view.setContent(content); - onAfterViewLoaded(); - view.hideBusyIndicator(); - } - }, - getNoSuchFileExceptionErrorCallback()).load(versionRecordManager.getCurrentPath()); - } - - protected Command onValidate() { - return new Command() { - @Override - public void execute() { - ddEditorService.call(new RemoteCallback>() { - @Override - public void callback(final List results) { - if (results == null || results.isEmpty()) { - notification.fire(new NotificationEvent(CommonConstants.INSTANCE.ItemValidatedSuccessfully(), - NotificationEvent.NotificationType.SUCCESS)); - } else { - validationPopup.showTranslatedMessages(results); - } - } - }).validate(versionRecordManager.getCurrentPath(), - model); - } - }; - } - - protected void save() { - savePopUpPresenter.show(versionRecordManager.getCurrentPath(), - new ParameterizedCommand() { - @Override - public void execute(final String comment) { - view.showSaving(); - view.updateContent(model); - ddEditorService.call(getSaveSuccessCallback(model.hashCode()), - new HasBusyIndicatorDefaultErrorCallback(view)).save(versionRecordManager.getCurrentPath(), - model, - metadata, - comment); - } - } - ); - concurrentUpdateSessionInfo = null; - } - - protected void addSourcePage() { - addPage(new PageImpl(view.getSourceEditor(), - CommonConstants.INSTANCE.SourceTabTitle()) { - @Override - public void onFocus() { - onSourceTabSelected(); - } - - @Override - public void onLostFocus() { - - } - }); - } - - @Override - public void onSourceTabSelected() { - view.updateContent(model); - ddEditorService.call(new RemoteCallback() { - @Override - public void callback(String source) { - updateSource(source); - } - }).toSource(versionRecordManager.getCurrentPath(), - model); - } - - protected void fillRuntimeStrategies(TranslationService translationService) { - ClientRuntimeStrategy[] clientRuntimeStrategies = ClientRuntimeStrategy.values(); - for (ClientRuntimeStrategy clientRunTimeStrategy : clientRuntimeStrategies) { - view.addRuntimeStrategy(clientRunTimeStrategy.getValue(translationService), - clientRunTimeStrategy.name()); - } - } - - protected void fillPersistenceModes() { - view.addPersistenceMode("NONE", - "NONE"); - view.addPersistenceMode("JPA", - "JPA"); - } - - protected void fillAuditModes() { - view.addAuditMode("NONE", - "NONE"); - view.addAuditMode("JPA", - "JPA"); - view.addAuditMode("JMS", - "JMS"); - } - - protected void updateSource(String source) { - view.setSource(source); - } - - @WorkbenchPartView - public IsWidget getWidget() { - return super.getWidget(); - } - - @OnClose - public void onClose() { - this.versionRecordManager.clear(); - } - - @OnMayClose - public boolean checkIfDirty() { - view.updateContent(model); - return super.mayClose(model.hashCode()); - } - - @WorkbenchPartTitleDecoration - public IsWidget getTitle() { - return super.getTitle(); - } - - @WorkbenchPartTitle - public String getTitleText() { - return super.getTitleText(); - } - - @WorkbenchMenu - public Menus getMenus() { - return menus; - } - - protected void makeMenuBar() { - if (canUpdateProject()) { - fileMenuBuilder - .addSave(versionRecordManager.newSaveMenuItem(() -> onSave())); - } - - fileMenuBuilder - .addValidate(onValidate()) - .addNewTopLevelMenu(versionRecordManager.buildMenu()); - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorView.java deleted file mode 100644 index 67d6c35849..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorView.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor; - -import com.google.gwt.user.client.ui.IsWidget; -import com.google.gwt.user.client.ui.Widget; -import org.jbpm.workbench.wi.dd.model.DeploymentDescriptorModel; - -import org.kie.workbench.common.widgets.metadata.client.KieEditorView; - -public interface DeploymentDescriptorView extends KieEditorView, - IsWidget { - - void setup(); - - void setContent(final DeploymentDescriptorModel deploymentDescriptorModel); - - void updateContent(final DeploymentDescriptorModel deploymentDescriptorModel); - - boolean confirmClose(); - - Widget getSourceEditor(); - - void setSource(String source); - - void addRuntimeStrategy(String runtimeStrategyTitle, - String runmimeStrategyValue); - - void addPersistenceMode(String persistenceModeTitle, - String persistenceModeValue); - - void addAuditMode(String auditModeTitle, - String auditModeValue); - - void setSourceTabReadOnly(boolean readOnly); -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewImpl.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewImpl.java deleted file mode 100644 index c06649d380..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewImpl.java +++ /dev/null @@ -1,1376 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor; - -import java.util.ArrayList; - -import javax.inject.Inject; - -import org.gwtbootstrap3.client.ui.Button; -import org.gwtbootstrap3.client.ui.CheckBox; -import org.gwtbootstrap3.client.ui.FormGroup; -import org.gwtbootstrap3.client.ui.HelpBlock; -import org.gwtbootstrap3.client.ui.Label; -import org.gwtbootstrap3.client.ui.ListBox; -import org.gwtbootstrap3.client.ui.TextBox; -import org.gwtbootstrap3.client.ui.constants.ButtonSize; -import org.gwtbootstrap3.client.ui.constants.ButtonType; -import org.gwtbootstrap3.client.ui.constants.IconType; -import org.gwtbootstrap3.client.ui.gwt.ButtonCell; -import org.gwtbootstrap3.client.ui.gwt.CellTable; -import org.jbpm.workbench.wi.client.i18n.Constants; -import org.jbpm.workbench.wi.dd.model.DeploymentDescriptorModel; -import org.jbpm.workbench.wi.dd.model.ItemObjectModel; -import org.kie.workbench.common.widgets.client.resources.i18n.CommonConstants; -import org.kie.workbench.common.widgets.metadata.client.KieEditorViewImpl; -import org.uberfire.ext.widgets.common.client.ace.AceEditorMode; -import org.uberfire.ext.widgets.core.client.editors.texteditor.TextEditorView; - -import com.google.gwt.cell.client.EditTextCell; -import com.google.gwt.cell.client.FieldUpdater; -import com.google.gwt.cell.client.SelectionCell; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.cellview.client.Column; -import com.google.gwt.user.cellview.client.TextHeader; -import com.google.gwt.user.client.Command; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.Widget; -import com.google.gwt.view.client.ListDataProvider; - -public class DeploymentDescriptorViewImpl extends KieEditorViewImpl implements DeploymentDescriptorView { - - public static final int PAGE_SIZE_UNLIMITED = Integer.MAX_VALUE; - private static DeploymentDescriptorBinder uiBinder = GWT.create(DeploymentDescriptorBinder.class); - - @UiField - FormGroup persistenceUnitGroup; - - @UiField - TextBox persistenceUnitTextBox; - - @UiField - HelpBlock persistenceUnitHelpInline; - - @UiField - FormGroup auditPersistenceUnitGroup; - - @UiField - TextBox auditPersistenceUnitTextBox; - - @UiField - HelpBlock auditPersistenceUnitHelpInline; - - @UiField - FormGroup persistenceModeGroup; - - @UiField - HelpBlock persistenceModeHelpInline; - - @UiField - ListBox persistenceModeDropdown; - - @UiField - FormGroup auditModeGroup; - - @UiField - HelpBlock auditModeHelpInline; - - @UiField - ListBox auditModeDropdown; - - @UiField - FormGroup runtimeStrategyGroup; - - @UiField - HelpBlock runtimeStrategyHelpInline; - - @UiField - ListBox runtimeStrategyDropdown; - - // tables for items - @UiField - FormGroup marshalStrategyGroup; - - @UiField - Button addMarshalStrategyButton; - - @UiField - HelpBlock marshalStrategyHelpInline; - - @UiField(provided = true) - CellTable marshalStrategyTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider marshalStrategyDataProvider = new ListDataProvider(); - - // event listeners - @UiField - FormGroup eventListenersGroup; - - @UiField - Button addEventListenersButton; - - @UiField - HelpBlock eventListenersHelpInline; - - @UiField(provided = true) - CellTable eventListenersTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider eventListenersDataProvider = new ListDataProvider(); - - // globals - @UiField - FormGroup globalsGroup; - - @UiField - Button addGlobalsButton; - - @UiField - HelpBlock globalsHelpInline; - - @UiField(provided = true) - CellTable globalsTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider globalsDataProvider = new ListDataProvider(); - - // work item handlers - @UiField - FormGroup workItemHandlersGroup; - - @UiField - Button addWorkItemHandlersButton; - - @UiField - HelpBlock workItemHandlersHelpInline; - - @UiField(provided = true) - CellTable workItemHandlersTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider workItemHandlersDataProvider = new ListDataProvider(); - - // task event listeners - @UiField - FormGroup taskEventListenersGroup; - - @UiField - Button addTaskEventListenersButton; - - @UiField - HelpBlock taskEventListenersHelpInline; - - @UiField(provided = true) - CellTable taskEventListenersTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider taskEventListenersDataProvider = new ListDataProvider(); - - // environment entries - @UiField - FormGroup environmentEntriesGroup; - - @UiField - Button addEnvironmentEntriesButton; - - @UiField - HelpBlock environmentEntriesHelpInline; - - @UiField(provided = true) - CellTable environmentEntriesTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider environmentEntriesDataProvider = new ListDataProvider(); - - // configuration - @UiField - FormGroup configurationGroup; - - @UiField - Button addConfigurationButton; - - @UiField - HelpBlock configurationHelpInline; - - @UiField(provided = true) - CellTable configurationTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider configurationDataProvider = new ListDataProvider(); - - // required roles - @UiField - FormGroup requiredRolesGroup; - - @UiField - Button addRequiredRolesButton; - - @UiField - HelpBlock requiredRolesHelpInline; - - @UiField(provided = true) - CellTable requiredRolesTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider requiredRolesDataProvider = new ListDataProvider(); - - // remoteable classes - @UiField - FormGroup remoteableClassesGroup; - - @UiField - Button addRemoteableClassesButton; - - @UiField - HelpBlock remoteableClassesHelpInline; - - @UiField(provided = true) - CellTable remoteableClassesTable = new CellTable(PAGE_SIZE_UNLIMITED); - - // pkg for tests - ListDataProvider remoteableClassesDataProvider = new ListDataProvider(); - - @UiField - FormGroup limitSerializationClassesGroup; - - @UiField - HelpBlock limitSerializationClassesHelpInline; - - @UiField - CheckBox limitSerializationClassesCheckBox; - - private Constants constants = Constants.INSTANCE; - - @Inject - private DDParametersPopup ddParametersPopup; - - @Inject - private TextEditorView xmlViewer; - - public DeploymentDescriptorViewImpl() { - initWidget(uiBinder.createAndBindUi(this)); - } - - public static boolean getLimitSerializationClassesCheckBoxValue(DeploymentDescriptorModel deploymentDescriptorModel) { - Boolean limitSerializationClasses = deploymentDescriptorModel.getLimitSerializationClasses(); - if (limitSerializationClasses == null) { - limitSerializationClasses = true; - } - return limitSerializationClasses; - } - - @Override - public void setup() { - configureMarshalingTable(); - - configureEventListenersTable(); - - configureGlobalsTable(); - - configureWorkItemHandlersTable(); - - configureTaskEventListenersTable(); - - configureEnvironmentEntriesTable(); - - configureConfigurationTable(); - - configureRequiredRolesTable(); - - configureRemoteableClassesTable(); - } - - @Override - public void setContent(DeploymentDescriptorModel deploymentDescriptorModel) { - persistenceUnitTextBox.setText(deploymentDescriptorModel.getPersistenceUnitName()); - auditPersistenceUnitTextBox.setText(deploymentDescriptorModel.getAuditPersistenceUnitName()); - setSelectedValue(persistenceModeDropdown, - deploymentDescriptorModel.getPersistenceMode()); - setSelectedValue(auditModeDropdown, - deploymentDescriptorModel.getAuditMode()); - setSelectedValue(runtimeStrategyDropdown, - deploymentDescriptorModel.getRuntimeStrategy()); - - if (deploymentDescriptorModel.getMarshallingStrategies() != null) { - marshalStrategyDataProvider.setList(deploymentDescriptorModel.getMarshallingStrategies()); - } - - if (deploymentDescriptorModel.getEventListeners() != null) { - eventListenersDataProvider.setList(deploymentDescriptorModel.getEventListeners()); - } - - if (deploymentDescriptorModel.getGlobals() != null) { - globalsDataProvider.setList(deploymentDescriptorModel.getGlobals()); - } - - if (deploymentDescriptorModel.getWorkItemHandlers() != null) { - workItemHandlersDataProvider.setList(deploymentDescriptorModel.getWorkItemHandlers()); - } - - if (deploymentDescriptorModel.getTaskEventListeners() != null) { - taskEventListenersDataProvider.setList(deploymentDescriptorModel.getTaskEventListeners()); - } - - if (deploymentDescriptorModel.getEnvironmentEntries() != null) { - environmentEntriesDataProvider.setList(deploymentDescriptorModel.getEnvironmentEntries()); - } - - if (deploymentDescriptorModel.getConfiguration() != null) { - configurationDataProvider.setList(deploymentDescriptorModel.getConfiguration()); - } - - if (deploymentDescriptorModel.getRequiredRoles() != null) { - requiredRolesDataProvider.setList(deploymentDescriptorModel.getRequiredRoles()); - } - - if (deploymentDescriptorModel.getRemotableClasses() != null) { - remoteableClassesDataProvider.setList(deploymentDescriptorModel.getRemotableClasses()); - } - boolean limitSerializationClasses = getLimitSerializationClassesCheckBoxValue(deploymentDescriptorModel); - limitSerializationClassesCheckBox.setValue(limitSerializationClasses); - } - - @Override - public void updateContent(DeploymentDescriptorModel deploymentDescriptorModel) { - deploymentDescriptorModel.setAuditPersistenceUnitName(auditPersistenceUnitTextBox.getText()); - deploymentDescriptorModel.setPersistenceUnitName(persistenceUnitTextBox.getText()); - - int pmSelected = persistenceModeDropdown.getSelectedIndex(); - deploymentDescriptorModel.setPersistenceMode(persistenceModeDropdown.getItemText(pmSelected)); - - int amSelected = auditModeDropdown.getSelectedIndex(); - deploymentDescriptorModel.setAuditMode(auditModeDropdown.getItemText(amSelected)); - - int rsSelected = runtimeStrategyDropdown.getSelectedIndex(); - deploymentDescriptorModel.setRuntimeStrategy(runtimeStrategyDropdown.getValue(rsSelected)); - - deploymentDescriptorModel.setMarshallingStrategies(marshalStrategyDataProvider.getList()); - - deploymentDescriptorModel.setEventListeners(eventListenersDataProvider.getList()); - - deploymentDescriptorModel.setGlobals(globalsDataProvider.getList()); - - deploymentDescriptorModel.setWorkItemHandlers(workItemHandlersDataProvider.getList()); - - deploymentDescriptorModel.setTaskEventListeners(taskEventListenersDataProvider.getList()); - - deploymentDescriptorModel.setEnvironmentEntries(environmentEntriesDataProvider.getList()); - - deploymentDescriptorModel.setConfiguration(configurationDataProvider.getList()); - - deploymentDescriptorModel.setRequiredRoles(requiredRolesDataProvider.getList()); - - deploymentDescriptorModel.setRemotableClasses(remoteableClassesDataProvider.getList()); - - deploymentDescriptorModel.setLimitSerializationClasses(limitSerializationClassesCheckBox.getValue()); - } - - @Override - public boolean confirmClose() { - return Window.confirm(CommonConstants.INSTANCE.DiscardUnsavedData()); - } - - private Column setUpResolverColumn() { - ArrayList options = new ArrayList(); - options.add("----"); - options.add(ItemObjectModel.REFLECTION_RESOLVER); - options.add(ItemObjectModel.MVEL_RESOLVER); - - Column column = new Column(new SelectionCell(options)) { - @Override - public String getValue(ItemObjectModel input) { - if (input.getResolver() == null) { - return "----"; - } else { - return input.getResolver(); - } - } - }; - - column.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel model, - String value) { - model.setResolver(value); - } - }); - - return column; - } - - @UiHandler("addMarshalStrategyButton") - public void onClickAddMarshalStrategyButton(final ClickEvent event) { - marshalStrategyDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureMarshalingTable() { - //Setup table - marshalStrategyTable.setStriped(true); - marshalStrategyTable.setCondensed(true); - marshalStrategyTable.setBordered(true); - marshalStrategyTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - marshalStrategyDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - marshalStrategyDataProvider.getList().remove(index); - } - } - }); - - marshalStrategyTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - marshalStrategyTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - marshalStrategyTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - marshalStrategyTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - marshalStrategyDataProvider.addDataDisplay(marshalStrategyTable); - } - - @UiHandler("addEventListenersButton") - public void onClickAddEventListenersButton(final ClickEvent event) { - eventListenersDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureEventListenersTable() { - //Setup table - eventListenersTable.setStriped(true); - eventListenersTable.setCondensed(true); - eventListenersTable.setBordered(true); - eventListenersTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - eventListenersDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - eventListenersDataProvider.getList().remove(index); - } - } - }); - - eventListenersTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - eventListenersTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - eventListenersTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - eventListenersTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - eventListenersDataProvider.addDataDisplay(eventListenersTable); - } - - @UiHandler("addGlobalsButton") - public void onClickAddGlobalsButton(final ClickEvent event) { - globalsDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureGlobalsTable() { - //Setup table - globalsTable.setStriped(true); - globalsTable.setCondensed(true); - globalsTable.setBordered(true); - globalsTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - - final Column nameColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getName(); - } - }; - nameColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setName(value); - } - }); - - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - globalsDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - globalsDataProvider.getList().remove(index); - } - } - }); - - globalsTable.addColumn(nameColumn, - new TextHeader(Constants.INSTANCE.Name())); - globalsTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - globalsTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - globalsTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - globalsTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - globalsDataProvider.addDataDisplay(globalsTable); - } - - @UiHandler("addWorkItemHandlersButton") - public void onClickAddWorkItemHandlersButton(final ClickEvent event) { - workItemHandlersDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureWorkItemHandlersTable() { - //Setup table - workItemHandlersTable.setStriped(true); - workItemHandlersTable.setCondensed(true); - workItemHandlersTable.setBordered(true); - workItemHandlersTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - - final Column nameColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getName(); - } - }; - nameColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setName(value); - } - }); - - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + "(" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + "(0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - workItemHandlersDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - workItemHandlersDataProvider.getList().remove(index); - } - } - }); - - workItemHandlersTable.addColumn(nameColumn, - new TextHeader(Constants.INSTANCE.Name())); - workItemHandlersTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - workItemHandlersTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - workItemHandlersTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - workItemHandlersTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - workItemHandlersDataProvider.addDataDisplay(workItemHandlersTable); - } - - @UiHandler("addTaskEventListenersButton") - public void onClickAddTaskEventListenersButton(final ClickEvent event) { - taskEventListenersDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureTaskEventListenersTable() { - //Setup table - taskEventListenersTable.setStriped(true); - taskEventListenersTable.setCondensed(true); - taskEventListenersTable.setBordered(true); - taskEventListenersTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + "(" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + "(0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - taskEventListenersDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - taskEventListenersDataProvider.getList().remove(index); - } - } - }); - - taskEventListenersTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - taskEventListenersTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - taskEventListenersTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - taskEventListenersTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - taskEventListenersDataProvider.addDataDisplay(taskEventListenersTable); - } - - @UiHandler("addEnvironmentEntriesButton") - public void onClickAddEnvironmentEntriesButton(final ClickEvent event) { - environmentEntriesDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureEnvironmentEntriesTable() { - //Setup table - environmentEntriesTable.setStriped(true); - environmentEntriesTable.setCondensed(true); - environmentEntriesTable.setBordered(true); - environmentEntriesTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - - final Column nameColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getName(); - } - }; - nameColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setName(value); - } - }); - - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - environmentEntriesDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - environmentEntriesDataProvider.getList().remove(index); - } - } - }); - - environmentEntriesTable.addColumn(nameColumn, - new TextHeader(Constants.INSTANCE.Name())); - environmentEntriesTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - environmentEntriesTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - environmentEntriesTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - environmentEntriesTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - environmentEntriesDataProvider.addDataDisplay(environmentEntriesTable); - } - - @UiHandler("addConfigurationButton") - public void onClickAddConfigurationButton(final ClickEvent event) { - configurationDataProvider.getList().add(new ItemObjectModel("", - constants.EnterValue(), - constants.EnterResolverType(), - null)); - } - - private void configureConfigurationTable() { - //Setup table - configurationTable.setStriped(true); - configurationTable.setCondensed(true); - configurationTable.setBordered(true); - configurationTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - - final Column nameColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getName(); - } - }; - nameColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setName(value); - } - }); - - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final ItemObjectModel item) { - return item.getValue(); - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - ItemObjectModel object, - String value) { - object.setValue(value); - } - }); - - final Column resolverColumn = setUpResolverColumn(); - - final ButtonCell parametersMSButton = new ButtonCell(IconType.ADJUST, - ButtonType.PRIMARY, - ButtonSize.SMALL); - final Column parametersColumn = new Column(parametersMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - if (item.getParameters() != null) { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (" + item.getParameters().size() + ")"; - } else { - return Constants.INSTANCE.DeploymentDescriptorParameters() + " (0)"; - } - } - }; - parametersColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - if (ItemObjectModel.REFLECTION_RESOLVER.equals(item.getResolver())) { - ddParametersPopup.setContent(new Command() { - - @Override - public void execute() { - item.setParameters(ddParametersPopup.getContent()); - configurationDataProvider.refresh(); - } - }, - item); - ddParametersPopup.show(); - } else { - Window.alert(Constants.INSTANCE.NoParamResolver()); - } - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final ItemObjectModel item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final ItemObjectModel item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - configurationDataProvider.getList().remove(index); - } - } - }); - - configurationTable.addColumn(nameColumn, - new TextHeader(Constants.INSTANCE.Name())); - configurationTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Identifier())); - configurationTable.addColumn(resolverColumn, - new TextHeader(Constants.INSTANCE.Resolver())); - configurationTable.addColumn(parametersColumn, - Constants.INSTANCE.DeploymentDescriptorParameters()); - configurationTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - configurationDataProvider.addDataDisplay(configurationTable); - } - - @UiHandler("addRequiredRolesButton") - public void onClickAddRolesButton(final ClickEvent event) { - requiredRolesDataProvider.getList().add(""); - } - - private void configureRequiredRolesTable() { - //Setup table - requiredRolesTable.setStriped(true); - requiredRolesTable.setCondensed(true); - requiredRolesTable.setBordered(true); - requiredRolesTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final String item) { - return item; - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - String object, - String value) { - requiredRolesDataProvider.getList().remove(index); - requiredRolesDataProvider.getList().add(index, - value); - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final String item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final String item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - requiredRolesDataProvider.getList().remove(index); - } - } - }); - - requiredRolesTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Value())); - requiredRolesTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - requiredRolesDataProvider.addDataDisplay(requiredRolesTable); - } - - @UiHandler("addRemoteableClassesButton") - public void onClickAddRemoteableClassesButton(final ClickEvent event) { - remoteableClassesDataProvider.getList().add(""); - } - - private void configureRemoteableClassesTable() { - //Setup table - remoteableClassesTable.setStriped(true); - remoteableClassesTable.setCondensed(true); - remoteableClassesTable.setBordered(true); - remoteableClassesTable.setEmptyTableWidget(new Label(Constants.INSTANCE.NoDataDefined())); - - //Columns - final Column valueColumn = new Column(new EditTextCell()) { - - @Override - public String getValue(final String item) { - return item; - } - }; - valueColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, - String object, - String value) { - remoteableClassesDataProvider.getList().remove(index); - remoteableClassesDataProvider.getList().add(index, - value); - } - }); - - final ButtonCell deleteMSButton = new ButtonCell(IconType.TRASH, - ButtonType.DANGER, - ButtonSize.SMALL); - final Column deleteGlobalColumn = new Column(deleteMSButton) { - @Override - public String getValue(final String item) { - return Constants.INSTANCE.Remove(); - } - }; - deleteGlobalColumn.setFieldUpdater(new FieldUpdater() { - public void update(final int index, - final String item, - final String value) { - - if (Window.confirm(Constants.INSTANCE.PromptForRemoval())) { - remoteableClassesDataProvider.getList().remove(index); - } - } - }); - - remoteableClassesTable.addColumn(valueColumn, - new TextHeader(Constants.INSTANCE.Value())); - remoteableClassesTable.addColumn(deleteGlobalColumn, - Constants.INSTANCE.Remove()); - - //Link data - remoteableClassesDataProvider.addDataDisplay(remoteableClassesTable); - } - - private void setSelectedValue(final ListBox listbox, - final String value) { - for (int i = 0; i < listbox.getItemCount(); i++) { - if (listbox.getValue(i).equals(value)) { - listbox.setSelectedIndex(i); - return; - } - } - } - - @Override - public void addRuntimeStrategy(String runtimeStrategyTitle, - String runtimeStrategyValue) { - runtimeStrategyDropdown.addItem(runtimeStrategyTitle, - runtimeStrategyValue); - } - - @Override - public void addPersistenceMode(String persistenceModeTitle, - String persistenceModeValue) { - persistenceModeDropdown.addItem(persistenceModeTitle, - persistenceModeValue); - } - - @Override - public void addAuditMode(String auditModeTitle, - String auditModeValue) { - auditModeDropdown.addItem(auditModeTitle, - auditModeValue); - } - - @Override - public void setSource(String source) { - xmlViewer.setContent(source, - AceEditorMode.XML); - } - - @Override - public Widget getSourceEditor() { - return xmlViewer; - } - - @Override - public void setSourceTabReadOnly(boolean readOnly) { - xmlViewer.setReadOnly(readOnly); - } - - interface DeploymentDescriptorBinder - extends - UiBinder { - - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewImpl.ui.xml b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewImpl.ui.xml deleted file mode 100644 index 06564656d2..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewImpl.ui.xml +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - .edit-cell input { - width: 95%; - text-align: left; - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionPresenter.java new file mode 100644 index 0000000000..c70383f72c --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionPresenter.java @@ -0,0 +1,409 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor; + +import java.util.ArrayList; +import java.util.function.Supplier; +import javax.enterprise.context.Dependent; +import javax.enterprise.event.Event; +import javax.inject.Inject; + +import elemental2.dom.Element; +import elemental2.promise.Promise; +import org.guvnor.common.services.project.client.context.WorkspaceProjectContext; +import org.jboss.errai.common.client.api.Caller; +import org.jboss.errai.ioc.client.api.ManagedInstance; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.items.NamedObjectItemPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.items.ObjectItemPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.items.RequiredRolesListItemPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.AuditMode; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.PersistenceMode; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.Resolver; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.RuntimeStrategy; +import org.jbpm.workbench.wi.dd.model.DeploymentDescriptorModel; +import org.jbpm.workbench.wi.dd.model.ItemObjectModel; +import org.jbpm.workbench.wi.dd.service.DDEditorService; +import org.kie.workbench.common.screens.library.client.resources.i18n.LibraryConstants; +import org.kie.workbench.common.screens.library.client.settings.SettingsPresenter; +import org.kie.workbench.common.screens.library.client.settings.SettingsSectionChange; +import org.kie.workbench.common.screens.library.client.settings.util.KieEnumSelectElement; +import org.kie.workbench.common.screens.library.client.settings.util.ListPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.modal.doublevalue.AddDoubleValueModal; +import org.kie.workbench.common.screens.library.client.settings.util.modal.single.AddSingleValueModal; +import org.kie.workbench.common.screens.projecteditor.model.ProjectScreenModel; +import org.uberfire.backend.vfs.ObservablePath; +import org.uberfire.backend.vfs.PathFactory; +import org.uberfire.client.promise.Promises; +import org.uberfire.workbench.events.NotificationEvent; + +import static org.uberfire.workbench.events.NotificationEvent.NotificationType.WARNING; + +@Dependent +public class DeploymentsSectionPresenter extends SettingsPresenter.Section { + + private final View view; + + private final WorkspaceProjectContext projectContext; + private final Caller ddEditorService; + private final ManagedInstance observablePaths; + private final MarshallingStrategiesListPresenter marshallingStrategyPresenters; + private final EventListenersListPresenter eventListenerPresenters; + private final GlobalsListPresenter globalPresenters; + private final RequiredRolesListPresenter requiredRolePresenters; + private final AddSingleValueModal addMarshallingStrategyModal; + private final AddSingleValueModal addEventListenerModal; + private final AddDoubleValueModal addGlobalModal; + private final AddSingleValueModal addRequiredRoleModal; + private final KieEnumSelectElement runtimeStrategiesSelect; + private final KieEnumSelectElement persistenceModesSelect; + private final KieEnumSelectElement auditModesSelect; + private final Event notificationEvent; + + private ObservablePath pathToDeploymentsXml; + ObservablePath.OnConcurrentUpdateEvent concurrentDeploymentsXmlUpdateInfo; + DeploymentDescriptorModel model; + + public interface View extends SettingsPresenter.View.Section { + + Element getMarshallingStrategiesTable(); + + Element getEventListenersTable(); + + Element getGlobalsTable(); + + Element getRequiredRolesTable(); + + void setPersistenceUnitName(final String persistenceUnitName); + + void setAuditPersistenceUnitName(final String auditPersistenceUnitName); + + Element getRuntimeStrategiesContainer(); + + Element getPersistenceModesContainer(); + + Element getAuditModesContainer(); + + String getConcurrentUpdateMessage(); + } + + @Inject + public DeploymentsSectionPresenter(final View view, + final Promises promises, + final SettingsPresenter.MenuItem menuItem, + final AddSingleValueModal addMarshallingStrategyModal, + final AddSingleValueModal addEventListenerModal, + final AddDoubleValueModal addGlobalModal, + final AddSingleValueModal addRequiredRoleModal, + final KieEnumSelectElement runtimeStrategiesSelect, + final KieEnumSelectElement persistenceModesSelect, + final KieEnumSelectElement auditModesSelect, + final WorkspaceProjectContext projectContext, + final Caller ddEditorService, + final ManagedInstance observablePaths, + final Event settingsSectionChangeEvent, + final MarshallingStrategiesListPresenter marshallingStrategyPresenters, + final EventListenersListPresenter eventListenerPresenters, + final GlobalsListPresenter globalPresenters, + final RequiredRolesListPresenter requiredRolePresenters, Event notificationEvent) { + + super(settingsSectionChangeEvent, menuItem, promises); + this.view = view; + this.addMarshallingStrategyModal = addMarshallingStrategyModal; + this.addEventListenerModal = addEventListenerModal; + this.addGlobalModal = addGlobalModal; + this.addRequiredRoleModal = addRequiredRoleModal; + this.runtimeStrategiesSelect = runtimeStrategiesSelect; + this.persistenceModesSelect = persistenceModesSelect; + this.auditModesSelect = auditModesSelect; + this.projectContext = projectContext; + this.ddEditorService = ddEditorService; + this.observablePaths = observablePaths; + this.marshallingStrategyPresenters = marshallingStrategyPresenters; + this.eventListenerPresenters = eventListenerPresenters; + this.globalPresenters = globalPresenters; + this.requiredRolePresenters = requiredRolePresenters; + this.notificationEvent = notificationEvent; + } + + @Override + public Promise setup(final ProjectScreenModel ignore) { + return setup(); + } + + Promise setup() { + + view.init(this); + + final String deploymentsXmlUri = projectContext.getActiveWorkspaceProject().get() + .getRootPath().toURI() + "src/main/resources/META-INF/kie-deployment-descriptor.xml"; + + pathToDeploymentsXml = observablePaths.get().wrap(PathFactory.newPath( + "kie-deployment-descriptor.xml", + deploymentsXmlUri)); + + concurrentDeploymentsXmlUpdateInfo = null; + pathToDeploymentsXml.onConcurrentUpdate(info -> concurrentDeploymentsXmlUpdateInfo = info); + + return createIfNotExists().then(ignore -> loadDeploymentDescriptor()).then(model -> { + + this.model = model; + + setupRuntimeStrategiesSelect(model); + view.setPersistenceUnitName(model.getPersistenceUnitName()); + setupPersistenceModesSelect(model); + view.setAuditPersistenceUnitName(model.getAuditPersistenceUnitName()); + setupAuditModeSelect(model); + + setupMarshallingStrategiesTable(model); + setupEventListenersTable(model); + setupGlobalsTable(model); + setupRequiredRolesTable(model); + + return promises.resolve(); + }); + } + + void setupAuditModeSelect(final DeploymentDescriptorModel model) { + auditModesSelect.setup( + view.getAuditModesContainer(), + AuditMode.values(), + AuditMode.valueOf(model.getAuditMode()), + auditMode -> { + model.setAuditMode(auditMode.name()); + fireChangeEvent(); + }); + } + + void setupPersistenceModesSelect(final DeploymentDescriptorModel model) { + persistenceModesSelect.setup( + view.getPersistenceModesContainer(), + PersistenceMode.values(), + PersistenceMode.valueOf(model.getPersistenceMode()), + persistenceMode -> { + model.setPersistenceMode(persistenceMode.name()); + fireChangeEvent(); + }); + } + + void setupRuntimeStrategiesSelect(final DeploymentDescriptorModel model) { + runtimeStrategiesSelect.setup( + view.getRuntimeStrategiesContainer(), + RuntimeStrategy.values(), + RuntimeStrategy.valueOf(model.getRuntimeStrategy()), + runtimeStrategy -> { + model.setRuntimeStrategy(runtimeStrategy.name()); + fireChangeEvent(); + }); + } + + void setupMarshallingStrategiesTable(final DeploymentDescriptorModel model) { + + addMarshallingStrategyModal.setup(LibraryConstants.AddMarshallingStrategy, LibraryConstants.Id); + + if (model.getMarshallingStrategies() == null) { + model.setMarshallingStrategies(new ArrayList<>()); + } + + marshallingStrategyPresenters.setup( + view.getMarshallingStrategiesTable(), + model.getMarshallingStrategies(), + (marshallingStrategy, presenter) -> presenter.setup(marshallingStrategy, this)); + } + + void setupEventListenersTable(final DeploymentDescriptorModel model) { + + addEventListenerModal.setup(LibraryConstants.AddEventListener, LibraryConstants.Id); + + if (model.getEventListeners() == null) { + model.setEventListeners(new ArrayList<>()); + } + + eventListenerPresenters.setup( + view.getEventListenersTable(), + model.getEventListeners(), + (eventListener, presenter) -> presenter.setup(eventListener, this)); + } + + void setupGlobalsTable(final DeploymentDescriptorModel model) { + + addGlobalModal.setup(LibraryConstants.AddGlobal, LibraryConstants.Name, LibraryConstants.Value); + + if (model.getGlobals() == null) { + model.setGlobals(new ArrayList<>()); + } + + globalPresenters.setup( + view.getGlobalsTable(), + model.getGlobals(), + (global, presenter) -> presenter.setup(global, this)); + } + + void setupRequiredRolesTable(final DeploymentDescriptorModel model) { + + addRequiredRoleModal.setup(LibraryConstants.AddRequiredRole, LibraryConstants.Role); + + if (model.getRequiredRoles() == null) { + model.setRequiredRoles(new ArrayList<>()); + } + + requiredRolePresenters.setup( + view.getRequiredRolesTable(), + model.getRequiredRoles(), + (requiredRole, presenter) -> presenter.setup(requiredRole, this)); + } + + Promise loadDeploymentDescriptor() { + return promises.promisify(ddEditorService, s -> { + s.load(pathToDeploymentsXml); + }); + } + + Promise createIfNotExists() { + return promises.promisify(ddEditorService, s -> { + s.createIfNotExists(pathToDeploymentsXml); + }); + } + + public void openNewMarshallingStrategyModal() { + addMarshallingStrategyModal.show(this::addMarshallingStrategy); + } + + public void openNewEventListenerModal() { + addEventListenerModal.show(this::addEventListener); + } + + public void openNewGlobalModal() { + addGlobalModal.show(this::addGlobal); + } + + public void openNewRequiredRoleModal() { + addRequiredRoleModal.show(this::addRequiredRole); + } + + void addMarshallingStrategy(final String name) { + marshallingStrategyPresenters.add(newObjectModelItem(name)); + fireChangeEvent(); + } + + void addEventListener(final String name) { + eventListenerPresenters.add(newObjectModelItem(name)); + fireChangeEvent(); + } + + void addGlobal(final String name, final String value) { + globalPresenters.add(newNamedObjectModelItem(name, value)); + fireChangeEvent(); + } + + void addRequiredRole(final String role) { + requiredRolePresenters.add(role); + fireChangeEvent(); + } + + @Override + public Promise save(final String comment, + final Supplier> chain) { + + if (concurrentDeploymentsXmlUpdateInfo == null) { + return save(comment); + } else { + notificationEvent.fire(new NotificationEvent(view.getConcurrentUpdateMessage(), WARNING)); + return setup(); + } + } + + Promise save(final String comment) { + return promises.promisify(ddEditorService, s -> { + s.save(pathToDeploymentsXml, model, model.getOverview().getMetadata(), comment); + }); + } + + ItemObjectModel newObjectModelItem(final String name) { + final ItemObjectModel model = new ItemObjectModel(); + model.setValue(name); + model.setResolver(Resolver.MVEL.name().toLowerCase()); + model.setParameters(new ArrayList<>()); + return model; + } + + ItemObjectModel newNamedObjectModelItem(final String name, + final String value) { + + final ItemObjectModel model = new ItemObjectModel(); + model.setName(name); + model.setValue(value); + model.setResolver(Resolver.MVEL.name().toLowerCase()); + model.setParameters(new ArrayList<>()); + return model; + } + + public void setPersistenceUnitName(final String persistenceUnitName) { + model.setPersistenceUnitName(persistenceUnitName); + fireChangeEvent(); + } + + public void setAuditPersistenceUnitName(final String auditPersistenceUnitName) { + model.setAuditPersistenceUnitName(auditPersistenceUnitName); + fireChangeEvent(); + } + + @Override + public int currentHashCode() { + return model.hashCode(); + } + + @Override + public SettingsPresenter.View.Section getView() { + return view; + } + + @Dependent + public static class MarshallingStrategiesListPresenter extends ListPresenter { + + @Inject + public MarshallingStrategiesListPresenter(final ManagedInstance itemPresenters) { + super(itemPresenters); + } + } + + @Dependent + public static class EventListenersListPresenter extends ListPresenter { + + @Inject + public EventListenersListPresenter(final ManagedInstance itemPresenters) { + super(itemPresenters); + } + } + + @Dependent + public static class GlobalsListPresenter extends ListPresenter { + + @Inject + public GlobalsListPresenter(final ManagedInstance itemPresenters) { + super(itemPresenters); + } + } + + @Dependent + public static class RequiredRolesListPresenter extends ListPresenter { + + @Inject + public RequiredRolesListPresenter(final ManagedInstance itemPresenters) { + super(itemPresenters); + } + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionView.html b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionView.html new file mode 100644 index 0000000000..de5b863ed9 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionView.html @@ -0,0 +1,157 @@ + + +
+ +

+

+ +
+ +
+
+ +
+
+ +
+ + +
+ +
+ +
+
+ +
+ + +
+ +
+ +
+
+ +
+ + +

+ + + + + + + + + + + + +
+ +
+ + + +
+
+ + +

+ + + + + + + + + + + + +
+ +
+ + + +
+
+ + +

+ + + + + + + + + + + + + +
+ +
+ + + + +
+
+ + +

+ + + + + + + + + + +
+ +
+ + + +
+ +
+ +
\ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionView.java new file mode 100644 index 0000000000..ba399cf987 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionView.java @@ -0,0 +1,201 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor; + +import javax.inject.Inject; +import javax.inject.Named; + +import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.event.dom.client.ClickEvent; +import elemental2.dom.Element; +import elemental2.dom.HTMLButtonElement; +import elemental2.dom.HTMLDivElement; +import elemental2.dom.HTMLHeadingElement; +import elemental2.dom.HTMLInputElement; +import elemental2.dom.HTMLTableSectionElement; +import org.jboss.errai.ui.client.local.spi.TranslationService; +import org.jboss.errai.ui.shared.api.annotations.DataField; +import org.jboss.errai.ui.shared.api.annotations.EventHandler; +import org.jboss.errai.ui.shared.api.annotations.Templated; +import org.jboss.errai.ui.shared.api.annotations.TranslationKey; + +@Templated +public class DeploymentsSectionView implements DeploymentsSectionPresenter.View { + + @Inject + private TranslationService translationService; + + @TranslationKey(defaultValue = "") + public static final String DeploymentsXmlConcurrentUpdate = "DeploymentsXmlConcurrentUpdate"; + + @Inject + @DataField("runtime-strategies") + private HTMLDivElement runtimeStrategies; + + @Inject + @DataField("persistence-unit-name") + private HTMLInputElement persistenceUnitName; + + @Inject + @DataField("persistence-modes") + private HTMLDivElement persistenceModes; + + @Inject + @DataField("audit-persistence-unit-name") + private HTMLInputElement auditPersistenceUnitName; + + @Inject + @DataField("audit-modes") + private HTMLDivElement auditModes; + + @Inject + @Named("tbody") + @DataField("marshalling-strategies") + private HTMLTableSectionElement marshallingStrategiesTable; + + @Inject + @DataField("add-marshalling-strategy-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLButtonElement addMarshallingStrategyButton; + + @Inject + @Named("tbody") + @DataField("event-listeners") + private HTMLTableSectionElement eventListenersTable; + + @Inject + @DataField("add-event-listener-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLButtonElement addEventListenerButton; + + @Inject + @Named("tbody") + @DataField("globals") + private HTMLTableSectionElement globalsTable; + + @Inject + @DataField("add-global-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLButtonElement addGlobalButton; + + @Inject + @Named("tbody") + @DataField("required-roles") + private HTMLTableSectionElement requiredRolesTable; + + @Inject + @DataField("add-required-role-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLButtonElement addRequiredRoleButton; + + @Inject + @Named("h3") + @DataField("title") + private HTMLHeadingElement title; + + private DeploymentsSectionPresenter presenter; + + @Override + public void init(final DeploymentsSectionPresenter presenter) { + this.presenter = presenter; + } + + @EventHandler("persistence-unit-name") + public void onPersistenceUnitNameChanged(final ChangeEvent ignore) { + presenter.setPersistenceUnitName(persistenceUnitName.value); + } + + @EventHandler("audit-persistence-unit-name") + public void onAuditPersistenceUnitNameChanged(final ChangeEvent ignore) { + presenter.setAuditPersistenceUnitName(auditPersistenceUnitName.value); + } + + @EventHandler("add-marshalling-strategy-button") + public void onAddMarshallingStrategyButtonClicked(final ClickEvent ignore) { + presenter.openNewMarshallingStrategyModal(); + } + + @EventHandler("add-event-listener-button") + public void onAddEventListenerButtonClicked(final ClickEvent ignore) { + presenter.openNewEventListenerModal(); + } + + @EventHandler("add-global-button") + public void onAddGlobalButtonClicked(final ClickEvent ignore) { + presenter.openNewGlobalModal(); + } + + @EventHandler("add-required-role-button") + public void onAddRequiredRoleButtonClicked(final ClickEvent ignore) { + presenter.openNewRequiredRoleModal(); + } + + @Override + public Element getEventListenersTable() { + return eventListenersTable; + } + + @Override + public Element getMarshallingStrategiesTable() { + return marshallingStrategiesTable; + } + + @Override + public Element getGlobalsTable() { + return globalsTable; + } + + @Override + public Element getRequiredRolesTable() { + return requiredRolesTable; + } + + @Override + public void setPersistenceUnitName(final String persistenceUnitName) { + this.persistenceUnitName.value = persistenceUnitName; + } + + @Override + public void setAuditPersistenceUnitName(final String auditPersistenceUnitName) { + this.auditPersistenceUnitName.value = auditPersistenceUnitName; + } + + @Override + public Element getRuntimeStrategiesContainer() { + return runtimeStrategies; + } + + @Override + public Element getAuditModesContainer() { + return auditModes; + } + + @Override + public String getConcurrentUpdateMessage() { + return translationService.format(DeploymentsXmlConcurrentUpdate); + } + + @Override + public Element getPersistenceModesContainer() { + return persistenceModes; + } + + @Override + public String getTitle() { + return title.textContent; + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemPresenter.java new file mode 100644 index 0000000000..819a5bb0e6 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemPresenter.java @@ -0,0 +1,115 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import java.util.ArrayList; + +import javax.enterprise.context.Dependent; +import javax.inject.Inject; + +import elemental2.dom.Element; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.Resolver; +import org.jbpm.workbench.wi.dd.model.ItemObjectModel; +import org.kie.workbench.common.screens.library.client.settings.util.KieEnumSelectElement; +import org.kie.workbench.common.screens.library.client.settings.util.ListItemPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.UberElementalListItem; + +@Dependent +public class NamedObjectItemPresenter extends ListItemPresenter implements ObjectPresenter { + + private final ParametersModal parametersModal; + private final KieEnumSelectElement resolversSelect; + + ItemObjectModel model; + DeploymentsSectionPresenter parentPresenter; + + @Inject + public NamedObjectItemPresenter(final View view, + final ParametersModal parametersModal, + final KieEnumSelectElement resolversSelect) { + super(view); + this.parametersModal = parametersModal; + this.resolversSelect = resolversSelect; + } + + @Override + public NamedObjectItemPresenter setup(final ItemObjectModel model, + final DeploymentsSectionPresenter parentPresenter) { + this.model = model; + this.parentPresenter = parentPresenter; + + if (model.getParameters() == null) { + model.setParameters(new ArrayList<>()); + } + + parametersModal.setup(model.getParameters(), this); + + resolversSelect.setup( + view.getResolversContainer(), + Resolver.values(), + Resolver.valueOf(model.getResolver().toUpperCase()), + resolver -> { + model.setResolver(resolver.name().toLowerCase()); + parentPresenter.fireChangeEvent(); + }); + + view.init(this); + view.setName(model.getName()); + view.setValue(model.getValue()); + view.setParametersCount(model.getParameters().size()); + + return this; + } + + @Override + public void remove() { + super.remove(); + fireChangeEvent(); + } + + @Override + public void fireChangeEvent() { + parentPresenter.fireChangeEvent(); + } + + public void showParametersModal() { + parametersModal.show(); + } + + @Override + public ItemObjectModel getObject() { + return model; + } + + @Override + public void signalParameterAddedOrRemoved() { + view.setParametersCount(model.getParameters().size()); + fireChangeEvent(); + } + + public interface View extends UberElementalListItem { + + Element getResolversContainer(); + + void setName(final String name); + + void setValue(final String value); + + void setParametersCount(final int size); + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemView.html b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemView.html new file mode 100644 index 0000000000..d29ed0765d --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemView.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + Parameters ( + + ) + + + + + +
\ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemView.java new file mode 100644 index 0000000000..e30cda31f9 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemView.java @@ -0,0 +1,101 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import javax.inject.Inject; +import javax.inject.Named; + +import com.google.gwt.event.dom.client.ClickEvent; +import elemental2.dom.Element; +import elemental2.dom.HTMLAnchorElement; +import elemental2.dom.HTMLDivElement; +import elemental2.dom.HTMLElement; +import org.jboss.errai.ui.client.local.api.elemental2.IsElement; +import org.jboss.errai.ui.shared.api.annotations.DataField; +import org.jboss.errai.ui.shared.api.annotations.EventHandler; +import org.jboss.errai.ui.shared.api.annotations.Templated; + +@Templated("#root") +public class NamedObjectItemView implements NamedObjectItemPresenter.View, + IsElement { + + @Inject + @Named("span") + @DataField("name") + private HTMLElement name; + + @Inject + @Named("span") + @DataField("value") + private HTMLElement value; + + @Inject + @DataField("resolvers") + private HTMLDivElement resolversContainer; + + @Inject + @DataField("parameters-link") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLAnchorElement parametersLink; + + @Inject + @Named("span") + @DataField("parameters-count") + private HTMLElement parametersCount; + + @Inject + @DataField("remove-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLAnchorElement removeButton; + + private NamedObjectItemPresenter presenter; + + @Override + public void init(final NamedObjectItemPresenter presenter) { + this.presenter = presenter; + } + + @EventHandler("remove-button") + public void onRemoveButtonClicked(final ClickEvent ignore) { + presenter.remove(); + } + + @EventHandler("parameters-link") + public void onParametersLinkClicked(final ClickEvent ignore) { + presenter.showParametersModal(); + } + + @Override + public void setName(final String name) { + this.name.textContent = name; + } + + @Override + public void setValue(final String value) { + this.value.textContent = value; + } + + @Override + public void setParametersCount(final int parametersCount) { + this.parametersCount.textContent = Integer.toString(parametersCount); + } + + @Override + public Element getResolversContainer() { + return resolversContainer; + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemPresenter.java new file mode 100644 index 0000000000..6f19228756 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemPresenter.java @@ -0,0 +1,113 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import java.util.ArrayList; + +import javax.enterprise.context.Dependent; +import javax.inject.Inject; + +import elemental2.dom.Element; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.Resolver; +import org.jbpm.workbench.wi.dd.model.ItemObjectModel; +import org.kie.workbench.common.screens.library.client.settings.util.KieEnumSelectElement; +import org.kie.workbench.common.screens.library.client.settings.util.ListItemPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.UberElementalListItem; + +@Dependent +public class ObjectItemPresenter extends ListItemPresenter implements ObjectPresenter { + + private final ParametersModal parametersModal; + private final KieEnumSelectElement resolversSelect; + + ItemObjectModel model; + DeploymentsSectionPresenter parentPresenter; + + @Inject + public ObjectItemPresenter(final View view, + final ParametersModal parametersModal, + final KieEnumSelectElement resolversSelect) { + super(view); + this.parametersModal = parametersModal; + this.resolversSelect = resolversSelect; + } + + @Override + public ObjectItemPresenter setup(final ItemObjectModel model, + final DeploymentsSectionPresenter parentPresenter) { + this.model = model; + this.parentPresenter = parentPresenter; + + if (model.getParameters() == null) { + model.setParameters(new ArrayList<>()); + } + + parametersModal.setup(model.getParameters(), this); + + resolversSelect.setup( + view.getResolversContainer(), + Resolver.values(), + Resolver.valueOf(model.getResolver().toUpperCase()), + resolver -> { + model.setResolver(resolver.name().toLowerCase()); + parentPresenter.fireChangeEvent(); + }); + + view.init(this); + + view.setValue(model.getValue()); + view.setParametersCount(model.getParameters().size()); + + return this; + } + + @Override + public void remove() { + super.remove(); + fireChangeEvent(); + } + + @Override + public void fireChangeEvent() { + parentPresenter.fireChangeEvent(); + } + + public void showParametersModal() { + parametersModal.show(); + } + + @Override + public ItemObjectModel getObject() { + return model; + } + + @Override + public void signalParameterAddedOrRemoved() { + view.setParametersCount(model.getParameters().size()); + fireChangeEvent(); + } + + public interface View extends UberElementalListItem { + + Element getResolversContainer(); + + void setValue(final String value); + + void setParametersCount(final int size); + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.html b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.html new file mode 100644 index 0000000000..667a3ce064 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + +
+ + +
+
+ + Parameters ( + + ) + + + + + +
\ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.java new file mode 100644 index 0000000000..1c4967e7e8 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.java @@ -0,0 +1,91 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import javax.inject.Inject; +import javax.inject.Named; + +import com.google.gwt.event.dom.client.ClickEvent; +import elemental2.dom.Element; +import elemental2.dom.HTMLAnchorElement; +import elemental2.dom.HTMLDivElement; +import elemental2.dom.HTMLElement; +import org.jboss.errai.ui.client.local.api.elemental2.IsElement; +import org.jboss.errai.ui.shared.api.annotations.DataField; +import org.jboss.errai.ui.shared.api.annotations.EventHandler; +import org.jboss.errai.ui.shared.api.annotations.Templated; + +@Templated("#root") +public class ObjectItemView implements ObjectItemPresenter.View, + IsElement { + + @Inject + @Named("span") + @DataField("value") + private HTMLElement value; + + @Inject + @DataField("resolvers") + private HTMLDivElement resolversContainer; + + @Inject + @DataField("parameters-link") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLAnchorElement parametersLink; + + @Inject + @Named("span") + @DataField("parameters-count") + private HTMLElement parametersCount; + + @Inject + @DataField("remove-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLAnchorElement removeButton; + + private ObjectItemPresenter presenter; + + @Override + public void init(final ObjectItemPresenter presenter) { + this.presenter = presenter; + } + + @EventHandler("remove-button") + public void onRemoveButtonClicked(final ClickEvent ignore) { + presenter.remove(); + } + + @EventHandler("parameters-link") + public void onParametersLinkClicked(final ClickEvent ignore) { + presenter.showParametersModal(); + } + + @Override + public void setValue(final String value) { + this.value.textContent = value; + } + + @Override + public void setParametersCount(final int parametersCount) { + this.parametersCount.textContent = Integer.toString(parametersCount); + } + + @Override + public Element getResolversContainer() { + return resolversContainer; + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectPresenter.java new file mode 100644 index 0000000000..110d24d5d9 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectPresenter.java @@ -0,0 +1,24 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +public interface ObjectPresenter { + + void fireChangeEvent(); + + void signalParameterAddedOrRemoved(); +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModal.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModal.java new file mode 100644 index 0000000000..a95f59cfe1 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModal.java @@ -0,0 +1,125 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import java.util.List; + +import javax.enterprise.context.Dependent; +import javax.inject.Inject; + +import org.jboss.errai.ioc.client.api.ManagedInstance; +import org.jbpm.workbench.wi.dd.model.Parameter; +import org.kie.workbench.common.screens.library.client.settings.util.ListItemPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.ListPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.modal.Elemental2Modal; + +@Dependent +public class ParametersModal extends Elemental2Modal { + + private final ParametersListPresenter parametersListPresenter; + ObjectPresenter parentPresenter; + + @Inject + public ParametersModal(final ParametersModalView view, + final ParametersListPresenter parametersListPresenter) { + + super(view); + this.parametersListPresenter = parametersListPresenter; + } + + public void setup(final List parameters, + final ObjectPresenter parentPresenter) { + + this.parentPresenter = parentPresenter; + + parametersListPresenter.setup( + getView().getParametersTable(), + parameters, + (parameter, presenter) -> presenter.setup(parameter, this)); + + super.setup(); + } + + public void add() { + final Parameter parameter = new Parameter(String.class.getCanonicalName(), ""); + parametersListPresenter.add(parameter); + parentPresenter.signalParameterAddedOrRemoved(); + } + + public void signalParameterAddedOrRemoved() { + parentPresenter.signalParameterAddedOrRemoved(); + } + + public void fireChangeEvent() { + parentPresenter.fireChangeEvent(); + } + + @Dependent + public static class ParametersListPresenter extends ListPresenter { + + @Inject + public ParametersListPresenter(final ManagedInstance itemPresenters) { + super(itemPresenters); + } + } + + @Dependent + public static class ParameterItemPresenter extends ListItemPresenter { + + private Parameter parameter; + private ParametersModal parentPresenter; + + @Inject + public ParameterItemPresenter(final ParametersModalView.Parameter parametersModalView) { + super(parametersModalView); + } + + @Override + public ParameterItemPresenter setup(final Parameter parameter, + final ParametersModal parentPresenter) { + + this.parameter = parameter; + this.parentPresenter = parentPresenter; + + view.init(this); + view.setType(parameter.getType()); + view.setValue(parameter.getValue()); + return this; + } + + @Override + public Parameter getObject() { + return parameter; + } + + @Override + public void remove() { + super.remove(); + parentPresenter.signalParameterAddedOrRemoved(); + } + + public void setName(final String name) { + parameter.setType(name); + parentPresenter.fireChangeEvent(); + } + + public void setValue(final String value) { + parameter.setValue(value); + parentPresenter.fireChangeEvent(); + } + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.html b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.html new file mode 100644 index 0000000000..d64983f3a0 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.html @@ -0,0 +1,56 @@ + + +
+
+ +
+ + + + + + + + + + + + + + + +
+
+ + + + + + + +
+ + +
+ +
+ +
+
\ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.java new file mode 100644 index 0000000000..897bdf5104 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.java @@ -0,0 +1,150 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import javax.inject.Inject; +import javax.inject.Named; + +import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.event.dom.client.ClickEvent; +import elemental2.dom.HTMLAnchorElement; +import elemental2.dom.HTMLButtonElement; +import elemental2.dom.HTMLDivElement; +import elemental2.dom.HTMLElement; +import elemental2.dom.HTMLInputElement; +import elemental2.dom.HTMLTableSectionElement; +import org.jboss.errai.ui.client.local.api.elemental2.IsElement; +import org.jboss.errai.ui.shared.api.annotations.DataField; +import org.jboss.errai.ui.shared.api.annotations.EventHandler; +import org.jboss.errai.ui.shared.api.annotations.Templated; +import org.kie.workbench.common.screens.library.client.settings.util.UberElementalListItem; +import org.kie.workbench.common.screens.library.client.settings.util.modal.Elemental2Modal; + +@Templated +public class ParametersModalView implements Elemental2Modal.View { + + @Inject + @DataField("header") + private HTMLDivElement header; + + @Inject + @DataField("body") + private HTMLDivElement body; + + @Inject + @DataField("footer") + private HTMLDivElement footer; + + @Inject + @Named("tbody") + @DataField("parameters-table") + private HTMLTableSectionElement parametersTable; + + @Inject + @DataField("add-parameter-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLButtonElement addParameterButton; + + @Inject + @DataField("done-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLButtonElement doneButton; + + private ParametersModal presenter; + + @Override + public void init(final ParametersModal presenter) { + this.presenter = presenter; + } + + @EventHandler("add-parameter-button") + public void onAddParameterButtonClicked(final ClickEvent ignore) { + presenter.add(); + } + + @EventHandler("done-button") + public void onDoneButtonClicked(final ClickEvent ignore) { + presenter.hide(); + } + + @Override + public String getHeader() { + return header.textContent; + } + + @Override + public HTMLElement getBody() { + return body; + } + + @Override + public HTMLElement getFooter() { + return footer; + } + + public HTMLTableSectionElement getParametersTable() { + return parametersTable; + } + + @Templated("ParametersModalView.html#parameter") + public static class Parameter implements UberElementalListItem, + IsElement { + + @Inject + @DataField("type") + private HTMLInputElement name; + + @Inject + @DataField("value") + private HTMLInputElement value; + + @Inject + @DataField("remove-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLAnchorElement removeButton; + + private ParametersModal.ParameterItemPresenter presenter; + + @Override + public void init(final ParametersModal.ParameterItemPresenter presenter) { + this.presenter = presenter; + } + + @EventHandler("remove-button") + public void onRemoveButtonClicked(final ClickEvent ignore) { + presenter.remove(); + } + + @EventHandler("type") + public void onNameChanged(final ChangeEvent ignore) { + presenter.setName(name.value); + } + + @EventHandler("value") + public void onValueChanged(final ChangeEvent ignore) { + presenter.setValue(value.value); + } + + public void setType(final String name) { + this.name.value = name; + } + + public void setValue(final String value) { + this.value.value = value; + } + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemPresenter.java new file mode 100644 index 0000000000..8fac87f498 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemPresenter.java @@ -0,0 +1,66 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import javax.enterprise.context.Dependent; +import javax.inject.Inject; + +import org.jboss.errai.ui.client.local.api.elemental2.IsElement; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.ListItemPresenter; +import org.kie.workbench.common.screens.library.client.settings.util.UberElementalListItem; + +@Dependent +public class RequiredRolesListItemPresenter extends ListItemPresenter { + + private String role; + DeploymentsSectionPresenter parentPresenter; + + @Inject + public RequiredRolesListItemPresenter(final View view) { + super(view); + } + + @Override + public RequiredRolesListItemPresenter setup(final String role, + final DeploymentsSectionPresenter parentPresenter) { + this.role = role; + this.parentPresenter = parentPresenter; + + view.init(this); + view.setRole(role); + + return this; + } + + @Override + public void remove() { + super.remove(); + parentPresenter.fireChangeEvent(); + } + + @Override + public String getObject() { + return role; + } + + public interface View extends UberElementalListItem, + IsElement { + + void setRole(final String role); + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemView.html b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemView.html new file mode 100644 index 0000000000..e609827004 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemView.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+ + + + + +
\ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemView.java new file mode 100644 index 0000000000..a8d0b7d6ad --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemView.java @@ -0,0 +1,58 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import javax.inject.Inject; +import javax.inject.Named; + +import com.google.gwt.event.dom.client.ClickEvent; +import elemental2.dom.HTMLAnchorElement; +import elemental2.dom.HTMLElement; +import org.jboss.errai.ui.shared.api.annotations.DataField; +import org.jboss.errai.ui.shared.api.annotations.EventHandler; +import org.jboss.errai.ui.shared.api.annotations.Templated; + +@Templated("#root") +public class RequiredRolesListItemView implements RequiredRolesListItemPresenter.View { + + @Inject + @Named("span") + @DataField("role") + private HTMLElement role; + + @Inject + @DataField("remove-button") + @SuppressWarnings("PMD.UnusedPrivateField") + private HTMLAnchorElement removeButton; + + private RequiredRolesListItemPresenter presenter; + + @Override + public void init(final RequiredRolesListItemPresenter presenter) { + this.presenter = presenter; + } + + @EventHandler("remove-button") + public void onRemoveButtonClicked(final ClickEvent ignore) { + presenter.remove(); + } + + @Override + public void setRole(final String role) { + this.role.textContent = role; + } +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/AuditMode.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/AuditMode.java new file mode 100644 index 0000000000..241f1cb559 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/AuditMode.java @@ -0,0 +1,26 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.model; + +import org.jboss.errai.common.client.api.annotations.Portable; + +@Portable +public enum AuditMode { + JPA, + JMS, + NONE; +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/PersistenceMode.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/PersistenceMode.java new file mode 100644 index 0000000000..ba357a721f --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/PersistenceMode.java @@ -0,0 +1,25 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.model; + +import org.jboss.errai.common.client.api.annotations.Portable; + +@Portable +public enum PersistenceMode { + JPA, + NONE; +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/Resolver.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/Resolver.java new file mode 100644 index 0000000000..981e8c4843 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/Resolver.java @@ -0,0 +1,26 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.model; + +import org.jboss.errai.common.client.api.annotations.Portable; + +@Portable +public enum Resolver { + MVEL, + REFLECTION, + SPRING; +} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/RuntimeStrategy.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/RuntimeStrategy.java new file mode 100644 index 0000000000..51c673853e --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/model/RuntimeStrategy.java @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.model; + +import org.jboss.errai.common.client.api.annotations.Portable; + +@Portable +public enum RuntimeStrategy { + SINGLETON, + PER_CASE, + PER_REQUEST, + PER_PROCESS_INSTANCE +} + diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/type/DDResourceType.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/type/DDResourceType.java deleted file mode 100644 index c9b2e51acb..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/type/DDResourceType.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor.type; - -import javax.enterprise.context.ApplicationScoped; - -import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.IsWidget; -import org.jbpm.workbench.wi.client.i18n.Constants; -import org.jbpm.workbench.wi.dd.type.DDResourceTypeDefinition; - -import org.uberfire.client.resources.UberfireResources; -import org.uberfire.client.workbench.type.ClientResourceType; - -@ApplicationScoped -public class DDResourceType extends DDResourceTypeDefinition implements ClientResourceType { - - private static final Image IMAGE = new Image(UberfireResources.INSTANCE.images().typeGenericFile()); - - @Override - public IsWidget getIcon() { - return IMAGE; - } - - @Override - public String getDescription() { - String desc = Constants.INSTANCE.Deployment(); - if (desc == null || desc.isEmpty()) { - return super.getDescription(); - } - return desc; - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/validation/DeploymentDescriptorValidationMessageTranslator.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/validation/DeploymentDescriptorValidationMessageTranslator.java deleted file mode 100644 index ef788f90b7..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/validation/DeploymentDescriptorValidationMessageTranslator.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor.validation; - -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; - -import org.guvnor.common.services.shared.validation.model.ValidationMessage; -import org.jboss.errai.ui.client.local.spi.TranslationService; -import org.jbpm.workbench.wi.dd.validation.DeploymentDescriptorValidationMessage; -import org.kie.workbench.common.widgets.client.popups.validation.ValidationMessageTranslator; - -@ApplicationScoped -public class DeploymentDescriptorValidationMessageTranslator implements ValidationMessageTranslator { - - private TranslationService translationService; - - @Inject - public DeploymentDescriptorValidationMessageTranslator(TranslationService translationService) { - this.translationService = translationService; - } - - @Override - public boolean accept(ValidationMessage checkMessage) { - return checkMessage instanceof DeploymentDescriptorValidationMessage; - } - - @Override - public ValidationMessage translate(ValidationMessage checkMessage) { - DeploymentDescriptorValidationMessage ddMessage = (DeploymentDescriptorValidationMessage) checkMessage; - ValidationMessage result = new ValidationMessage(); - result.setId(checkMessage.getId()); - result.setLevel(checkMessage.getLevel()); - String translationKey = ddMessage.getKey(); - - if (translationService.getTranslation(translationKey) != null) { - result.setText(translationService.format(translationKey, ddMessage.getArgs())); - } else { - result.setText(checkMessage.getText()); - } - return result; - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/resources/org/jbpm/workbench/wi/client/i18n/Constants.properties b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/resources/org/jbpm/workbench/wi/client/i18n/Constants.properties index 79d35de8d6..e1b5ddd6c4 100644 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/resources/org/jbpm/workbench/wi/client/i18n/Constants.properties +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/resources/org/jbpm/workbench/wi/client/i18n/Constants.properties @@ -65,4 +65,5 @@ DDValidationMissingName=Name cannot be empty for {0} DDValidationNotValidMvelIdentifier=Could not compile mvel expression '{0}'. This can be due to invalid syntax of missing classes - {1} DDValidationNotValidReflectionIdentifier=Identifier is not valid Java class which is required by reflection resolver {0} DDValidationNotValidResolver=Not valid resolver selected for {0} -DDValidationUnexpectedError=Unexpected error while validating deployment descriptor: {0} \ No newline at end of file +DDValidationUnexpectedError=Unexpected error while validating deployment descriptor: {0} +DeploymentsXmlConcurrentUpdate=Deployments configuration was reloaded because someone else's edited it concurrently \ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorEditorPresenterTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorEditorPresenterTest.java deleted file mode 100644 index bc26cbb16d..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorEditorPresenterTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jbpm.workbench.wi.client.editors.deployment.descriptor; - -import java.util.Optional; - -import com.google.gwtmockito.GwtMockitoTestRunner; -import org.guvnor.common.services.project.client.context.WorkspaceProjectContext; -import org.guvnor.common.services.project.client.security.ProjectController; -import org.guvnor.common.services.project.model.WorkspaceProject; -import org.jboss.errai.ui.client.local.spi.TranslationService; -import org.jbpm.workbench.wi.dd.service.DDEditorService; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.kie.internal.runtime.conf.RuntimeStrategy; -import org.kie.workbench.common.widgets.client.menu.FileMenuBuilderImpl; -import org.kie.workbench.common.widgets.metadata.client.KieEditorWrapperView; -import org.kie.workbench.common.widgets.metadata.client.widget.OverviewWidgetPresenter; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.uberfire.backend.vfs.ObservablePath; -import org.uberfire.ext.editor.commons.client.history.VersionRecordManager; -import org.uberfire.ext.editor.commons.client.menu.BasicFileMenuBuilder; -import org.uberfire.mocks.CallerMock; -import org.uberfire.mvp.PlaceRequest; -import org.uberfire.workbench.model.menu.MenuItem; - -import static org.mockito.Mockito.*; - -@RunWith(GwtMockitoTestRunner.class) -public class DeploymentDescriptorEditorPresenterTest { - - @Mock - protected BasicFileMenuBuilder menuBuilder; - - @Mock - protected VersionRecordManager versionRecordManager; - - @Spy - @InjectMocks - protected FileMenuBuilderImpl fileMenuBuilder; - - @Mock - protected ProjectController projectController; - - @Mock - protected WorkspaceProjectContext workbenchContext; - - @Mock - DeploymentDescriptorViewImpl view; - - DeploymentDescriptorEditorPresenter presenter; - - private CallerMock callerMockDDEditorService; - - @Mock - private DDEditorService ddEditorServiceMock; - - @Before - public void setUp() throws Exception { - when(workbenchContext.getActiveOrganizationalUnit()).thenReturn(Optional.empty()); - when(workbenchContext.getActiveWorkspaceProject()).thenReturn(Optional.empty()); - when(workbenchContext.getActiveModule()).thenReturn(Optional.empty()); - when(workbenchContext.getActiveRepositoryRoot()).thenReturn(Optional.empty()); - when(workbenchContext.getActivePackage()).thenReturn(Optional.empty()); - - callerMockDDEditorService = new CallerMock(ddEditorServiceMock); - presenter = new DeploymentDescriptorEditorPresenter(view, - callerMockDDEditorService, - mock(TranslationService.class)) { - { - kieView = mock(KieEditorWrapperView.class); - overviewWidget = mock(OverviewWidgetPresenter.class); - versionRecordManager = mock(VersionRecordManager.class); - concurrentUpdateSessionInfo = null; - fileMenuBuilder = DeploymentDescriptorEditorPresenterTest.this.fileMenuBuilder; - projectController = DeploymentDescriptorEditorPresenterTest.this.projectController; - workbenchContext = DeploymentDescriptorEditorPresenterTest.this.workbenchContext; - versionRecordManager = DeploymentDescriptorEditorPresenterTest.this.versionRecordManager; - } - - protected void addSourcePage() { - - } - }; - } - - @Test - public void testDeploymentDescriptorEditorSetup() throws Exception { - presenter.onStartup(mock(ObservablePath.class), - mock(PlaceRequest.class)); - - verify(view).setSourceTabReadOnly(true); - verify(view).setup(); - verify(view, - times(RuntimeStrategy.values().length)).addRuntimeStrategy(anyString(), - anyString()); - verify(view, - times(2)).addPersistenceMode(anyString(), - anyString()); - verify(view, - times(3)).addAuditMode(anyString(), - anyString()); - } - - @Test - public void testMakeMenuBar() { - doReturn(Optional.of(mock(WorkspaceProject.class))).when(workbenchContext).getActiveWorkspaceProject(); - doReturn(true).when(projectController).canUpdateProject(any()); - - presenter.makeMenuBar(); - - verify(fileMenuBuilder).addSave(any(MenuItem.class)); - } - - @Test - public void testMakeMenuBarWithoutUpdateProjectPermission() { - doReturn(Optional.of(mock(WorkspaceProject.class))).when(workbenchContext).getActiveWorkspaceProject(); - doReturn(false).when(projectController).canUpdateProject(any()); - - presenter.makeMenuBar(); - - verify(fileMenuBuilder, - never()).addSave(any(MenuItem.class)); - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewTest.java deleted file mode 100644 index 355717638b..0000000000 --- a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentDescriptorViewTest.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright 2017 Red Hat, Inc. and/or its affiliates. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jbpm.workbench.wi.client.editors.deployment.descriptor; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyBoolean; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import java.io.InputStream; -import java.util.Collections; -import java.util.List; -import java.util.Properties; -import java.util.Random; -import java.util.UUID; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.gwtbootstrap3.client.ui.CheckBox; -import org.gwtbootstrap3.client.ui.ListBox; -import org.gwtbootstrap3.client.ui.TextBox; -import org.jbpm.workbench.wi.dd.model.DeploymentDescriptorModel; -import org.jbpm.workbench.wi.dd.model.ItemObjectModel; -import org.jbpm.workbench.wi.dd.model.Parameter; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.kie.internal.runtime.conf.AuditMode; -import org.kie.internal.runtime.conf.PersistenceMode; -import org.kie.internal.runtime.conf.RuntimeStrategy; -import org.mockito.Spy; - -import com.google.gwtmockito.GwtMock; -import com.google.gwtmockito.GwtMockitoTestRunner; - -@RunWith(GwtMockitoTestRunner.class) -public class DeploymentDescriptorViewTest { - - private static final String jarLocRegexStr = "([\\d\\.]{3})\\S*"; - private static final Pattern jarLocRegex = Pattern.compile(jarLocRegexStr); - private static Random random = new Random(); - - @Spy - private DeploymentDescriptorViewImpl view; - - @GwtMock - private TextBox textBox; - - @GwtMock - private ListBox listBox; - - @GwtMock - private CheckBox checkBox; - - private DeploymentDescriptorModel deploymentDescriptorModel; - - private int textBoxUsages = 0; - - private int listBoxUsages = 0; - - private int checkBoxUsages = 0; - - private static List getParameters() { - return Collections.singletonList(new Parameter(UUID.randomUUID().toString(), - Integer.toString(random.nextInt(100000)))); - } - - @Before - public void setup() { - // test data - deploymentDescriptorModel = new DeploymentDescriptorModel(); - - deploymentDescriptorModel.setAuditPersistenceUnitName("audit-peristence"); - ++textBoxUsages; - deploymentDescriptorModel.setPersistenceUnitName("save-thingy"); - ++textBoxUsages; - - deploymentDescriptorModel.setPersistenceMode(PersistenceMode.JPA.toString()); - ++listBoxUsages; - deploymentDescriptorModel.setAuditMode(AuditMode.JMS.toString()); - ++listBoxUsages; - deploymentDescriptorModel.setRuntimeStrategy(RuntimeStrategy.PER_PROCESS_INSTANCE.toString()); - ++listBoxUsages; - - deploymentDescriptorModel.setLimitSerializationClasses(true); - ++checkBoxUsages; - - deploymentDescriptorModel.setRemotableClasses(Collections.singletonList("class1")); - - deploymentDescriptorModel.setConfiguration( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - deploymentDescriptorModel.setEnvironmentEntries( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - deploymentDescriptorModel.setEventListeners( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - deploymentDescriptorModel.setGlobals( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - deploymentDescriptorModel.setMarshallingStrategies( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - deploymentDescriptorModel.setRequiredRoles( - Collections.singletonList("roles")); - deploymentDescriptorModel.setTaskEventListeners( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - deploymentDescriptorModel.setWorkItemHandlers( - Collections.singletonList(new ItemObjectModel("config", - "value", - "resolver", - getParameters()))); - } - - @Test - public void setContent() { - view.setContent(deploymentDescriptorModel); - - verify(textBox, - times(textBoxUsages)).setText(any(String.class)); - verify(listBox, - times(listBoxUsages)).getItemCount(); - verify(checkBox, - times(checkBoxUsages)).setValue(anyBoolean()); - - String[] listNames = { - "RemotableClasses", - "Configuration", - "EnvironmentEntries", - "EventListeners", - "Globals", - "MarshallingStrategies", - "RequiredRoles", - "TaskEventListeners", - "WorkItemHandlers" - }; - List[][] listListArr = new List[][]{ - {deploymentDescriptorModel.getConfiguration(), view.configurationDataProvider.getList()}, - {deploymentDescriptorModel.getEnvironmentEntries(), view.environmentEntriesDataProvider.getList()}, - {deploymentDescriptorModel.getEventListeners(), view.eventListenersDataProvider.getList()}, - {deploymentDescriptorModel.getGlobals(), view.globalsDataProvider.getList()}, - {deploymentDescriptorModel.getMarshallingStrategies(), view.marshalStrategyDataProvider.getList()}, - {deploymentDescriptorModel.getRemotableClasses(), view.remoteableClassesDataProvider.getList()}, - {deploymentDescriptorModel.getRequiredRoles(), view.requiredRolesDataProvider.getList()}, - {deploymentDescriptorModel.getTaskEventListeners(), view.taskEventListenersDataProvider.getList()}, - {deploymentDescriptorModel.getWorkItemHandlers(), view.workItemHandlersDataProvider.getList()} - }; - for (int i = 0; i < listListArr.length; ++i) { - assertEquals(listNames[i] + " size", - listListArr[i][0].size(), - listListArr[i][1].size()); - assertEquals(listNames[i] + " value", - listListArr[i][0].get(0), - listListArr[i][1].get(0)); - } - } - - @Test - public void updateContent() { - view.configurationDataProvider.setList(deploymentDescriptorModel.getConfiguration()); - view.environmentEntriesDataProvider.setList(deploymentDescriptorModel.getEnvironmentEntries()); - view.eventListenersDataProvider.setList(deploymentDescriptorModel.getEventListeners()); - view.globalsDataProvider.setList(deploymentDescriptorModel.getGlobals()); - view.marshalStrategyDataProvider.setList(deploymentDescriptorModel.getMarshallingStrategies()); - view.remoteableClassesDataProvider.setList(deploymentDescriptorModel.getRemotableClasses()); - view.requiredRolesDataProvider.setList(deploymentDescriptorModel.getRequiredRoles()); - view.taskEventListenersDataProvider.setList(deploymentDescriptorModel.getTaskEventListeners()); - view.workItemHandlersDataProvider.setList(deploymentDescriptorModel.getWorkItemHandlers()); - - DeploymentDescriptorModel newModel = new DeploymentDescriptorModel(); - view.updateContent(newModel); - - verify(textBox, - times(textBoxUsages)).getText(); - verify(listBox, - times(listBoxUsages)).getSelectedIndex(); - verify(checkBox, - times(checkBoxUsages)).getValue(); - - assertFalse(newModel.getConfiguration().isEmpty()); - assertFalse(newModel.getEnvironmentEntries().isEmpty()); - assertFalse(newModel.getEventListeners().isEmpty()); - assertFalse(newModel.getGlobals().isEmpty()); - assertFalse(newModel.getMarshallingStrategies().isEmpty()); - assertFalse(newModel.getRemotableClasses().isEmpty()); - assertFalse(newModel.getRequiredRoles().isEmpty()); - assertFalse(newModel.getTaskEventListeners().isEmpty()); - assertFalse(newModel.getWorkItemHandlers().isEmpty()); - } - - @Test - public void changeDefaultLimitSerializationClassesValueToTrueIn7x() throws Exception { - Properties props = new Properties(); - String testPropsFileName = "test.properties"; - InputStream testPropsStream = this.getClass().getResourceAsStream("/" + testPropsFileName); - assertNotNull("Unable to find or open " + testPropsFileName, - testPropsFileName); - props.load(testPropsStream); - String projectVersionStr = (String) props.get("project.version"); - - Matcher matcher = jarLocRegex.matcher(projectVersionStr); - assertTrue("Fix regular expression: " + jarLocRegexStr, - matcher.matches()); - double jarVersion = Double.parseDouble(matcher.group(1)); - - DeploymentDescriptorViewImpl viewImpl = new DeploymentDescriptorViewImpl(); - - deploymentDescriptorModel.setLimitSerializationClasses(null); - - viewImpl.setContent(deploymentDescriptorModel); - - boolean limitSerializationClasses = DeploymentDescriptorViewImpl.getLimitSerializationClassesCheckBoxValue(deploymentDescriptorModel); - - assertTrue("The default value of 'limitSerializationClasses is FALSE in 6.x and TRUE in 7.x", - (jarVersion < 7.0d && !limitSerializationClasses) - || (jarVersion >= 7.0d && limitSerializationClasses)); - } - - @Test - public void runtimeStrategiesSetting() throws Exception { - String itemName = "item1_name"; - String itemValue = "item1_value"; - - view.addPersistenceMode(itemName, - itemValue); - view.addAuditMode(itemName, - itemValue); - view.addRuntimeStrategy(itemName, - itemValue); - - verify(listBox, - times(3)).addItem(itemName, - itemValue); - } -} diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionPresenterTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionPresenterTest.java new file mode 100644 index 0000000000..de0bc3f085 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/DeploymentsSectionPresenterTest.java @@ -0,0 +1,418 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor; + +import java.util.Optional; +import javax.enterprise.event.Event; + +import org.guvnor.common.services.project.client.context.WorkspaceProjectContext; +import org.guvnor.common.services.project.model.WorkspaceProject; +import org.guvnor.common.services.shared.metadata.model.Overview; +import org.jboss.errai.ioc.client.api.ManagedInstance; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.AuditMode; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.PersistenceMode; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.RuntimeStrategy; +import org.jbpm.workbench.wi.dd.model.DeploymentDescriptorModel; +import org.jbpm.workbench.wi.dd.model.ItemObjectModel; +import org.jbpm.workbench.wi.dd.service.DDEditorService; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.kie.workbench.common.screens.library.client.settings.SettingsPresenter; +import org.kie.workbench.common.screens.library.client.settings.SettingsSectionChange; +import org.kie.workbench.common.screens.library.client.settings.util.KieEnumSelectElement; +import org.kie.workbench.common.screens.library.client.settings.util.modal.doublevalue.AddDoubleValueModal; +import org.kie.workbench.common.screens.library.client.settings.util.modal.single.AddSingleValueModal; +import org.kie.workbench.common.screens.projecteditor.model.ProjectScreenModel; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.uberfire.backend.vfs.ObservablePath; +import org.uberfire.backend.vfs.Path; +import org.uberfire.client.promise.Promises; +import org.uberfire.mocks.CallerMock; +import org.uberfire.promise.SyncPromises; +import org.uberfire.workbench.events.NotificationEvent; + +import static org.junit.Assert.*; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.*; + +@RunWith(MockitoJUnitRunner.class) +public class DeploymentsSectionPresenterTest { + + private DeploymentsSectionPresenter deploymentsSectionPresenter; + + @Mock + private DeploymentsSectionPresenter.View view; + + @Mock + private SettingsPresenter.MenuItem menuItem; + + @Mock + private AddSingleValueModal addMarshallingStrategyModal; + + @Mock + private AddSingleValueModal addEventListenerModal; + + @Mock + private AddDoubleValueModal addGlobalModal; + + @Mock + private AddSingleValueModal addRequiredRoleModal; + + @Mock + private KieEnumSelectElement runtimeStrategiesSelect; + + @Mock + private KieEnumSelectElement persistenceModesSelect; + + @Mock + private KieEnumSelectElement auditModesSelect; + + @Mock + private WorkspaceProjectContext projectContext; + + @Mock + private DDEditorService ddEditorService; + + @Mock + private ManagedInstance observablePaths; + + @Mock + private Event settingsSectionChangeEvent; + + @Mock + private DeploymentsSectionPresenter.MarshallingStrategiesListPresenter marshallingStrategyPresenters; + + @Mock + private DeploymentsSectionPresenter.EventListenersListPresenter eventListenerPresenters; + + @Mock + private DeploymentsSectionPresenter.GlobalsListPresenter globalPresenters; + + @Mock + private DeploymentsSectionPresenter.RequiredRolesListPresenter requiredRolePresenters; + + @Mock + private Event notificationEvent; + + private final Promises promises = new SyncPromises(); + + @Before + public void before() { + + final ObservablePath observablePath = mock(ObservablePath.class); + doReturn(observablePath).when(observablePath).wrap(any()); + doReturn(observablePath).when(observablePaths).get(); + + WorkspaceProject project = mock(WorkspaceProject.class); + + when(projectContext.getActiveWorkspaceProject()).thenReturn(Optional.of(project)); + when(project.getRootPath()).thenReturn(mock(Path.class)); + when(project.getRootPath().toURI()).thenReturn("root"); + + deploymentsSectionPresenter = spy(new DeploymentsSectionPresenter(view, + promises, + menuItem, + addMarshallingStrategyModal, + addEventListenerModal, + addGlobalModal, + addRequiredRoleModal, + runtimeStrategiesSelect, + persistenceModesSelect, + auditModesSelect, + projectContext, + new CallerMock<>(ddEditorService), + observablePaths, + settingsSectionChangeEvent, + marshallingStrategyPresenters, + eventListenerPresenters, + globalPresenters, + requiredRolePresenters, + notificationEvent)); + } + + @Test + public void testSetup() { + final DeploymentDescriptorModel model = mock(DeploymentDescriptorModel.class); + + doReturn(promises.resolve()).when(deploymentsSectionPresenter).createIfNotExists(); + doReturn(promises.resolve(model)).when(deploymentsSectionPresenter).loadDeploymentDescriptor(); + + doNothing().when(deploymentsSectionPresenter).setupAuditModeSelect(eq(model)); + doNothing().when(deploymentsSectionPresenter).setupPersistenceModesSelect(eq(model)); + doNothing().when(deploymentsSectionPresenter).setupRuntimeStrategiesSelect(eq(model)); + + doNothing().when(deploymentsSectionPresenter).setupMarshallingStrategiesTable(eq(model)); + doNothing().when(deploymentsSectionPresenter).setupEventListenersTable(eq(model)); + doNothing().when(deploymentsSectionPresenter).setupGlobalsTable(eq(model)); + doNothing().when(deploymentsSectionPresenter).setupRequiredRolesTable(eq(model)); + + deploymentsSectionPresenter.setup(mock(ProjectScreenModel.class)); + + verify(view).init(eq(deploymentsSectionPresenter)); + + verify(view).setAuditPersistenceUnitName(any()); + verify(view).setPersistenceUnitName(any()); + + verify(deploymentsSectionPresenter).setupRuntimeStrategiesSelect(eq(model)); + verify(deploymentsSectionPresenter).setupPersistenceModesSelect(eq(model)); + verify(deploymentsSectionPresenter).setupAuditModeSelect(eq(model)); + verify(deploymentsSectionPresenter).setupMarshallingStrategiesTable(eq(model)); + verify(deploymentsSectionPresenter).setupEventListenersTable(eq(model)); + verify(deploymentsSectionPresenter).setupGlobalsTable(eq(model)); + verify(deploymentsSectionPresenter).setupRequiredRolesTable(eq(model)); + } + + @Test + public void testSetupRuntimeStrategiesSelect() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + model.setRuntimeStrategy("SINGLETON"); + + deploymentsSectionPresenter.setupRuntimeStrategiesSelect(model); + + verify(runtimeStrategiesSelect).setup(any(), any(), any(), any()); + } + + @Test + public void testSetupPersistenceModesSelect() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + model.setPersistenceMode("JPA"); + + deploymentsSectionPresenter.setupPersistenceModesSelect(model); + + verify(persistenceModesSelect).setup(any(), any(), any(), any()); + } + + @Test + public void testSetupAuditModeSelect() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + model.setAuditMode("JPA"); + + deploymentsSectionPresenter.setupAuditModeSelect(model); + + verify(auditModesSelect).setup(any(), any(), any(), any()); + } + + @Test + public void testSetupMarshallingStrategiesTable() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + + deploymentsSectionPresenter.setupMarshallingStrategiesTable(model); + + assertNotNull(model.getMarshallingStrategies()); + verify(addMarshallingStrategyModal).setup(any(), any()); + verify(marshallingStrategyPresenters).setup(any(), any(), any()); + } + + @Test + public void testSetupEventListenersTable() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + + deploymentsSectionPresenter.setupEventListenersTable(model); + + assertNotNull(model.getEventListeners()); + verify(addEventListenerModal).setup(any(), any()); + verify(eventListenerPresenters).setup(any(), any(), any()); + } + + @Test + public void testSetupGlobalsTable() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + + deploymentsSectionPresenter.setupGlobalsTable(model); + + assertNotNull(model.getGlobals()); + verify(addGlobalModal).setup(any(), any(), any()); + verify(globalPresenters).setup(any(), any(), any()); + } + + @Test + public void testSetupRequiredRolesTable() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + + deploymentsSectionPresenter.setupRequiredRolesTable(model); + + assertNotNull(model.getRequiredRoles()); + verify(addRequiredRoleModal).setup(any(), any()); + verify(requiredRolePresenters).setup(any(), any(), any()); + } + + @Test + public void testCreateIfNotExists() { + doNothing().when(ddEditorService).createIfNotExists(any()); + + deploymentsSectionPresenter.createIfNotExists().catch_(i -> { + Assert.fail("Promise should've been resolved!"); + return promises.resolve(); + }); + + verify(ddEditorService).createIfNotExists(any()); + } + + @Test + public void testLoadDeploymentDescriptor() { + doReturn(mock(Path.class)).when(ddEditorService).load(any()); + + deploymentsSectionPresenter.loadDeploymentDescriptor().catch_(i -> { + Assert.fail("Promise should've been resolved!"); + return promises.resolve(); + }); + + verify(ddEditorService).load(any()); + } + + @Test + public void testOpenNewMarshallingStrategyModal() { + deploymentsSectionPresenter.openNewMarshallingStrategyModal(); + verify(addMarshallingStrategyModal).show(any()); + } + + @Test + public void testOpenNewEventListenerModal() { + deploymentsSectionPresenter.openNewEventListenerModal(); + verify(addEventListenerModal).show(any()); + } + + @Test + public void testOpenNewGlobalModal() { + deploymentsSectionPresenter.openNewGlobalModal(); + verify(addGlobalModal).show(any()); + } + + @Test + public void testOpenNewRequiredRoleModal() { + deploymentsSectionPresenter.openNewRequiredRoleModal(); + verify(addRequiredRoleModal).show(any()); + } + + @Test + public void testAddMarshallingStrategy() { + deploymentsSectionPresenter.addMarshallingStrategy("Name"); + verify(marshallingStrategyPresenters).add(any()); + verify(deploymentsSectionPresenter).fireChangeEvent(); + } + + @Test + public void testAddEventListener() { + deploymentsSectionPresenter.addEventListener("Name"); + verify(eventListenerPresenters).add(any()); + verify(deploymentsSectionPresenter).fireChangeEvent(); + } + + @Test + public void testAddGlobal() { + deploymentsSectionPresenter.addGlobal("Name", "Value"); + verify(globalPresenters).add(any()); + verify(deploymentsSectionPresenter).fireChangeEvent(); + } + + @Test + public void testAddRequiredRole() { + deploymentsSectionPresenter.addRequiredRole("Name"); + verify(requiredRolePresenters).add(any()); + verify(deploymentsSectionPresenter).fireChangeEvent(); + } + + @Test + public void testSave() { + doReturn(promises.resolve()).when(deploymentsSectionPresenter).save(eq("Test comment")); + + deploymentsSectionPresenter.save("Test comment", null).catch_(i -> { + Assert.fail("Promise should've been resolved!"); + return promises.resolve(); + }); + + verify(deploymentsSectionPresenter).save(eq("Test comment")); + verify(deploymentsSectionPresenter, never()).setup(); + verify(notificationEvent, never()).fire(any()); + } + + @Test + public void testSaveWithConcurrentUpdate() { + deploymentsSectionPresenter.concurrentDeploymentsXmlUpdateInfo = mock(ObservablePath.OnConcurrentUpdateEvent.class); + doReturn(promises.resolve()).when(deploymentsSectionPresenter).setup(); + + deploymentsSectionPresenter.save("Test comment", null).catch_(i -> { + Assert.fail("Promise should've been resolved!"); + return promises.resolve(); + }); + + verify(deploymentsSectionPresenter, never()).save(any()); + verify(deploymentsSectionPresenter).setup(); + verify(notificationEvent).fire(any()); + } + + @Test + public void testSaveModel() { + doReturn(mock(Path.class)).when(ddEditorService).save(any(), any(), any(), any()); + + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + model.setOverview(new Overview()); + deploymentsSectionPresenter.model = model; + + deploymentsSectionPresenter.save("Test comment").catch_(i -> { + Assert.fail("Promise should've been resolved!"); + return promises.resolve(); + }); + + verify(ddEditorService).save(any(), any(), any(), eq("Test comment")); + } + + @Test + public void testNewObjectItemModel() { + final ItemObjectModel model = deploymentsSectionPresenter.newObjectModelItem("Value"); + + assertEquals("Value", model.getValue()); + assertEquals("mvel", model.getResolver()); + assertTrue(model.getParameters().isEmpty()); + } + + @Test + public void testNewNamedObjectItemModel() { + final ItemObjectModel model = deploymentsSectionPresenter.newNamedObjectModelItem("Name", "Value"); + + assertEquals("Name", model.getName()); + assertEquals("Value", model.getValue()); + assertEquals("mvel", model.getResolver()); + assertTrue(model.getParameters().isEmpty()); + } + + @Test + public void testSetPersistenceUnitName() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + deploymentsSectionPresenter.model = model; + + deploymentsSectionPresenter.setPersistenceUnitName("Name"); + + assertEquals("Name", model.getPersistenceUnitName()); + verify(deploymentsSectionPresenter).fireChangeEvent(); + } + + @Test + public void testSetAuditPersistenceUnitName() { + final DeploymentDescriptorModel model = new DeploymentDescriptorModel(); + deploymentsSectionPresenter.model = model; + + deploymentsSectionPresenter.setAuditPersistenceUnitName("Name"); + + assertEquals("Name", model.getAuditPersistenceUnitName()); + verify(deploymentsSectionPresenter).fireChangeEvent(); + } +} \ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemPresenterTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemPresenterTest.java new file mode 100644 index 0000000000..8fc5ee9d46 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/NamedObjectItemPresenterTest.java @@ -0,0 +1,99 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import com.google.common.collect.ImmutableList; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.Resolver; +import org.jbpm.workbench.wi.dd.model.ItemObjectModel; +import org.jbpm.workbench.wi.dd.model.Parameter; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.kie.workbench.common.screens.library.client.settings.util.KieEnumSelectElement; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +@RunWith(MockitoJUnitRunner.class) +public class NamedObjectItemPresenterTest { + + @Mock + private NamedObjectItemPresenter.View view; + + @Mock + private ParametersModal parametersModal; + + @Mock + private KieEnumSelectElement resolversSelect; + + private NamedObjectItemPresenter namedObjectItemPresenter; + + @Before + public void before() { + namedObjectItemPresenter = spy(new NamedObjectItemPresenter(view, + parametersModal, + resolversSelect)); + } + + @Test + public void testSetup() { + final ItemObjectModel model = spy(new ItemObjectModel("Name", "Value", "mvel", ImmutableList.of(new Parameter("Foo", "Bar")))); + + namedObjectItemPresenter.setup(model, mock(DeploymentsSectionPresenter.class)); + + verify(model, never()).setParameters(any()); + verify(view).init(eq(namedObjectItemPresenter)); + verify(view).setValue(eq("Value")); + verify(view).setName(eq("Name")); + verify(view).setParametersCount(eq(1)); + verify(parametersModal).setup(any(), any()); + verify(resolversSelect).setup(any(), any(), eq(Resolver.MVEL), any()); + } + + @Test + public void testRemove() { + final DeploymentsSectionPresenter parentPresenter = mock(DeploymentsSectionPresenter.class); + final DeploymentsSectionPresenter.MarshallingStrategiesListPresenter listPresenter = mock(DeploymentsSectionPresenter.MarshallingStrategiesListPresenter.class); + + namedObjectItemPresenter.parentPresenter = parentPresenter; + namedObjectItemPresenter.setListPresenter(listPresenter); + + namedObjectItemPresenter.remove(); + + verify(listPresenter).remove(eq(namedObjectItemPresenter)); + verify(parentPresenter).fireChangeEvent(); + } + + @Test + public void testSignalParameterAddedOrRemoved() { + final DeploymentsSectionPresenter parentPresenter = mock(DeploymentsSectionPresenter.class); + namedObjectItemPresenter.parentPresenter = parentPresenter; + namedObjectItemPresenter.model = new ItemObjectModel("Name", "Value", "mvel", ImmutableList.of(new Parameter("Foo", "Bar"))); + + namedObjectItemPresenter.signalParameterAddedOrRemoved(); + + verify(view).setParametersCount(eq(1)); + verify(parentPresenter).fireChangeEvent(); + } +} \ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemPresenterTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemPresenterTest.java new file mode 100644 index 0000000000..aaebefc36c --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemPresenterTest.java @@ -0,0 +1,99 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import com.google.common.collect.ImmutableList; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter.MarshallingStrategiesListPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.model.Resolver; +import org.jbpm.workbench.wi.dd.model.ItemObjectModel; +import org.jbpm.workbench.wi.dd.model.Parameter; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.kie.workbench.common.screens.library.client.settings.util.KieEnumSelectElement; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +@RunWith(MockitoJUnitRunner.class) +public class ObjectItemPresenterTest { + + @Mock + private ObjectItemPresenter.View view; + + @Mock + private ParametersModal parametersModal; + + @Mock + private KieEnumSelectElement resolversSelect; + + private ObjectItemPresenter objectItemPresenter; + + @Before + public void before() { + objectItemPresenter = spy(new ObjectItemPresenter(view, + parametersModal, + resolversSelect)); + } + + @Test + public void testSetup() { + final ItemObjectModel model = spy(new ItemObjectModel(null, "Value", "reflection", ImmutableList.of(new Parameter("Foo", "Bar")))); + + objectItemPresenter.setup(model, mock(DeploymentsSectionPresenter.class)); + + verify(model, never()).setParameters(any()); + verify(view).init(eq(objectItemPresenter)); + verify(view).setValue(eq("Value")); + verify(view).setParametersCount(eq(1)); + verify(parametersModal).setup(any(), any()); + verify(resolversSelect).setup(any(), any(), eq(Resolver.REFLECTION), any()); + } + + @Test + public void testRemove() { + final DeploymentsSectionPresenter parentPresenter = mock(DeploymentsSectionPresenter.class); + final MarshallingStrategiesListPresenter listPresenter = mock(MarshallingStrategiesListPresenter.class); + + objectItemPresenter.parentPresenter = parentPresenter; + objectItemPresenter.setListPresenter(listPresenter); + + objectItemPresenter.remove(); + + verify(listPresenter).remove(eq(objectItemPresenter)); + verify(parentPresenter).fireChangeEvent(); + } + + @Test + public void testSignalParameterAddedOrRemoved() { + final DeploymentsSectionPresenter parentPresenter = mock(DeploymentsSectionPresenter.class); + objectItemPresenter.parentPresenter = parentPresenter; + objectItemPresenter.model = new ItemObjectModel(null, "Value", "reflection", ImmutableList.of(new Parameter("Foo", "Bar"))); + + objectItemPresenter.signalParameterAddedOrRemoved(); + + verify(view).setParametersCount(eq(1)); + verify(parentPresenter).fireChangeEvent(); + } +} \ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalTest.java new file mode 100644 index 0000000000..4cb9bd4479 --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalTest.java @@ -0,0 +1,69 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static java.util.Collections.emptyList; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +@RunWith(MockitoJUnitRunner.class) +public class ParametersModalTest { + + @Mock + private ParametersModalView view; + + @Mock + private ParametersModal.ParametersListPresenter parametersListPresenter; + + private ParametersModal parametersModal; + + @Before + public void before() { + parametersModal = spy(new ParametersModal(view, + parametersListPresenter)); + } + + @Test + public void testSetup() { + doNothing().when(parametersModal).superSetup(); + + parametersModal.setup(emptyList(), mock(ObjectPresenter.class)); + + verify(parametersModal).superSetup(); + verify(parametersListPresenter).setup(any(), any(), any()); + } + + @Test + public void testAdd() { + final ObjectPresenter parentPresenter = mock(ObjectPresenter.class); + parametersModal.parentPresenter = parentPresenter; + + parametersModal.add(); + + verify(parametersListPresenter).add(any()); + verify(parentPresenter).signalParameterAddedOrRemoved(); + } +} \ No newline at end of file diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemPresenterTest.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemPresenterTest.java new file mode 100644 index 0000000000..2aff40033f --- /dev/null +++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/test/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/RequiredRolesListItemPresenterTest.java @@ -0,0 +1,65 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items; + +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter; +import org.jbpm.workbench.wi.client.editors.deployment.descriptor.DeploymentsSectionPresenter.RequiredRolesListPresenter; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +@RunWith(MockitoJUnitRunner.class) +public class RequiredRolesListItemPresenterTest { + + @Mock + private RequiredRolesListItemPresenter.View view; + + private RequiredRolesListItemPresenter requiredRolesListItemPresenter; + + @Before + public void before() { + requiredRolesListItemPresenter = spy(new RequiredRolesListItemPresenter(view)); + } + + @Test + public void testSetup() { + requiredRolesListItemPresenter.setup("Role", mock(DeploymentsSectionPresenter.class)); + verify(view).init(eq(requiredRolesListItemPresenter)); + verify(view).setRole(eq("Role")); + } + + @Test + public void testRemove() { + final DeploymentsSectionPresenter parentPresenter = mock(DeploymentsSectionPresenter.class); + final RequiredRolesListPresenter listPresenter = mock(RequiredRolesListPresenter.class); + + requiredRolesListItemPresenter.parentPresenter = parentPresenter; + requiredRolesListItemPresenter.setListPresenter(listPresenter); + + requiredRolesListItemPresenter.remove(); + + verify(listPresenter).remove(eq(requiredRolesListItemPresenter)); + verify(parentPresenter).fireChangeEvent(); + } +} \ No newline at end of file