23 changed files
core/src | ||
main/java/edu/wpi/grip/core | ||
events | ||
AppSettingsChangedEvent.java + | ||
http | ||
GripServer.java | ||
HttpPipelineSwitcher.java | ||
serialization | ||
Project.java | ||
settings | ||
AppSettings.java + | ||
ProjectSettings.java | ||
Setting.java | ||
Settings.java + | ||
SettingsProvider.java | ||
CoreCommandLineHelper.java | ||
Main.java | ||
Pipeline.java | ||
test/java/edu/wpi/grip/core | ||
http | ||
GripServerTest.java | ||
HttpPipelineSwitcherTest.java | ||
operations/network/http | ||
HttpPublisherTest.java | ||
sources | ||
HttpSourceTest.java | ||
SourcesSanityTest.java | ||
ui/src/main/java/edu/wpi/grip | ||
core/settings | ||
AppSettingsBeanInfo.java + | ||
ProjectSettingsBeanInfo.java + | ||
SimpleSettingsBeanInfo.java rename, edit | ||
ui | ||
Main.java | ||
MainWindowController.java | ||
ProjectSettingsEditor.java | ||
AppSettingsChangedEvent.java
/core/src/main/java/edu/wpi/grip/core/events/AppSettingsChangedEvent.java+23/core/src/main/java/edu/wpi/grip/core/events/AppSettingsChangedEvent.java
Add comment 1 Plus package edu.wpi.grip.core.events;
Add comment 2 Plus
Add comment 3 Plus import edu.wpi.grip.core.settings.AppSettings;
Add comment 4 Plus
Add comment 5 Plus import static com.google.common.base.Preconditions.checkNotNull;
Add comment 6 Plus
Add comment 7 Plus /**
Add comment 8 Plus * An event fired when the app settings are changed.
Add comment 9 Plus */
Add comment 10 Plus public class AppSettingsChangedEvent {
Add comment 11 Plus
Add comment 12 Plus private final AppSettings appSettings;
Add comment 13 Plus
Add comment 14 Plus public AppSettingsChangedEvent(AppSettings appSettings) {
Add comment 15 Plus this.appSettings = checkNotNull(appSettings, "appSettings");
Add comment 16 Plus }
Add comment 17 Plus
Add comment 18 Plus public AppSettings getAppSettings() {
Add comment 19 Plus return appSettings;
Add comment 20 Plus }
Add comment 21 Plus
Add comment 22 Plus }
Add comment 23 Plus
GripServer.java
/core/src/main/java/edu/wpi/grip/core/http/GripServer.java-8+42/core/src/main/java/edu/wpi/grip/core/http/GripServer.java
Add comment 1 package edu.wpi.grip.core.http;
Add comment 2
Add comment 3 Minus import edu.wpi.grip.core.events.ProjectSettingsChangedEvent;
Add comment 3 Plus import edu.wpi.grip.core.events.AppSettingsChangedEvent;
Add comment 4 import edu.wpi.grip.core.exception.GripServerException;
Add comment 5 import edu.wpi.grip.core.settings.SettingsProvider;
Add comment 6
Add comment 48 * Possible lifecycle states of the server.
Add comment 49 */
Add comment 50 public enum State {
Add comment 51 Minus /** The server has not been started yet. */
Add comment 51 Plus /**
Add comment 52 Plus * The server has not been started yet.
Add comment 53 Plus */
Add comment 52 54 PRE_RUN,
Add comment 53 Minus /** The server is currently running. */
Add comment 55 Plus /**
Add comment 56 Plus * The server is currently running.
Add comment 57 Plus */
Add comment 54 58 RUNNING,
Add comment 55 Minus /** The server was running and has been stopped. */
Add comment 59 Plus /**
Add comment 60 Plus * The server was running and has been stopped.
Add comment 61 Plus */
Add comment 56 62 STOPPED
Add comment 57 63 }
Add comment 58 64
Add comment 100 106 */
Add comment 101 107 public static final String DATA_PATH = ROOT_PATH + "/data";
Add comment 102 108
Add comment 109 Plus /**
Add comment 110 Plus * The default port the server should run on.
Add comment 111 Plus */
Add comment 112 Plus public static final int DEFAULT_PORT = 8080;
Add comment 113 Plus
Add comment 114 Plus /**
Add comment 115 Plus * The lowest valid TCP port number.
Add comment 116 Plus */
Add comment 117 Plus private static final int MIN_PORT = 1024;
Add comment 118 Plus
Add comment 119 Plus /**
Add comment 120 Plus * The highest valid TCP port number.
Add comment 121 Plus */
Add comment 122 Plus private static final int MAX_PORT = 65535;
Add comment 123 Plus
Add comment 124 Plus /**
Add comment 125 Plus * Checks if the given TCP port is valid for a server to run on. This doesn't check availability.
Add comment 126 Plus *
Add comment 127 Plus * @param port the port to check
Add comment 128 Plus *
Add comment 129 Plus * @return true if the port is valid, false if not
Add comment 130 Plus */
Add comment 131 Plus public static boolean isPortValid(int port) {
Add comment 132 Plus return port >= MIN_PORT && port <= MAX_PORT;
Add comment 133 Plus }
Add comment 134 Plus
Add comment 103 135 public interface JettyServerFactory {
Add comment 104 136 Server create(int port);
Add comment 105 137 }
Add comment 116 148 GripServer(ContextStore contextStore,
Add comment 117 149 JettyServerFactory serverFactory,
Add comment 118 150 SettingsProvider settingsProvider) {
Add comment 119 Minus this.port = settingsProvider.getProjectSettings().getServerPort();
Add comment 151 Plus this.port = settingsProvider.getAppSettings().getServerPort();
Add comment 120 152 this.serverFactory = serverFactory;
Add comment 121 153 this.server = serverFactory.create(port);
Add comment 122 154 this.server.setHandler(handlers);
Add comment 213 245 * @param port the new port to run on.
Add comment 214 246 */
Add comment 215 247 public void setPort(int port) {
Add comment 248 Plus if (!isPortValid(port)) {
Add comment 249 Plus throw new IllegalArgumentException("Invalid port: " + port);
Add comment 250 Plus }
Add comment 216 251 stop();
Add comment 217 252 server = serverFactory.create(port);
Add comment 218 253 server.setHandler(handlers);
Add comment 228 263 }
Add comment 229 264
Add comment 230 265 @Subscribe
Add comment 231 Minus public void settingsChanged(ProjectSettingsChangedEvent event) {
Add comment 232 Minus int port = event.getProjectSettings().getServerPort();
Add comment 266 Plus public void settingsChanged(AppSettingsChangedEvent event) {
Add comment 267 Plus int port = event.getAppSettings().getServerPort();
Add comment 233 268 if (port != getPort()) {
Add comment 234 269 setPort(port);
Add comment 235 Minus start();
Add comment 236 270 }
Add comment 237 271 }
Add comment 238 272
HttpPipelineSwitcher.java
/core/src/main/java/edu/wpi/grip/core/http/HttpPipelineSwitcher.java-20+1/core/src/main/java/edu/wpi/grip/core/http/HttpPipelineSwitcher.java
Add comment 1 package edu.wpi.grip.core.http;
Add comment 2
Add comment 3 import edu.wpi.grip.core.serialization.Project;
Add comment 4 Minus import edu.wpi.grip.core.util.GripMode;
Add comment 5 4
Add comment 6 5 import com.google.inject.Inject;
Add comment 7 6 import com.google.inject.Singleton;
Add comment 22 21 public class HttpPipelineSwitcher extends PedanticHandler {
Add comment 23 22
Add comment 24 23 private final Project project;
Add comment 25 Minus private final GripMode mode;
Add comment 26 24
Add comment 27 25 @Inject
Add comment 28 Minus HttpPipelineSwitcher(ContextStore store, Project project, GripMode mode) {
Add comment 26 Plus HttpPipelineSwitcher(ContextStore store, Project project) {
Add comment 29 27 super(store, GripServer.PIPELINE_UPLOAD_PATH, true);
Add comment 30 28 this.project = project;
Add comment 31 Minus this.mode = mode;
Add comment 32 29 }
Add comment 33 30
Add comment 34 31 @Override
Add comment 41 38 baseRequest.setHandled(true);
Add comment 42 39 return;
Add comment 43 40 }
Add comment 44 Minus switch (mode) {
Add comment 45 Minus case HEADLESS:
Add comment 46 41 project.open(new String(IOUtils.toByteArray(request.getInputStream()), "UTF-8"));
Add comment 47 42 response.setStatus(HttpServletResponse.SC_CREATED);
Add comment 48 43 baseRequest.setHandled(true);
Add comment 49 Minus break;
Add comment 50 Minus case GUI:
Add comment 51 Minus // Don't run in GUI mode, it doesn't make much sense and can easily deadlock if pipelines
Add comment 52 Minus // are rapidly posted.
Add comment 53 Minus // Intentional fall-through to default
Add comment 54 Minus default:
Add comment 55 Minus // Don't know the mode or the mode is unsupported; let the client know
Add comment 56 Minus response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
Add comment 57 Minus sendTextContent(response,
Add comment 58 Minus String.format("GRIP is not in the correct mode: should be HEADLESS, but is %s", mode),
Add comment 59 Minus CONTENT_TYPE_PLAIN_TEXT);
Add comment 60 Minus baseRequest.setHandled(true);
Add comment 61 Minus break;
Add comment 62 Minus }
Add comment 63 44 }
Add comment 64 45 }
Add comment 65 46
Project.java
/core/src/main/java/edu/wpi/grip/core/serialization/Project.java+1/core/src/main/java/edu/wpi/grip/core/serialization/Project.java
Add comment 49 ConnectionConverter connectionConverter,
Add comment 50 ProjectSettingsConverter projectSettingsConverter) {
Add comment 51 xstream.setMode(XStream.NO_REFERENCES);
Add comment 52 Plus xstream.ignoreUnknownElements(); // ignores all unknown tags
Add comment 52 53 xstream.registerConverter(stepConverter);
Add comment 53 54 xstream.registerConverter(sourceConverter);
Add comment 54 55 xstream.registerConverter(socketConverter);
AppSettings.java
/core/src/main/java/edu/wpi/grip/core/settings/AppSettings.java/core/src/main/java/edu/wpi/grip/core/settings/AppSettings.java
ProjectSettings.java
/core/src/main/java/edu/wpi/grip/core/settings/ProjectSettings.java/core/src/main/java/edu/wpi/grip/core/settings/ProjectSettings.java
Setting.java
/core/src/main/java/edu/wpi/grip/core/settings/Setting.java/core/src/main/java/edu/wpi/grip/core/settings/Setting.java
Settings.java
/core/src/main/java/edu/wpi/grip/core/settings/Settings.java/core/src/main/java/edu/wpi/grip/core/settings/Settings.java
SettingsProvider.java
/core/src/main/java/edu/wpi/grip/core/settings/SettingsProvider.java/core/src/main/java/edu/wpi/grip/core/settings/SettingsProvider.java
CoreCommandLineHelper.java
/core/src/main/java/edu/wpi/grip/core/CoreCommandLineHelper.java/core/src/main/java/edu/wpi/grip/core/CoreCommandLineHelper.java
Main.java
/core/src/main/java/edu/wpi/grip/core/Main.java/core/src/main/java/edu/wpi/grip/core/Main.java
Pipeline.java
/core/src/main/java/edu/wpi/grip/core/Pipeline.java/core/src/main/java/edu/wpi/grip/core/Pipeline.java
GripServerTest.java
/core/src/test/java/edu/wpi/grip/core/http/GripServerTest.java/core/src/test/java/edu/wpi/grip/core/http/GripServerTest.java
HttpPipelineSwitcherTest.java
/core/src/test/java/edu/wpi/grip/core/http/HttpPipelineSwitcherTest.java/core/src/test/java/edu/wpi/grip/core/http/HttpPipelineSwitcherTest.java
HttpPublisherTest.java
/core/src/test/java/edu/wpi/grip/core/operations/network/http/HttpPublisherTest.java/core/src/test/java/edu/wpi/grip/core/operations/network/http/HttpPublisherTest.java
HttpSourceTest.java
/core/src/test/java/edu/wpi/grip/core/sources/HttpSourceTest.java/core/src/test/java/edu/wpi/grip/core/sources/HttpSourceTest.java
SourcesSanityTest.java
/core/src/test/java/edu/wpi/grip/core/sources/SourcesSanityTest.java/core/src/test/java/edu/wpi/grip/core/sources/SourcesSanityTest.java
AppSettingsBeanInfo.java
/ui/src/main/java/edu/wpi/grip/core/settings/AppSettingsBeanInfo.java/ui/src/main/java/edu/wpi/grip/core/settings/AppSettingsBeanInfo.java
ProjectSettingsBeanInfo.java
/ui/src/main/java/edu/wpi/grip/core/settings/ProjectSettingsBeanInfo.java/ui/src/main/java/edu/wpi/grip/core/settings/ProjectSettingsBeanInfo.java
SimpleSettingsBeanInfo.java
/ui/src/main/java/edu/wpi/grip/core/settings/SimpleSettingsBeanInfo.java/ui/src/main/java/edu/wpi/grip/core/settings/SimpleSettingsBeanInfo.java
Renamed from
/core/src/main/java/edu/wpi/grip/core/settings/ProjectSettingsBeanInfo.java
MainWindowController.java
/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java
ProjectSettingsEditor.java
/ui/src/main/java/edu/wpi/grip/ui/ProjectSettingsEditor.java/ui/src/main/java/edu/wpi/grip/ui/ProjectSettingsEditor.java