aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/http/MainServlet.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-04-27 15:15:01 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2015-04-27 15:15:01 +1200
commitba9551ce3e4a3aade38d5f3b2ac7dee9d022a466 (patch)
tree6a07bddf4e23a6733fc891a5bea0660c9a7af282 /src/org/traccar/http/MainServlet.java
parent3083db3929e27933d3ab5eab9fa0c1e221e94eec (diff)
downloadtrackermap-server-ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466.tar.gz
trackermap-server-ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466.tar.bz2
trackermap-server-ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466.zip
Implement permissions manager
Diffstat (limited to 'src/org/traccar/http/MainServlet.java')
-rw-r--r--src/org/traccar/http/MainServlet.java31
1 files changed, 12 insertions, 19 deletions
diff --git a/src/org/traccar/http/MainServlet.java b/src/org/traccar/http/MainServlet.java
index 65a1bf624..74a3bb3d5 100644
--- a/src/org/traccar/http/MainServlet.java
+++ b/src/org/traccar/http/MainServlet.java
@@ -16,6 +16,7 @@
package org.traccar.http;
import java.io.IOException;
+import java.security.Permission;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap;
@@ -72,7 +73,7 @@ public class MainServlet extends HttpServlet {
private boolean destroyed;
private final long userId;
- private final List<Long> devices;
+ private final Collection<Long> devices;
private Timeout sessionTimeout;
private Timeout requestTimeout;
private final Map<Long, Position> positions = new HashMap<Long, Position>();
@@ -84,10 +85,17 @@ public class MainServlet extends HttpServlet {
}
}
- public AsyncSession(long userId, List<Long> devices) {
+ public AsyncSession(long userId, Collection<Long> devices) {
logEvent("create userId: " + userId + " devices: " + devices.size());
this.userId = userId;
this.devices = devices;
+
+ Collection<Position> initialPositions = Context.getDataCache().getInitialState(devices);
+ for (Position position : initialPositions) {
+ positions.put(position.getDeviceId(), position);
+ }
+
+ Context.getDataCache().addListener(devices, dataListener);
}
@Override
@@ -141,16 +149,6 @@ public class MainServlet extends HttpServlet {
}
}
};
-
- public synchronized void init() {
- logEvent("init");
- Collection<Position> initialPositions = Context.getDataCache().getInitialState(devices);
- for (Position position : initialPositions) {
- positions.put(position.getDeviceId(), position);
- }
-
- Context.getDataCache().addListener(devices, dataListener);
- }
public synchronized void request(AsyncContext context) {
logEvent("request context: " + context.hashCode());
@@ -207,13 +205,8 @@ public class MainServlet extends HttpServlet {
synchronized (asyncSessions) {
if (!asyncSessions.containsKey(userId)) {
- try {
- List<Long> devices = Context.getDataManager().getDeviceList(userId);
- asyncSessions.put(userId, new AsyncSession(userId, devices));
- } catch (SQLException error) {
- Log.warning(error);
- }
- asyncSessions.get(userId).init();
+ Collection<Long> devices = Context.getPermissionsManager().allowedDevices(userId);
+ asyncSessions.put(userId, new AsyncSession(userId, devices));
}
asyncSessions.get(userId).request(context);