aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2019-02-23 11:04:08 -0800
committerAnton Tananaev <anton.tananaev@gmail.com>2019-02-23 11:04:08 -0800
commit1e2c06694e787201209b1d8953cf498a72c335d8 (patch)
tree53bc5d36faba98f2a2a6257f8791e0dbb6d314a8
parentd338b1177bcc46bb1b1bad1d8a76d6008dfe2239 (diff)
downloadtrackermap-server-1e2c06694e787201209b1d8953cf498a72c335d8.tar.gz
trackermap-server-1e2c06694e787201209b1d8953cf498a72c335d8.tar.bz2
trackermap-server-1e2c06694e787201209b1d8953cf498a72c335d8.zip
Refactor configuration
-rw-r--r--src/org/traccar/BasePipelineFactory.java3
-rw-r--r--src/org/traccar/BaseProtocolDecoder.java1
-rw-r--r--src/org/traccar/Context.java5
-rw-r--r--src/org/traccar/FilterHandler.java1
-rw-r--r--src/org/traccar/MainModule.java1
-rw-r--r--src/org/traccar/WebDataHandler.java8
-rw-r--r--src/org/traccar/config/Config.java (renamed from src/org/traccar/Config.java)68
-rw-r--r--src/org/traccar/config/ConfigKey.java42
-rw-r--r--src/org/traccar/config/Keys.java44
-rw-r--r--src/org/traccar/database/DataManager.java2
-rw-r--r--src/org/traccar/database/DeviceManager.java2
-rw-r--r--src/org/traccar/database/LdapProvider.java2
-rw-r--r--src/org/traccar/helper/Log.java2
-rw-r--r--src/org/traccar/notification/PropertiesProvider.java2
-rw-r--r--src/org/traccar/web/WebServer.java2
-rw-r--r--test/org/traccar/WebDataHandlerTest.java4
-rw-r--r--test/org/traccar/config/ConfigTest.java (renamed from test/org/traccar/ConfigTest.java)4
17 files changed, 173 insertions, 20 deletions
diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java
index f24841a22..0c0e4ef46 100644
--- a/src/org/traccar/BasePipelineFactory.java
+++ b/src/org/traccar/BasePipelineFactory.java
@@ -31,6 +31,7 @@ import io.netty.channel.socket.DatagramPacket;
import io.netty.handler.timeout.IdleStateHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.traccar.config.Keys;
import org.traccar.events.CommandResultEventHandler;
import org.traccar.events.DriverEventHandler;
import org.traccar.events.FuelDropEventHandler;
@@ -315,7 +316,7 @@ public abstract class BasePipelineFactory extends ChannelInitializer<Channel> {
pipeline.addLast(new DefaultDataHandler());
}
- if (Context.getConfig().getBoolean("forward.enable")) {
+ if (Context.getConfig().getBoolean(Keys.FORWARD_ENABLE)) {
pipeline.addLast(Main.getInjector().getInstance(WebDataHandler.class));
}
diff --git a/src/org/traccar/BaseProtocolDecoder.java b/src/org/traccar/BaseProtocolDecoder.java
index cbef4568d..e1efbd3eb 100644
--- a/src/org/traccar/BaseProtocolDecoder.java
+++ b/src/org/traccar/BaseProtocolDecoder.java
@@ -20,6 +20,7 @@ import io.netty.channel.socket.DatagramChannel;
import io.netty.handler.codec.http.HttpRequestDecoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.traccar.config.Config;
import org.traccar.database.ConnectionManager;
import org.traccar.database.IdentityManager;
import org.traccar.database.StatisticsManager;
diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java
index d679842cd..d9fed22ec 100644
--- a/src/org/traccar/Context.java
+++ b/src/org/traccar/Context.java
@@ -27,6 +27,7 @@ import org.apache.velocity.app.VelocityEngine;
import org.eclipse.jetty.util.URIUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.traccar.config.Config;
import org.traccar.database.CalendarManager;
import org.traccar.database.CommandsManager;
import org.traccar.database.AttributesManager;
@@ -362,9 +363,9 @@ public final class Context {
public static void init(String configFile) throws Exception {
try {
- config = new Config();
- config.load(configFile);
+ config = new Config(configFile);
} catch (Exception e) {
+ config = new Config();
Log.setupDefaultLogger();
throw e;
}
diff --git a/src/org/traccar/FilterHandler.java b/src/org/traccar/FilterHandler.java
index b127e190a..6f2bb0d2e 100644
--- a/src/org/traccar/FilterHandler.java
+++ b/src/org/traccar/FilterHandler.java
@@ -18,6 +18,7 @@ package org.traccar;
import io.netty.channel.ChannelHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.traccar.config.Config;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.Position;
diff --git a/src/org/traccar/MainModule.java b/src/org/traccar/MainModule.java
index 19cad5237..40933aba5 100644
--- a/src/org/traccar/MainModule.java
+++ b/src/org/traccar/MainModule.java
@@ -18,6 +18,7 @@ package org.traccar;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
+import org.traccar.config.Config;
import org.traccar.database.IdentityManager;
import javax.ws.rs.client.Client;
diff --git a/src/org/traccar/WebDataHandler.java b/src/org/traccar/WebDataHandler.java
index e29e5a075..27b317321 100644
--- a/src/org/traccar/WebDataHandler.java
+++ b/src/org/traccar/WebDataHandler.java
@@ -17,6 +17,8 @@ package org.traccar;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.traccar.config.Config;
+import org.traccar.config.Keys;
import org.traccar.database.IdentityManager;
import org.traccar.helper.Checksum;
import org.traccar.model.Device;
@@ -56,9 +58,9 @@ public class WebDataHandler extends BaseDataHandler {
this.identityManager = identityManager;
this.objectMapper = objectMapper;
this.client = client;
- this.url = config.getString("forward.url");
- this.header = config.getString("forward.header");
- this.json = config.getBoolean("forward.json");
+ this.url = config.getString(Keys.FORWARD_URL);
+ this.header = config.getString(Keys.FORWARD_HEADER);
+ this.json = config.getBoolean(Keys.FORWARD_JSON);
}
private static String formatSentence(Position position) {
diff --git a/src/org/traccar/Config.java b/src/org/traccar/config/Config.java
index 370123ae1..d8f2a0e99 100644
--- a/src/org/traccar/Config.java
+++ b/src/org/traccar/config/Config.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 - 2017 Anton Tananaev (anton@traccar.org)
+ * Copyright 2015 - 2019 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.traccar;
+package org.traccar.config;
import java.io.FileInputStream;
import java.io.IOException;
@@ -27,7 +27,10 @@ public class Config {
private boolean useEnvironmentVariables;
- void load(String file) throws IOException {
+ public Config() {
+ }
+
+ public Config(String file) throws IOException {
try {
Properties mainProperties = new Properties();
try (InputStream inputStream = new FileInputStream(file)) {
@@ -50,11 +53,21 @@ public class Config {
}
}
+ public boolean hasKey(ConfigKey key) {
+ return hasKey(key.getKey());
+ }
+
+ @Deprecated
public boolean hasKey(String key) {
return useEnvironmentVariables && System.getenv().containsKey(getEnvironmentVariableName(key))
|| properties.containsKey(key);
}
+ public String getString(ConfigKey key) {
+ return getString(key.getKey());
+ }
+
+ @Deprecated
public String getString(String key) {
if (useEnvironmentVariables) {
String value = System.getenv(getEnvironmentVariableName(key));
@@ -65,44 +78,89 @@ public class Config {
return properties.getProperty(key);
}
+ public String getString(ConfigKey key, String defaultValue) {
+ return getString(key.getKey(), defaultValue);
+ }
+
+ @Deprecated
public String getString(String key, String defaultValue) {
return hasKey(key) ? getString(key) : defaultValue;
}
+ public boolean getBoolean(ConfigKey key) {
+ return getBoolean(key.getKey());
+ }
+
+ @Deprecated
public boolean getBoolean(String key) {
return Boolean.parseBoolean(getString(key));
}
+ public int getInteger(ConfigKey key) {
+ return getInteger(key.getKey());
+ }
+
+ @Deprecated
public int getInteger(String key) {
return getInteger(key, 0);
}
+ public int getInteger(ConfigKey key, int defaultValue) {
+ return getInteger(key.getKey(), defaultValue);
+ }
+
+ @Deprecated
public int getInteger(String key, int defaultValue) {
return hasKey(key) ? Integer.parseInt(getString(key)) : defaultValue;
}
+ public long getLong(ConfigKey key) {
+ return getLong(key.getKey());
+ }
+
+ @Deprecated
public long getLong(String key) {
return getLong(key, 0);
}
+ public long getLong(ConfigKey key, long defaultValue) {
+ return getLong(key.getKey(), defaultValue);
+ }
+
+ @Deprecated
public long getLong(String key, long defaultValue) {
return hasKey(key) ? Long.parseLong(getString(key)) : defaultValue;
}
+ public double getDouble(ConfigKey key) {
+ return getDouble(key.getKey());
+ }
+
+ @Deprecated
public double getDouble(String key) {
return getDouble(key, 0.0);
}
+ public double getDouble(ConfigKey key, double defaultValue) {
+ return getDouble(key.getKey(), defaultValue);
+ }
+
+ @Deprecated
public double getDouble(String key, double defaultValue) {
return hasKey(key) ? Double.parseDouble(getString(key)) : defaultValue;
}
- public static String getEnvironmentVariableName(String key) {
- return key.replaceAll("\\.", "_").replaceAll("(\\p{Lu})", "_$1").toUpperCase();
+ public void setString(ConfigKey key, String value) {
+ setString(key.getKey(), value);
}
+ @Deprecated
public void setString(String key, String value) {
properties.put(key, value);
}
+ static String getEnvironmentVariableName(String key) {
+ return key.replaceAll("\\.", "_").replaceAll("(\\p{Lu})", "_$1").toUpperCase();
+ }
+
}
diff --git a/src/org/traccar/config/ConfigKey.java b/src/org/traccar/config/ConfigKey.java
new file mode 100644
index 000000000..418ab56e4
--- /dev/null
+++ b/src/org/traccar/config/ConfigKey.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2019 Anton Tananaev (anton@traccar.org)
+ *
+ * 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.traccar.config;
+
+public class ConfigKey {
+
+ private final String key;
+ private final Class clazz;
+ private final String description;
+
+ ConfigKey(String key, Class clazz, String description) {
+ this.key = key;
+ this.clazz = clazz;
+ this.description = description;
+ }
+
+ String getKey() {
+ return key;
+ }
+
+ Class getValueClass() {
+ return clazz;
+ }
+
+ String getDescription() {
+ return description;
+ }
+
+}
diff --git a/src/org/traccar/config/Keys.java b/src/org/traccar/config/Keys.java
new file mode 100644
index 000000000..90e7de2e5
--- /dev/null
+++ b/src/org/traccar/config/Keys.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2019 Anton Tananaev (anton@traccar.org)
+ *
+ * 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.traccar.config;
+
+public final class Keys {
+
+ public static final ConfigKey FORWARD_ENABLE = new ConfigKey(
+ "forward.enable",
+ Boolean.class,
+ "Enable positions forwarding to other web server.");
+
+ public static final ConfigKey FORWARD_URL = new ConfigKey(
+ "forward.url",
+ String.class,
+ "URL to forward positions. Data is passed through URL parameters. For example, {uniqueId} for device" +
+ "identifier, {latitude} and {longitude} for coordinates.");
+
+ public static final ConfigKey FORWARD_HEADER = new ConfigKey(
+ "forward.header",
+ String.class,
+ "Additional HTTP header, can be used for authorization.");
+
+ public static final ConfigKey FORWARD_JSON = new ConfigKey(
+ "forward.json",
+ Boolean.class,
+ "Boolean value to enable forwarding in JSON format.");
+
+ private Keys() {
+ }
+
+}
diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java
index 8da6f2cca..8e9071736 100644
--- a/src/org/traccar/database/DataManager.java
+++ b/src/org/traccar/database/DataManager.java
@@ -39,7 +39,7 @@ import liquibase.resource.ResourceAccessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Config;
+import org.traccar.config.Config;
import org.traccar.Context;
import org.traccar.helper.DateUtil;
import org.traccar.model.Attribute;
diff --git a/src/org/traccar/database/DeviceManager.java b/src/org/traccar/database/DeviceManager.java
index ab2c142cc..9cc84b2a3 100644
--- a/src/org/traccar/database/DeviceManager.java
+++ b/src/org/traccar/database/DeviceManager.java
@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Config;
+import org.traccar.config.Config;
import org.traccar.Context;
import org.traccar.model.Device;
import org.traccar.model.DeviceState;
diff --git a/src/org/traccar/database/LdapProvider.java b/src/org/traccar/database/LdapProvider.java
index b30ab45ed..d8b5c9f52 100644
--- a/src/org/traccar/database/LdapProvider.java
+++ b/src/org/traccar/database/LdapProvider.java
@@ -25,7 +25,7 @@ import javax.naming.directory.SearchResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Config;
+import org.traccar.config.Config;
import org.traccar.model.User;
import java.util.Hashtable;
diff --git a/src/org/traccar/helper/Log.java b/src/org/traccar/helper/Log.java
index 224a497e8..f328e8ce9 100644
--- a/src/org/traccar/helper/Log.java
+++ b/src/org/traccar/helper/Log.java
@@ -15,7 +15,7 @@
*/
package org.traccar.helper;
-import org.traccar.Config;
+import org.traccar.config.Config;
import java.io.BufferedWriter;
import java.io.File;
diff --git a/src/org/traccar/notification/PropertiesProvider.java b/src/org/traccar/notification/PropertiesProvider.java
index 8f5965a82..f0078feef 100644
--- a/src/org/traccar/notification/PropertiesProvider.java
+++ b/src/org/traccar/notification/PropertiesProvider.java
@@ -15,7 +15,7 @@
*/
package org.traccar.notification;
-import org.traccar.Config;
+import org.traccar.config.Config;
import org.traccar.model.ExtendedModel;
public class PropertiesProvider {
diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java
index 13a5a4238..70fef4ed3 100644
--- a/src/org/traccar/web/WebServer.java
+++ b/src/org/traccar/web/WebServer.java
@@ -30,7 +30,7 @@ import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Config;
+import org.traccar.config.Config;
import org.traccar.api.AsyncSocketServlet;
import org.traccar.api.CorsResponseFilter;
import org.traccar.api.MediaFilter;
diff --git a/test/org/traccar/WebDataHandlerTest.java b/test/org/traccar/WebDataHandlerTest.java
index 1cdb08440..cfbd71f23 100644
--- a/test/org/traccar/WebDataHandlerTest.java
+++ b/test/org/traccar/WebDataHandlerTest.java
@@ -1,6 +1,8 @@
package org.traccar;
import org.junit.Test;
+import org.traccar.config.Config;
+import org.traccar.config.Keys;
import org.traccar.model.Position;
import static org.junit.Assert.assertEquals;
@@ -11,7 +13,7 @@ public class WebDataHandlerTest extends ProtocolTest {
public void testFormatRequest() throws Exception {
Config config = new Config();
- config.setString("forward.url", "http://localhost/?fixTime={fixTime}&gprmc={gprmc}&name={name}");
+ config.setString(Keys.FORWARD_URL, "http://localhost/?fixTime={fixTime}&gprmc={gprmc}&name={name}");
Position position = position("2016-01-01 01:02:03.000", true, 20, 30);
diff --git a/test/org/traccar/ConfigTest.java b/test/org/traccar/config/ConfigTest.java
index fa404b827..13d0ffb04 100644
--- a/test/org/traccar/ConfigTest.java
+++ b/test/org/traccar/config/ConfigTest.java
@@ -1,8 +1,8 @@
-package org.traccar;
+package org.traccar.config;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
-import org.traccar.Config;
+import org.traccar.config.Config;
public class ConfigTest {