added updateURL, updateUsername and updatePassword fields to SwissTimingEventManagementPanel

Change-Id: I86ed5a341baace0cd028e385bcfb5f44e56c2e03
This commit is contained in:
Axel Uhl committed 2018-08-02 14:36:52 +02:00
1 parent 4523c583f8
commit eda96aa5da
16 files changed
+126 -44

No files matched your search

@@ -2,7 +2,8 @@ package com.sap.sailing.domain.swisstimingadapter.persistence.impl;
public enum FieldNames {
// SwissTiming configuration parameters:
ST_CONFIG_NAME, ST_CONFIG_HOSTNAME, ST_CONFIG_PORT, ST_CONFIG_JSON_URL, ST_ARCHIVE_JSON_URL,
ST_CONFIG_NAME, ST_CONFIG_HOSTNAME, ST_CONFIG_PORT, ST_CONFIG_JSON_URL, ST_CONFIG_UPDATE_URL,
ST_CONFIG_UPDATE_USERNAME, ST_CONFIG_UPDATE_PASSWORD, ST_ARCHIVE_JSON_URL,
// last message count field:
LAST_MESSAGE_COUNT,
@@ -37,8 +37,8 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
DBCollection stConfigs = database.getCollection(CollectionNames.SWISSTIMING_CONFIGURATIONS.name());
for (DBObject o : stConfigs.find()) {
SwissTimingConfiguration stConfig = loadSwissTimingConfiguration(o);
// the old swisstiming config was not based on a json URL -> ignore such configs
if(stConfig.getJsonURL() != null) {
// the old SwissTiming configuration was not based on a JSON URL -> ignore such configurations
if (stConfig.getJsonURL() != null) {
result.add(stConfig);
}
}
@@ -57,8 +57,10 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
String jsonURL = (String) object.get(FieldNames.ST_CONFIG_JSON_URL.name());
String hostname = (String) object.get(FieldNames.ST_CONFIG_HOSTNAME.name());
Integer port = (Integer) object.get(FieldNames.ST_CONFIG_PORT.name());
return swissTimingFactory.createSwissTimingConfiguration(name, jsonURL, hostname, port);
String updateURL = (String) object.get(FieldNames.ST_CONFIG_UPDATE_URL.name());
String updateUsername = (String) object.get(FieldNames.ST_CONFIG_UPDATE_USERNAME.name());
String updatePassword = (String) object.get(FieldNames.ST_CONFIG_UPDATE_PASSWORD.name());
return swissTimingFactory.createSwissTimingConfiguration(name, jsonURL, hostname, port, updateURL, updateUsername, updatePassword);
}
@Override
@@ -96,6 +98,9 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
result.put(FieldNames.ST_CONFIG_JSON_URL.name(), swissTimingConfiguration.getJsonURL());
result.put(FieldNames.ST_CONFIG_HOSTNAME.name(), swissTimingConfiguration.getHostname());
result.put(FieldNames.ST_CONFIG_PORT.name(), swissTimingConfiguration.getPort());
result.put(FieldNames.ST_CONFIG_UPDATE_URL.name(), swissTimingConfiguration.getUpdateURL());
result.put(FieldNames.ST_CONFIG_UPDATE_USERNAME.name(), swissTimingConfiguration.getUpdateUsername());
result.put(FieldNames.ST_CONFIG_UPDATE_PASSWORD.name(), swissTimingConfiguration.getUpdatePassword());
stConfigCollection.insert(result);
}
@@ -14,4 +14,10 @@ public interface SwissTimingConfiguration {
String getHostname();
Integer getPort();
String getUpdateURL();
String getUpdateUsername();
String getUpdatePassword();
}
@@ -49,7 +49,7 @@ public interface SwissTimingFactory {
SailMasterTransceiver createSailMasterTransceiver();
SwissTimingConfiguration createSwissTimingConfiguration(String name, String jsonURL, String hostname, Integer port);
SwissTimingConfiguration createSwissTimingConfiguration(String name, String jsonURL, String hostname, Integer port, String updateURL, String updateUsername, String updatePassword);
SwissTimingRaceTracker createRaceTracker(String raceID, String raceName, String raceDescription,
BoatClass boatClass, String hostname, int port, StartList startList, long delayToLiveInMillis,
@@ -7,13 +7,19 @@ public class SwissTimingConfigurationImpl implements SwissTimingConfiguration {
private final String jsonURL;
private final String hostname;
private final Integer port;
private final String updateURL;
private final String updateUsername;
private final String updatePassword;
public SwissTimingConfigurationImpl(String name, String jsonURL, String hostname, Integer port) {
public SwissTimingConfigurationImpl(String name, String jsonURL, String hostname, Integer port, String updateURL, String updateUsername, String updatePassword) {
super();
this.name = name;
this.jsonURL = jsonURL;
this.hostname = hostname;
this.port = port;
this.updateURL = updateURL;
this.updateUsername = updateUsername;
this.updatePassword = updatePassword;
}
@Override
@@ -36,4 +42,15 @@ public class SwissTimingConfigurationImpl implements SwissTimingConfiguration {
return port;
}
public String getUpdateURL() {
return updateURL;
}
public String getUpdateUsername() {
return updateUsername;
}
public String getUpdatePassword() {
return updatePassword;
}
}
@@ -83,8 +83,8 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
}
@Override
public SwissTimingConfiguration createSwissTimingConfiguration(String name, String jsonURL, String hostname, Integer port) {
return new SwissTimingConfigurationImpl(name, jsonURL, hostname, port);
public SwissTimingConfiguration createSwissTimingConfiguration(String name, String jsonURL, String hostname, Integer port, String updateURL, String updateUsername, String updatePassword) {
return new SwissTimingConfigurationImpl(name, jsonURL, hostname, port, updateURL, updateUsername, updatePassword);
}
@Override
@@ -25,6 +25,7 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.IntegerBox;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
@@ -62,6 +63,9 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
private final ListBox previousConfigurationsComboBox;
private final TextBox eventIdBox;
private final TextBox jsonUrlBox;
private final TextBox updateURLBox;
private final TextBox updateUsernameBox;
private final PasswordTextBox updatePasswordBox;
private final TextBox hostnameTextbox;
private final IntegerBox portIntegerbox;
private final List<SwissTimingRaceRecordDTO> availableSwissTimingRaces = new ArrayList<SwissTimingRaceRecordDTO>();
@@ -75,22 +79,16 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
RegattaRefresher regattaRefresher, StringMessages stringConstants) {
super(sailingService, regattaRefresher, errorReporter, true, stringConstants);
this.errorReporter = errorReporter;
VerticalPanel mainPanel = new VerticalPanel();
this.setWidget(mainPanel);
mainPanel.setWidth("100%");
CaptionPanel captionPanelConnections = new CaptionPanel(stringConstants.connections());
mainPanel.add(captionPanelConnections);
VerticalPanel verticalPanel = new VerticalPanel();
captionPanelConnections.setContentWidget(verticalPanel);
captionPanelConnections.setStyleName("bold");
Grid connectionsGrid = new Grid(6, 2);
Grid connectionsGrid = new Grid(9, 2);
verticalPanel.add(connectionsGrid);
previousConfigurations = new HashMap<String, SwissTimingConfigurationDTO>();
previousConfigurationsComboBox = new ListBox();
connectionsGrid.setWidget(0, 1, previousConfigurationsComboBox);
@@ -107,10 +105,6 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
}
});
fillConfigurations();
jsonUrlBox = new TextBox();
jsonUrlBox.getElement().getStyle().setWidth(50, Unit.EM);
connectionsGrid.setWidget(0, 0, new Label(stringMessages.swissTimingEvents() + ":"));
connectionsGrid.setWidget(0, 1, previousConfigurationsComboBox);
@@ -125,6 +119,8 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
}
});
jsonUrlBox = new TextBox();
jsonUrlBox.getElement().getStyle().setWidth(50, Unit.EM);
connectionsGrid.setWidget(2, 0, new Label(stringMessages.manage2SailEventURLBox() + ":"));
connectionsGrid.setWidget(2, 1, jsonUrlBox);
jsonUrlBox.addChangeHandler(event -> {
@@ -142,8 +138,23 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
connectionsGrid.setWidget(4, 0, new Label(stringMessages.manage2SailPort() + ":"));
connectionsGrid.setWidget(4, 1, portIntegerbox);
updateURLBox = new TextBox();
updateURLBox.getElement().getStyle().setWidth(50, Unit.EM);
connectionsGrid.setWidget(5, 0, new Label(stringMessages.swissTimingUpdateURL() + ":"));
connectionsGrid.setWidget(5, 1, updateURLBox);
updateUsernameBox = new TextBox();
updateUsernameBox.getElement().getStyle().setWidth(50, Unit.EM);
connectionsGrid.setWidget(6, 0, new Label(stringMessages.swissTimingUpdateUsername() + ":"));
connectionsGrid.setWidget(6, 1, updateUsernameBox);
updatePasswordBox = new PasswordTextBox();
updatePasswordBox.getElement().getStyle().setWidth(50, Unit.EM);
connectionsGrid.setWidget(7, 0, new Label(stringMessages.swissTimingUpdatePassword() + ":"));
connectionsGrid.setWidget(7, 1, updatePasswordBox);
Button btnListRaces = new Button(stringConstants.listRaces());
connectionsGrid.setWidget(5, 1, btnListRaces);
connectionsGrid.setWidget(8, 1, btnListRaces);
btnListRaces.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -459,6 +470,9 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
private void fillRaces(final SailingServiceAsync sailingService) {
final String jsonUrl = jsonUrlBox.getValue();
final String updateURL = updateURLBox.getValue();
final String updateUsername = updateUsernameBox.getValue();
final String updatePassword = updatePasswordBox.getValue();
sailingService.getRacesOfSwissTimingEvent(jsonUrl, new AsyncCallback<SwissTimingEventRecordDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -469,21 +483,18 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
@Override
public void onSuccess(final SwissTimingEventRecordDTO result) {
availableSwissTimingRaces.clear();
if (result != null)
if (result != null) {
availableSwissTimingRaces.addAll(result.races);
}
raceList.getList().clear();
raceList.getList().addAll(availableSwissTimingRaces);
filterablePanelEvents.getTextBox().setText(null);
filterablePanelEvents.updateAll(result.races);
// store a successful configuration in the database for later retrieval
final String hostname = result.trackingDataHost;
final Integer port = result.trackingDataPort;
final String configName = result.eventName;
sailingService.storeSwissTimingConfiguration(configName, jsonUrl, hostname, port,
sailingService.storeSwissTimingConfiguration(configName, jsonUrl, hostname, port, updateURL, updateUsername, updatePassword,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -495,7 +506,7 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
public void onSuccess(Void voidResult) {
// refresh list of previous configurations
SwissTimingConfigurationDTO stConfig = new SwissTimingConfigurationDTO(configName, jsonUrl,
hostname, port);
hostname, port, updateURL, updateUsername, updatePassword);
if (previousConfigurations.put(stConfig.getName(), stConfig) == null) {
previousConfigurationsComboBox.addItem(stConfig.getName());
}
@@ -549,6 +560,9 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
hostnameTextbox.setValue(stConfig.getHostname());
portIntegerbox.setValue(stConfig.getPort());
jsonUrlBox.setValue(stConfig.getJsonURL());
updateURLBox.setValue(stConfig.getUpdateURL());
updateUsernameBox.setValue(stConfig.getUpdateUsername());
updatePasswordBox.setValue(stConfig.getUpdatePassword());
}
}
}
@@ -28,6 +28,7 @@ import com.google.gwt.user.client.ui.HTMLTable.ColumnFormatter;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@@ -79,7 +80,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
private TextBox jsonURLTextBox;
private TextBox tracTracUpdateURITextBox;
private TextBox tractracUsernameTextBox;
private TextBox tractracPasswordTextBox;
private PasswordTextBox tractracPasswordTextBox;
private Label loadingMessageLabel;
private LabeledAbstractFilterablePanel<TracTracRaceRecordDTO> racesFilterablePanel;
@@ -199,7 +200,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
grid.setWidget(6, 1, tractracUsernameTextBox);
// TracTrac Password
tractracPasswordTextBox = new TextBox();
tractracPasswordTextBox = new PasswordTextBox();
tractracPasswordTextBox.ensureDebugId("TracTracPasswordTextBox");
tractracPasswordTextBox.setVisibleLength(40);
@@ -222,10 +223,8 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
}
});
grid.setWidget(9, 1, listRacesButton);
loadingMessageLabel = new Label();
grid.setWidget(9, 2, loadingMessageLabel);
return connectionsPanel;
}
@@ -285,7 +285,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
SwissTimingEventRecordDTO getRacesOfSwissTimingEvent(String eventJsonURL) throws Exception;
void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, Integer port);
void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, Integer port, String updateURL, String updateUsername, String updatePassword);
String[] getCountryCodes();
@@ -333,7 +333,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void getRacesOfSwissTimingEvent(String eventJsonUrl, AsyncCallback<SwissTimingEventRecordDTO> asyncCallback);
void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, Integer port,
AsyncCallback<Void> asyncCallback);
String updateURL, String updateUsername, String updatePassword, AsyncCallback<Void> asyncCallback);
void getCountryCodes(AsyncCallback<String[]> callback);
@@ -2093,4 +2093,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String manage2SailEventIdBoxTooltip();
String manage2SailPort();
String windFinderSpotCollectionsList();
String swissTimingUpdateURL();
String swissTimingUpdateUsername();
String swissTimingUpdatePassword();
}
@@ -2086,4 +2086,7 @@ gender=Gender
manage2SailEventIdBox=Manage2Sail Event ID
manage2SailEventURLBox=Manage2Sail EventURL (json)
manage2SailEventIdBoxTooltip=Event ID or a URL that contains the event ID from Manage2Sail
manage2SailPort=Port
manage2SailPort=Port
swissTimingUpdateURL=Update URL (e.g., for start time and course change feedback)
swissTimingUpdateUsername=Username for sending updates
swissTimingUpdatePassword=Password for sending updates
@@ -2081,4 +2081,7 @@ gender=Geschlecht
manage2SailEventId=Manage2Sail Event ID
manage2SailEventURL=Manage2Sail Event URL (json)
manage2SailEventIdBoxTooltip=Event ID von Manage 2 Sail oder URL die die Event ID beinhaltet
manage2SailPort=Port
manage2SailPort=Port
swissTimingUpdateURL=Update URL (z.B. für Startzeit-Übertragung)
swissTimingUpdateUsername=Benutzername zum Versenden der Updates
swissTimingUpdatePassword=Passwort zum Versenden der Updates
@@ -2829,7 +2829,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
Iterable<SwissTimingConfiguration> configs = swissTimingAdapterPersistence.getSwissTimingConfigurations();
List<SwissTimingConfigurationDTO> result = new ArrayList<SwissTimingConfigurationDTO>();
for (SwissTimingConfiguration stConfig : configs) {
result.add(new SwissTimingConfigurationDTO(stConfig.getName(), stConfig.getJsonURL(), stConfig.getHostname(), stConfig.getPort()));
result.add(new SwissTimingConfigurationDTO(stConfig.getName(), stConfig.getJsonURL(),
stConfig.getHostname(), stConfig.getPort(), stConfig.getUpdateURL(), stConfig.getUpdateUsername(),
stConfig.getUpdatePassword()));
}
return result;
}
@@ -2867,9 +2869,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
@Override
public void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, Integer port) {
public void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, Integer port, String updateURL, String updateUsername, String updatePassword) {
if (!jsonURL.equalsIgnoreCase("test")) {
swissTimingAdapterPersistence.storeSwissTimingConfiguration(swissTimingFactory.createSwissTimingConfiguration(configName, jsonURL, hostname, port));
swissTimingAdapterPersistence.storeSwissTimingConfiguration(swissTimingFactory.createSwissTimingConfiguration(configName, jsonURL, hostname, port, updateURL, updateUsername, updatePassword));
}
}
@@ -8,14 +8,33 @@ public class SwissTimingConfigurationDTO implements IsSerializable {
private String hostname;
private Integer port;
/**
* The URL to use for updates fed back to the SwissTiming server, such as changes of race timings
* or course updates.
*/
private String updateURL;
/**
* The username to use as part of the credentials for requests to the {@link #updateURL}.
*/
private String updateUsername;
/**
* The password to use as part of the credentials for requests to the {@link #updateURL}.
*/
private String updatePassword;
public SwissTimingConfigurationDTO() {}
public SwissTimingConfigurationDTO(String name, String jsonURL, String hostname, Integer port) {
public SwissTimingConfigurationDTO(String name, String jsonURL, String hostname, Integer port, String updateURL, String updateUsername, String updatePassword) {
super();
this.name = name;
this.jsonURL = jsonURL;
this.hostname = hostname;
this.port = port;
this.updateURL = updateURL;
this.updateUsername = updateUsername;
this.updatePassword = updatePassword;
}
public String getName() {
@@ -33,5 +52,16 @@ public class SwissTimingConfigurationDTO implements IsSerializable {
public Integer getPort() {
return port;
}
public String getUpdateURL() {
return updateURL;
}
public String getUpdateUsername() {
return updateUsername;
}
public String getUpdatePassword() {
return updatePassword;
}
}
@@ -7,7 +7,7 @@
<listAttribute key="com.gwtplugins.gwt.eclipse.core.ENTRY_POINT_MODULES">
<listEntry value="com.sap.sse.security.ui.Login"/>
<listEntry value="com.sap.sse.security.ui.Register"/>
<listEntry value="com.sap.sse.security.ui.UserManagement"/>
<listEntry value="com.sap.sse.security.ui.UserManagementEntryPoint"/>
<listEntry value="com.sap.sse.security.ui.OAuthLogin"/>
<listEntry value="com.sap.sse.security.ui.EmailValidation"/>
<listEntry value="com.sap.sse.security.ui.EditProfile"/>
@@ -38,7 +38,6 @@
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.datamining.annotations/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.security.common/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sse.shared.android/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.json.simple/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.sap.sailing.geocoding/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
@@ -105,7 +104,7 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.gwtplugins.gwt.eclipse.core.moduleClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-incremental -workDir &quot;${project_loc:com.sap.sse.security.ui}/.tmp/gwt-work&quot; -war &quot;${project_loc:com.sap.sse.security.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9876 -startupUrl /security/ui/Login.html -startupUrl /security/ui/EditProfile.html -startupUrl /security/ui/EmailValidation.html -startupUrl /security/ui/UserManagement.html -startupUrl /security/ui/Register.html -startupUrl /security/ui/Login.html com.sap.sse.security.ui.EditProfile com.sap.sse.security.ui.EmailValidation com.sap.sse.security.ui.OAuthLogin com.sap.sse.security.ui.UserManagement com.sap.sse.security.ui.Register com.sap.sse.security.ui.Login"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-incremental -workDir &quot;${project_loc:com.sap.sse.security.ui}/.tmp/gwt-work&quot; -war &quot;${project_loc:com.sap.sse.security.ui}&quot; -noserver -remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9876 -startupUrl /security/ui/Login.html -startupUrl /security/ui/EditProfile.html -startupUrl /security/ui/EmailValidation.html -startupUrl /security/ui/UserManagement.html -startupUrl /security/ui/Register.html -startupUrl /security/ui/Login.html com.sap.sse.security.ui.EditProfile com.sap.sse.security.ui.EmailValidation com.sap.sse.security.ui.OAuthLogin com.sap.sse.security.ui.UserManagementEntryPoint com.sap.sse.security.ui.Register com.sap.sse.security.ui.Login"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sse.security.ui"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:+UseG1GC -XX:+UseStringDeduplication -Dgwt.watchFileChanges=false -Xmx2048m -Dgwt-usearchives=false -Dgwt.persistentunitcache=false"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.sap.sailing.gwt.ui}/.tmp/gwt-work"/>