Using Vaadin 12 for admin console

This commit is contained in:
Nicolas Héron 2018-12-17 17:34:49 +01:00
commit f42ed3c71d
14 changed files with 584 additions and 282 deletions

View file

@ -1,76 +1,56 @@
package org.chtijbug.drools.console;
import com.vaadin.annotations.PreserveOnRefresh;
import com.vaadin.annotations.Push;
import com.vaadin.annotations.Theme;
import com.vaadin.navigator.Navigator;
import com.vaadin.server.VaadinRequest;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.ui.MenuBar;
import com.vaadin.ui.UI;
import org.chtijbug.drools.console.service.JenkinsService;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.KieServerRepositoryService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.view.DeploymentView;
import org.chtijbug.drools.console.view.TableLikeArtefactView;
import org.springframework.beans.factory.annotation.Autowired;
@Push
@Theme("mytheme")
@SpringUI
@PreserveOnRefresh
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.contextmenu.ContextMenu;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
@SuppressWarnings("serial")
public class DroolsAdminConsoleMainView extends UI {
public class DroolsAdminConsoleMainView extends VerticalLayout {
// @Autowired
// private GitLabRepositoryService gitLabRepositoryService;
private ContextMenu contextMenu;
private VerticalLayout actionView;
final UserConnected userConnected = new UserConnected();
// @Autowired
// private GitRepositoryService gitRepositoryService;
@Autowired
private KieRepositoryService kieRepositoryService;
@Autowired
private KieServerRepositoryService kieServerRepositoryService;
@Autowired
private JenkinsService jenkinsService;
final private Navigator navigator = new Navigator(this, this);
public DroolsAdminConsoleMainView() {
contextMenu = new ContextMenu();
this.add(contextMenu);
Component target = this;
contextMenu.setTarget(target);
contextMenu.addItem("Deployment",
e -> {
getUI().get().navigate("Deployment");
});
contextMenu.addItem("AssetUpdate",
e -> {
getUI().get().navigate("AssetUpdate");
});
actionView = new VerticalLayout();
//this.add(actionView);
}
@Override
protected void init(VaadinRequest request) {
public ContextMenu getContextMenu() {
return contextMenu;
}
public VerticalLayout getActionView() {
return actionView;
}
final DeploymentView deploymentView = new DeploymentView(userConnected);
final TableLikeArtefactView tableLikeArtefactView = new TableLikeArtefactView(userConnected);
MenuBar menuBar = new MenuBar();
navigator.addView("", new WelcomeView(userConnected, menuBar));
navigator.addView("Deployment", deploymentView);
navigator.addView("AssetUpdate", tableLikeArtefactView);
MenuBar.MenuItem subMenuDeployment = menuBar.addItem("Deployment", null);
MenuBar.MenuItem submenuAsset = menuBar.addItem("Asset", null);
// subMenuDeployment.addItem("Option 2", null);
//submenuAsset.addItem("Option 4", null);
subMenuDeployment.addItem("Deploy", (MenuBar.Command) menuItem -> {
navigator.navigateTo("Deployment");
deploymentView.refreshCombo();
});
submenuAsset.addItem("Asset Modification", (MenuBar.Command) selectedItem -> {
navigator.navigateTo("AssetUpdate");
tableLikeArtefactView.refreshList();
});
// this.setContent(menuBar);
public void setActionView(VerticalLayout actionView) {
this.add(actionView);
this.actionView = actionView;
}

View file

@ -5,7 +5,7 @@ import org.chtijbug.drools.console.service.util.ApplicationContextProvider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

View file

@ -1,64 +1,70 @@
package org.chtijbug.drools.console;
import com.vaadin.data.HasValue;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.PasswordField;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.Route;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.UserConnectedService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.springframework.beans.factory.annotation.Autowired;
public class WelcomeView extends VerticalLayout implements View {
import javax.annotation.PostConstruct;
@Route("")
public class WelcomeView extends DroolsAdminConsoleMainView {
private UserConnected userConnected;
private TextField userNameTextField;
private PasswordField userpasswdTextField;
private Button loginButton;
private Button logoutButton;
@Autowired
private KieRepositoryService kieRepositoryService;
@Autowired
private KieConfigurationData configKie;
public WelcomeView(UserConnected userConnected, MenuBar menuBar) {
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
@Autowired
private UserConnectedService userConnectedService;
this.userConnected = userConnected;
final VerticalLayout layout = new VerticalLayout();
layout.addComponent(menuBar);
this.configKie = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
// GitLabConfigurationData configGitLab = AppContext.getApplicationContext().getBean(GitLabConfigurationData.class);
// JenkinsConfigurationData jenkinsConfigurationData = AppContext.getApplicationContext().getBean(JenkinsConfigurationData.class);
public WelcomeView() {
super();
}
// gitLabRepositoryService = AppContext.getApplicationContext().getBean(GitLabRepositoryService.class);
@PostConstruct
public void buildUI() {
//jenkinsService = AppContext.getApplicationContext().getBean(JenkinsService.class);
layout.setMargin(true);
this.addComponent(layout);
userConnected = new UserConnected();
VerticalLayout verticalLayout = new VerticalLayout();
HorizontalLayout userHorizontal = new HorizontalLayout();
verticalLayout.add(userHorizontal);
TextField urlTextField = new TextField("Kie-Wb url");
urlTextField.setValue(configKie.getKiewbUrl());
urlTextField.setMaxLength(200);
userHorizontal.addComponent(urlTextField);
layout.addComponent(userHorizontal);
userHorizontal.add(urlTextField);
userNameTextField = new TextField("User name");
userNameTextField.setValue(configKie.getUserName());
userConnected.setUserName(configKie.getUserName());
userNameTextField.addValueChangeListener((HasValue.ValueChangeListener<String>) valueChangeEvent -> userConnected.setUserName(valueChangeEvent.getValue()));
userNameTextField.addValueChangeListener(valueChangeEvent -> userConnected.setUserName(valueChangeEvent.getValue()));
userHorizontal.addComponent(userNameTextField);
userHorizontal.add(userNameTextField);
userpasswdTextField = new PasswordField("Password");
userpasswdTextField.setValue(configKie.getPassword());
userConnected.setUserPassword(configKie.getPassword());
userpasswdTextField.addValueChangeListener((HasValue.ValueChangeListener<String>) valueChangeEvent -> userConnected.setUserPassword(valueChangeEvent.getValue()));
userHorizontal.addComponent(userpasswdTextField);
userpasswdTextField.addValueChangeListener(valueChangeEvent -> userConnected.setUserPassword(valueChangeEvent.getValue()));
userHorizontal.add(userpasswdTextField);
loginButton = new Button("login");
userHorizontal.addComponent(loginButton);
userHorizontal.add(loginButton);
logoutButton = new Button("logout");
logoutButton.setEnabled(false);
userHorizontal.addComponent(logoutButton);
userHorizontal.add(logoutButton);
loginButton.addClickListener((Button.ClickListener) event -> {
loginButton.addClickListener(event -> {
UserConnected connected = kieRepositoryService.login(this.configKie.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword());
userConnected.getProjectResponses().clear();
userConnected.getProjectResponses().addAll(connected.getProjectResponses());
@ -67,21 +73,20 @@ public class WelcomeView extends VerticalLayout implements View {
loginButton.setEnabled(false);
logoutButton.setEnabled(true);
userConnected.setConnected(true);
userConnectedService.addToSession(userConnected);
});
logoutButton.addClickListener((Button.ClickListener) event -> {
logoutButton.addClickListener(event -> {
userConnected.getRoles().clear();
userConnected.getProjectResponses().clear();
userConnected.setConnected(false);
loginButton.setEnabled(true);
logoutButton.setEnabled(false);
userConnectedService.addToSession(null);
});
setActionView(verticalLayout);
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
}
}

View file

@ -0,0 +1,46 @@
package org.chtijbug.drools.console.service;
import com.vaadin.flow.server.VaadinSession;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.springframework.stereotype.Service;
@Service
public class UserConnectedService {
public static String USER = "1";
public static String ASSET = "2";
public static String SPACE = "3";
public static String PROJECT = "4";
public UserConnected getUserConnected() {
return (UserConnected) VaadinSession.getCurrent().getAttribute(USER);
}
public void addToSession(UserConnected userConnected) {
VaadinSession.getCurrent().setAttribute(USER, userConnected);
}
public void addAssetToSession(String asset) {
VaadinSession.getCurrent().setAttribute(ASSET, asset);
}
public String getAsset() {
return (String) VaadinSession.getCurrent().getAttribute(ASSET);
}
public void addSpaceToSession(String spaceName) {
VaadinSession.getCurrent().setAttribute(SPACE, spaceName);
}
public String getSpace() {
return (String) VaadinSession.getCurrent().getAttribute(SPACE);
}
public void addProjectToSession(String projectName) {
VaadinSession.getCurrent().setAttribute(PROJECT, projectName);
}
public String getProject() {
return (String) VaadinSession.getCurrent().getAttribute(PROJECT);
}
}

View file

@ -1,14 +1,18 @@
package org.chtijbug.drools.console.view;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.vaadin.data.Binder;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import com.vaadin.ui.renderers.DateRenderer;
import com.vaadin.ui.renderers.TextRenderer;
import org.chtijbug.drools.console.AddLog;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.dependency.StyleSheet;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.data.binder.Binder;
import com.vaadin.flow.router.Route;
import org.chtijbug.drools.console.DroolsAdminConsoleMainView;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.UserConnectedService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
@ -16,6 +20,7 @@ import org.drools.workbench.models.datamodel.rule.InterpolationVariable;
import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLPersistenceImpl;
import org.drools.workbench.models.guided.template.shared.TemplateModel;
import javax.annotation.PostConstruct;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -24,80 +29,94 @@ import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
public class AssetEditView extends VerticalLayout implements AddLog, View {
@Route("AssetDetail")
@StyleSheet("css/accueil.css")
public class AssetEditView extends DroolsAdminConsoleMainView {
final private KieRepositoryService kieRepositoryService;
final private KieConfigurationData config;
private KieRepositoryService kieRepositoryService;
private KieConfigurationData config;
private UserConnected userConnected;
private String assetToUpdate;
private XmlMapper mapper = new XmlMapper();
private String spaceName;
private String projectName;
private Grid<Map<String, Object>> gridAssetTable;
private Button startUpdate;
private Button commitUpdate;
private Button undoUpdate;
private UserConnectedService userConnectedService;
private String spaceName;
private String projectName;
public AssetEditView() {
super();
}
@PostConstruct
public void buildUI() {
public AssetEditView(UserConnected userConnected, String spaceName, String projectName, String assetToUpdate) {
this.userConnected = userConnected;
this.assetToUpdate = assetToUpdate;
this.spaceName = spaceName;
this.projectName = projectName;
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
this.userConnected = userConnectedService.getUserConnected();
this.assetToUpdate = userConnectedService.getAsset();
this.spaceName = userConnectedService.getSpace();
this.projectName = userConnectedService.getProject();
String assetContent = kieRepositoryService.getAssetSource(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword(), spaceName, projectName, assetToUpdate);
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetContent);
VerticalLayout verticalLayout = new VerticalLayout();
HorizontalLayout actionButtons = new HorizontalLayout();
this.addComponent(actionButtons);
verticalLayout.add(actionButtons);
startUpdate = new Button("Update");
actionButtons.addComponent(startUpdate);
actionButtons.add(startUpdate);
startUpdate.addClickListener((Button.ClickListener) event -> {
startUpdate.addClickListener(event -> {
startUpdate.setEnabled(false);
commitUpdate.setEnabled(true);
undoUpdate.setEnabled(true);
gridAssetTable.setEnabled(true);
gridAssetTable.getEditor().setEnabled(true);
//gridAssetTable.getEditor().setEnabled(true);
});
commitUpdate = new Button("Commit");
commitUpdate.setEnabled(false);
commitUpdate.addClickListener((Button.ClickListener) event -> {
commitUpdate.addClickListener(event -> {
startUpdate.setEnabled(true);
commitUpdate.setEnabled(false);
undoUpdate.setEnabled(false);
gridAssetTable.getEditor().setEnabled(false);
// gridAssetTable.getEditor().setEnabled(false);
});
actionButtons.addComponent(commitUpdate);
actionButtons.add(commitUpdate);
undoUpdate = new Button("undo");
undoUpdate.setEnabled(false);
undoUpdate.addClickListener((Button.ClickListener) event -> {
undoUpdate.addClickListener(event -> {
startUpdate.setEnabled(true);
commitUpdate.setEnabled(false);
undoUpdate.setEnabled(false);
gridAssetTable.getEditor().setEnabled(false);
// gridAssetTable.getEditor().setEnabled(false);
fillTable(model);
});
actionButtons.addComponent(undoUpdate);
actionButtons.add(undoUpdate);
InterpolationVariable[] variablesList = model.getInterpolationVariablesList();
gridAssetTable = new Grid<>("Data");
this.addComponent(gridAssetTable);
gridAssetTable = new Grid<>();
verticalLayout.add(gridAssetTable);
gridAssetTable.setClassName("grid-perso");
gridAssetTable.setSelectionMode(Grid.SelectionMode.SINGLE);
Binder<Map<String, Object>> binder = gridAssetTable.getEditor().getBinder();
Binder<Map<String, Object>> binder = new Binder<>();
gridAssetTable.getEditor().setBinder(binder);
Map<String, Object> initRow = new HashMap<>();
for (InterpolationVariable i : variablesList) {
gridAssetTable.addColumn(hashmap -> hashmap.get(i.getVarName()));
/**
if (i.getDataType().equals("String")) {
Binder.Binding<Map<String, Object>, String> b = createTextField(i.getVarName(), binder);
initRow.put(i.getVarName(), i.getVarName());
gridAssetTable.addColumn(hashmap -> hashmap.get(i.getVarName()), new TextRenderer()).setEditorBinding(b).setCaption(i.getVarName());
gridAssetTable.addColumn(hashmap -> hashmap.get(i.getVarName()), new ComponentRenderer(()).setEditorBinding(b).setCaption(i.getVarName());
} else if (i.getDataType().equals("Date")) {
Binder.Binding<Map<String, Object>, LocalDate> b = createDateField(i.getVarName(), binder);
@ -108,10 +127,12 @@ public class AssetEditView extends VerticalLayout implements AddLog, View {
initRow.put(i.getVarName(), i.getVarName());
gridAssetTable.addColumn(hashmap -> hashmap.get(i.getVarName()), new com.vaadin.ui.renderers.TextRenderer()).setId(i.getVarName()).setEditorBinding(b).setCaption(i.getVarName());
}
**/
}
binder.setBean(giveInitRow(model));
fillTable(model);
gridAssetTable.setSizeFull();
setActionView(verticalLayout);
/**
*
*/
@ -130,7 +151,7 @@ public class AssetEditView extends VerticalLayout implements AddLog, View {
private Binder.Binding<Map<String, Object>, String> createTextField(String code, Binder<Map<String, Object>> binder) {
TextField tf = new TextField();
tf.setWidth(250, Unit.PIXELS);
//tf.setWidth(250, Plotter.Unit.PIXELS);
//bind element
@ -147,8 +168,8 @@ public class AssetEditView extends VerticalLayout implements AddLog, View {
}
private Binder.Binding<Map<String, Object>, LocalDate> createDateField(String code, Binder<Map<String, Object>> binder) {
DateField tf = new DateField();
tf.setWidth(250, Unit.PIXELS);
DatePicker tf = new DatePicker();
// tf.setWidth(250, Unit.PIXELS);
//bind element
@ -218,13 +239,5 @@ public class AssetEditView extends VerticalLayout implements AddLog, View {
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
}
@Override
public void addRow(String textToAdd) {
}
}

View file

@ -1,25 +1,33 @@
package org.chtijbug.drools.console.view;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.Route;
import org.chtijbug.drools.console.AddLog;
import org.chtijbug.drools.console.DroolsAdminConsoleMainView;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.KieServerRepositoryService;
import org.chtijbug.drools.console.service.UserConnectedService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.*;
import org.chtijbug.drools.console.service.util.AppContext;
import org.guvnor.rest.client.ProjectResponse;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
public class DeploymentView extends VerticalLayout implements AddLog, View {
@Route("Deployment")
public class DeploymentView extends DroolsAdminConsoleMainView implements AddLog {
final private Grid<List<String>> gridLogging = new Grid();
final private Button buttonDeployProject = new Button("Deploy project");
final private KieConfigurationData config;
private KieConfigurationData config;
private ComboBox<ProjectResponse> spaceSelection;
final private TextField projectArtifactIDTextField = new TextField("Project Artifact ID");
@ -27,34 +35,41 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
final private TextField projectVersionTextField = new TextField("Project Version");
final private TextField containerIdTextField = new TextField("Container ID");
final private KieRepositoryService kieRepositoryService;
private KieRepositoryService kieRepositoryService;
final private KieServerRepositoryService kieServerRepositoryService;
final private UserConnected userConnected;
private KieServerRepositoryService kieServerRepositoryService;
private UserConnectedService userConnectedService;
private UserConnected userConnected;
private List<String> logs = new ArrayList<>();
public DeploymentView(UserConnected userConnected) {
public DeploymentView() {
super();
}
@PostConstruct
public void buildUI() {
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
this.kieServerRepositoryService = AppContext.getApplicationContext().getBean(KieServerRepositoryService.class);
this.userConnected = userConnected;
this.userConnected = userConnectedService.getUserConnected();
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
VerticalLayout verticalLayout = new VerticalLayout();
Button button = new Button("Refresh");
// button.addStyleName(Runo.BUTTON_SMALL);
button.addClickListener((Button.ClickListener) event -> {
button.addClickListener(event -> {
this.refreshCombo();
this.refreshList();
});
this.addComponent(button);
verticalLayout.add(button);
spaceSelection = new ComboBox("Project", userConnected.getProjectResponses());
spaceSelection.setItemCaptionGenerator(ProjectResponse::getName);
spaceSelection.setItemLabelGenerator(ProjectResponse::getName);
spaceSelection.addValueChangeListener(valueChangeEvent -> {
ProjectResponse response = (ProjectResponse) spaceSelection.getValue();
projectArtifactIDTextField.setValue(response.getName());
@ -64,26 +79,23 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
});
this.addComponent(spaceSelection);
verticalLayout.add(spaceSelection);
projectArtifactIDTextField.setEnabled(false);
projectGroupIDTextField.setEnabled(false);
projectVersionTextField.setEnabled(false);
containerIdTextField.setEnabled(false);
this.addComponent(projectArtifactIDTextField);
this.addComponent(projectGroupIDTextField);
this.addComponent(projectVersionTextField);
this.addComponent(containerIdTextField);
verticalLayout.add(projectArtifactIDTextField);
verticalLayout.add(projectGroupIDTextField);
verticalLayout.add(projectVersionTextField);
verticalLayout.add(containerIdTextField);
this.buttonDeployProject.setEnabled(false);
this.addComponent(buttonDeployProject);
buttonDeployProject.setEnabled(false);
verticalLayout.add(buttonDeployProject);
// buttonDeployProject.addStyleName(Runo.BUTTON_SMALL);
buttonDeployProject.addClickListener((Button.ClickListener) event -> {
// if (containerIdTextField.getValue() != null
// && containerIdTextField.getValue().length() > 0) {
buttonDeployProject.addClickListener(event -> {
ProjectResponse response = (ProjectResponse) spaceSelection.getValue();
@ -117,7 +129,6 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
});
buttonDeployProject.setEnabled(false);
gridLogging.setCaption("Logging");
gridLogging.setSizeFull();
gridLogging.setColumnReorderingAllowed(false);
@ -126,7 +137,8 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
// gridLogging.addColumn("Message", new com.vaadin.ui.renderers.TextRenderer()).setCaption("Message");
this.addComponent(gridLogging);
verticalLayout.add(gridLogging);
setActionView(verticalLayout);
}
@ -158,8 +170,5 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
spaceSelection.setItems(userConnected.getProjectResponses());
}
}

View file

@ -1,30 +1,37 @@
package org.chtijbug.drools.console.view;
import com.vaadin.data.HasValue;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import org.chtijbug.drools.console.AddLog;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.dependency.StyleSheet;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
import org.chtijbug.drools.console.DroolsAdminConsoleMainView;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.KieServerRepositoryService;
import org.chtijbug.drools.console.service.UserConnectedService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
import org.guvnor.rest.client.ProjectResponse;
import javax.annotation.PostConstruct;
import java.util.*;
public class TableLikeArtefactView extends VerticalLayout implements AddLog, View {
@Route("AssetUpdate")
@StyleSheet("css/accueil.css")
public class TableLikeArtefactView extends DroolsAdminConsoleMainView {
final private KieConfigurationData config;
private KieConfigurationData config;
final private KieRepositoryService kieRepositoryService;
private KieRepositoryService kieRepositoryService;
final private KieServerRepositoryService kieServerRepositoryService;
private KieServerRepositoryService kieServerRepositoryService;
final private UserConnected userConnected;
private UserConnected userConnected;
private Grid<Map<String, String>> assetListGrid;
@ -35,26 +42,29 @@ public class TableLikeArtefactView extends VerticalLayout implements AddLog, Vie
private Button editRow;
private Button duplicateRow;
private UserConnectedService userConnectedService;
public TableLikeArtefactView(UserConnected userConnected) {
@PostConstruct
public void buildUI() {
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
this.kieServerRepositoryService = AppContext.getApplicationContext().getBean(KieServerRepositoryService.class);
this.userConnected = userConnected;
this.userConnected = userConnectedService.getUserConnected();
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
VerticalLayout verticalLayout = new VerticalLayout();
Button button = new Button("Refresh");
button.addClickListener((Button.ClickListener) event -> {
button.addClickListener(event -> {
this.refreshList();
});
this.addComponent(button);
verticalLayout.add(button);
spaceSelection = new ComboBox("Project", userConnected.getProjectResponses());
spaceSelection.setItemCaptionGenerator(ProjectResponse::getName);
spaceSelection.addValueChangeListener((HasValue.ValueChangeListener<ProjectResponse>) valueChangeEvent -> {
spaceSelection.setItemLabelGenerator(ProjectResponse::getName);
spaceSelection.addValueChangeListener(valueChangeEvent -> {
ProjectResponse response = (ProjectResponse) spaceSelection.getValue();
spaceSelection.setSelectedItem(response);
//spaceSelection.setSelectedItem(response);
assetListGrid.addColumn(hashmap -> hashmap.get("title"));
List<Asset> assets = kieRepositoryService.getListAssets(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword(), response.getSpaceName(), response.getName());
List<Map<String, String>> rows = new ArrayList<>();
@ -70,34 +80,38 @@ public class TableLikeArtefactView extends VerticalLayout implements AddLog, Vie
});
this.addComponent(spaceSelection);
verticalLayout.add(spaceSelection);
HorizontalLayout actionButtons = new HorizontalLayout();
this.addComponent(actionButtons);
verticalLayout.add(actionButtons);
duplicateRow = new Button("Duplicate");
actionButtons.addComponent(duplicateRow);
actionButtons.add(duplicateRow);
editRow = new Button("Edit");
actionButtons.addComponent(editRow);
actionButtons.add(editRow);
deleteRow = new Button("Delete");
assetListGrid = new Grid("List of assets");
assetListGrid = new Grid();
assetListGrid.setClassName("grid-perso");
assetListGrid.setSelectionMode(Grid.SelectionMode.SINGLE);
assetListGrid.setSizeFull();
this.addComponent(assetListGrid);
verticalLayout.add(assetListGrid);
editRow.addClickListener(clickEvent -> {
Set<Map<String, String>> selectedElements = assetListGrid.getSelectedItems();
if (selectedElements.toArray().length > 0) {
String assetName = ((Map<String, String>) selectedElements.toArray()[0]).get("title");
if (assetName != null) {
ProjectResponse response = (ProjectResponse) spaceSelection.getValue();
AssetEditView assetEditView = new AssetEditView(userConnected, response.getSpaceName(), response.getName(), assetName);
UI.getCurrent().getNavigator().addView("Asset-" + assetName, assetEditView);
UI.getCurrent().getNavigator().navigateTo("Asset-" + assetName);
userConnectedService.addAssetToSession(assetName);
userConnectedService.addProjectToSession(response.getName());
userConnectedService.addSpaceToSession(response.getSpaceName());
getUI().get().navigate("AssetDetail");
// AssetEditView assetEditView = new AssetEditView(userConnected, response.getSpaceName(), response.getName(), assetName);
}
}
});
setActionView(verticalLayout);
}
@ -107,13 +121,4 @@ public class TableLikeArtefactView extends VerticalLayout implements AddLog, Vie
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
spaceSelection.setItems(userConnected.getProjectResponses());
}
@Override
public void addRow(String textToAdd) {
}
}

View file

@ -1,7 +0,0 @@
/* This file is automatically managed and will be overwritten from time to time. */
/* Do not manually edit this file. */
/* Import and include this mixin into your project theme to include the addon themes */
@mixin addons {
}

View file

@ -1,30 +0,0 @@
// If you edit this file you need to compile the theme. See README.md for details.
// Global variable overrides. Must be declared before importing Valo.
// Defines the plaintext font size, weight and family. Font size affects general component sizing.
//$v-font-size: 16px;
//$v-font-weight: 300;
//$v-font-family: "Open Sans", sans-serif;
// Defines the border used by all components.
//$v-border: 1px solid (v-shade 0.7);
//$v-border-radius: 4px;
// Affects the color of some component elements, e.g Button, Panel title, etc
//$v-background-color: hsl(210, 0%, 98%);
// Affects the color of content areas, e.g Panel and Window content, TextField input etc
//$v-app-background-color: $v-background-color;
// Affects the visual appearance of all components
//$v-gradient: v-linear 8%;
//$v-bevel-depth: 30%;
//$v-shadow-opacity: 5%;
// Defines colors for indicating status (focus, success, failure)
//$v-focus-color: valo-focus-color(); // Calculates a suitable color automatically
//$v-friendly-color: #2c9720;
//$v-error-indicator-color: #ed473b;
// For more information, see: https://vaadin.com/book/-/page/themes.valo.html
// Example variants can be copy/pasted from https://vaadin.com/wiki/-/wiki/Main/Valo+Examples
@import "../valo/valo.scss";
@mixin mytheme {
@include valo;
// Insert your own theme rules here
}

View file

@ -1,11 +0,0 @@
@import "mytheme.scss";
@import "addons.scss";
// This file prefixes all rules with the theme name to avoid causing conflicts with other themes.
// The actual styles should be defined in mytheme.scss
.mytheme {
@include addons;
@include mytheme;
}

View file

@ -0,0 +1,184 @@
[INFO] com.pymmasoftware.jbpm:drools-framework-admin-console:war:1.0-SNAPSHOT
[INFO] +- com.pymmasoftware.jbpm:drools-framework-kie-wb-rest-pojo:jar:1.0-SNAPSHOT:compile
[INFO] | \- org.jboss.resteasy:resteasy-jaxb-provider:jar:3.6.2.Final:compile
[INFO] | +- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:1.0.0.Final:compile
[INFO] | +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.1:compile
[INFO] | | +- javax.xml.bind:jaxb-api:jar:2.3.1:compile
[INFO] | | +- org.glassfish.jaxb:txw2:jar:2.3.1:compile
[INFO] | | +- com.sun.istack:istack-commons-runtime:jar:3.0.7:compile
[INFO] | | +- org.jvnet.staxex:stax-ex:jar:1.8:compile
[INFO] | | +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.15:compile
[INFO] | | \- javax.activation:javax.activation-api:jar:1.2.0:compile
[INFO] | \- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
[INFO] +- org.drools:drools-workbench-models-guided-template:jar:7.15.0.Final:compile
[INFO] | +- org.kie:kie-api:jar:7.15.0.Final:compile
[INFO] | | \- org.kie.soup:kie-soup-maven-support:jar:7.15.0.Final:compile
[INFO] | +- org.kie:kie-internal:jar:7.15.0.Final:compile
[INFO] | +- org.drools:drools-compiler:jar:7.15.0.Final:compile
[INFO] | | +- org.antlr:antlr-runtime:jar:3.5.2:compile
[INFO] | | +- org.eclipse.jdt.core.compiler:ecj:jar:4.4.2:compile
[INFO] | | +- org.mvel:mvel2:jar:2.4.3.Final:compile
[INFO] | | \- com.google.protobuf:protobuf-java:jar:3.6.1:compile
[INFO] | +- org.kie.soup:kie-soup-commons:jar:7.15.0.Final:compile
[INFO] | +- org.kie.soup:kie-soup-project-datamodel-api:jar:7.15.0.Final:compile
[INFO] | +- org.kie.soup:kie-soup-project-datamodel-commons:jar:7.15.0.Final:compile
[INFO] | +- org.drools:drools-workbench-models-commons:jar:7.15.0.Final:compile
[INFO] | | \- org.apache.commons:commons-lang3:jar:3.8.1:compile
[INFO] | +- org.drools:drools-core:jar:7.15.0.Final:compile
[INFO] | +- org.drools:drools-templates:jar:7.15.0.Final:compile
[INFO] | +- org.drools:drools-workbench-models-datamodel-api:jar:7.15.0.Final:compile
[INFO] | +- com.thoughtworks.xstream:xstream:jar:1.4.10:compile
[INFO] | | +- xmlpull:xmlpull:jar:1.1.3.1:compile
[INFO] | | \- xpp3:xpp3_min:jar:1.1.4c:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.2:compile
[INFO] +- com.offbytwo.jenkins:jenkins-client:jar:0.3.8:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.9:compile
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | +- net.sf.json-lib:json-lib:jar:jdk15:2.4:compile
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.8.3:compile
[INFO] | | +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] | | +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | | \- net.sf.ezmorph:ezmorph:jar:1.0.6:compile
[INFO] | +- com.google.guava:guava:jar:13.0.1:compile
[INFO] | +- commons-lang:commons-lang:jar:2.6:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.6:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.3.3:compile
[INFO] | +- org.apache.httpcomponents:httpmime:jar:4.5.6:compile
[INFO] | +- jaxen:jaxen:jar:1.1.6:compile
[INFO] | \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] +- com.vaadin:vaadin-core:jar:12.0.2:compile
[INFO] | +- com.vaadin:flow-server:jar:1.2.3:compile
[INFO] | | +- com.vaadin.external.gwt:gwt-elemental:jar:2.8.2.vaadin2:compile
[INFO] | | +- commons-fileupload:commons-fileupload:jar:1.3.3:compile
[INFO] | | +- org.jsoup:jsoup:jar:1.10.3:compile
[INFO] | | +- com.helger:ph-css:jar:6.1.1:compile
[INFO] | | +- com.helger:ph-commons:jar:9.1.2:compile
[INFO] | | | \- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] | | +- net.bytebuddy:byte-buddy:jar:1.9.3:compile
[INFO] | | \- com.vaadin.external:gentyref:jar:1.2.0.vaadin1:compile
[INFO] | +- com.vaadin:flow-push:jar:1.2.3:compile
[INFO] | | \- com.vaadin.external.atmosphere:atmosphere-runtime:jar:2.4.30.vaadin1:compile
[INFO] | | \- com.vaadin.external.slf4j:vaadin-slf4j-jdk14:jar:1.6.1:compile
[INFO] | +- com.vaadin:flow-client:jar:1.2.3:compile
[INFO] | +- com.vaadin:flow-html-components:jar:1.2.3:compile
[INFO] | +- com.vaadin:flow-data:jar:1.2.3:compile
[INFO] | | \- javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO] | +- com.vaadin:vaadin-lumo-theme:jar:1.2.3:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-lumo-styles:jar:1.3.3:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-icon:jar:2.1.0:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-meta:jar:2.1.1:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-iconset-svg:jar:2.2.1:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-flex-layout:jar:2.0.3:compile
[INFO] | | +- org.webjars.bowergithub.polymer:polymer:jar:2.6.1:compile
[INFO] | | +- org.webjars.bowergithub.webcomponents:webcomponentsjs:jar:1.2.6:compile
[INFO] | | \- org.webjars.bowergithub.webcomponents:shadycss:jar:1.5.0-1:compile
[INFO] | +- com.vaadin:vaadin-material-theme:jar:1.2.3:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-material-styles:jar:1.2.0:compile
[INFO] | +- com.vaadin:vaadin-button-flow:jar:1.2.0:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-button:jar:2.1.1:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-element-mixin:jar:2.1.2:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-usage-statistics:jar:2.0.1:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-development-mode-detector:jar:2.0.0:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-control-state-mixin:jar:2.1.2:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-themable-mixin:jar:1.3.2:compile
[INFO] | +- com.vaadin:vaadin-checkbox-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-checkbox:jar:2.2.4:compile
[INFO] | +- com.vaadin:vaadin-combo-box-flow:jar:2.0.1:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-combo-box:jar:4.2.0:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-text-field:jar:2.1.5:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-resizable-behavior:jar:2.1.1:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-a11y-announcer:jar:2.1.0:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-list:jar:2.0.19:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-scroll-target-behavior:jar:2.1.1:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-a11y-keys-behavior:jar:2.1.1:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-item:jar:2.1.0:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-overlay:jar:3.2.4:compile
[INFO] | | +- org.webjars.bowergithub.polymerelements:iron-overlay-behavior:jar:2.3.4:compile
[INFO] | | \- org.webjars.bowergithub.polymerelements:iron-fit-behavior:jar:2.2.1:compile
[INFO] | +- com.vaadin:vaadin-date-picker-flow:jar:1.2.1:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-date-picker:jar:3.3.2:compile
[INFO] | | \- org.webjars.bowergithub.polymerelements:iron-media-query:jar:2.1.0:compile
[INFO] | +- com.vaadin:vaadin-dialog-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-dialog:jar:2.2.1:compile
[INFO] | +- com.vaadin:vaadin-form-layout-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-form-layout:jar:2.1.1:compile
[INFO] | +- com.vaadin:vaadin-grid-flow:jar:2.1.3:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-grid:jar:5.2.5:compile
[INFO] | +- com.vaadin:vaadin-icons-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-icons:jar:4.2.1:compile
[INFO] | +- com.vaadin:vaadin-iron-list-flow:jar:1.2.1:compile
[INFO] | +- com.vaadin:vaadin-list-box-flow:jar:1.2.0:compile
[INFO] | | +- org.webjars.bowergithub.vaadin:vaadin-list-box:jar:1.1.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-list-mixin:jar:2.1.2:compile
[INFO] | +- com.vaadin:vaadin-ordered-layout-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-ordered-layout:jar:1.1.0:compile
[INFO] | +- com.vaadin:vaadin-progress-bar-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-progress-bar:jar:1.1.0:compile
[INFO] | +- com.vaadin:vaadin-radio-button-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-radio-button:jar:1.1.3:compile
[INFO] | +- com.vaadin:vaadin-split-layout-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-split-layout:jar:4.1.0:compile
[INFO] | +- com.vaadin:vaadin-tabs-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-tabs:jar:2.1.1:compile
[INFO] | +- com.vaadin:vaadin-text-field-flow:jar:1.2.1:compile
[INFO] | +- com.vaadin:vaadin-upload-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-upload:jar:4.2.1:compile
[INFO] | +- com.vaadin:vaadin-notification-flow:jar:1.2.0:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-notification:jar:1.2.1:compile
[INFO] | +- com.vaadin:vaadin-app-layout-flow:jar:1.0.3:compile
[INFO] | | \- org.webjars.bowergithub.vaadin:vaadin-app-layout:jar:1.0.2:compile
[INFO] | \- com.vaadin:vaadin-context-menu-flow:jar:1.2.2:compile
[INFO] | \- org.webjars.bowergithub.vaadin:vaadin-context-menu:jar:4.2.1:compile
[INFO] +- com.vaadin:vaadin-spring-boot-starter:jar:12.0.2:compile
[INFO] | \- org.springframework.boot:spring-boot-starter-web:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.1.0.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.1.0.RELEASE:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.0.9:test
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.2.3:test
[INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.1:compile
[INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.11.1:compile
[INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
[INFO] | | +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.23:runtime
[INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.1.0.RELEASE:compile
[INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.7:compile
[INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.7:compile
[INFO] | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.7:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.0.RELEASE:compile
[INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.12:compile
[INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.12:compile
[INFO] | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.12:compile
[INFO] | +- org.hibernate.validator:hibernate-validator:jar:6.0.13.Final:compile
[INFO] | | \- com.fasterxml:classmate:jar:1.4.0:compile
[INFO] | \- org.springframework:spring-web:jar:5.1.2.RELEASE:compile
[INFO] +- com.vaadin:vaadin-spring:jar:10.1.1:compile
[INFO] | +- org.springframework:spring-webmvc:jar:5.1.2.RELEASE:compile
[INFO] | | +- org.springframework:spring-aop:jar:5.1.2.RELEASE:compile
[INFO] | | +- org.springframework:spring-beans:jar:5.1.2.RELEASE:compile
[INFO] | | \- org.springframework:spring-expression:jar:5.1.2.RELEASE:compile
[INFO] | \- org.springframework:spring-websocket:jar:5.1.2.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-autoconfigure:jar:2.1.0.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework:spring-core:jar:5.1.2.RELEASE:compile
[INFO] | | \- org.springframework:spring-jcl:jar:5.1.2.RELEASE:compile
[INFO] | \- org.springframework:spring-context:jar:4.3.16.RELEASE:compile
[INFO] +- org.uberfire:uberfire-rest-client:jar:2.9.0.Final:compile
[INFO] | \- org.jboss.errai:errai-common:jar:4.3.3.Final:compile
[INFO] | +- com.google.jsinterop:jsinterop-annotations:jar:1.0.1:compile
[INFO] | +- org.jboss.errai.reflections:reflections:jar:4.3.3.Final:compile
[INFO] | | \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | +- junit:junit:jar:4.12:compile
[INFO] | | \- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] | +- de.benediktmeurer.gwt-slf4j:gwt-slf4j:jar:0.0.2:compile
[INFO] | \- com.google.elemental2:elemental2-dom:jar:1.0.0-beta-1:compile
[INFO] | +- com.google.jsinterop:base:jar:1.0.0-beta-1:compile
[INFO] | +- com.google.elemental2:elemental2-core:jar:1.0.0-beta-1:compile
[INFO] | \- com.google.elemental2:elemental2-promise:jar:1.0.0-beta-1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.4:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.4:compile
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.9.4:compile
[INFO] | +- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile
[INFO] | \- com.fasterxml.woodstox:woodstox-core:jar:5.0.3:compile
[INFO] +- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.4:compile
[INFO] +- commons-codec:commons-codec:jar:1.11:compile
[INFO] \- commons-io:commons-io:jar:2.1:compile