diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-04-27 15:15:01 +1200 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-04-27 15:15:01 +1200 |
commit | ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466 (patch) | |
tree | 6a07bddf4e23a6733fc891a5bea0660c9a7af282 /src/org/traccar/http | |
parent | 3083db3929e27933d3ab5eab9fa0c1e221e94eec (diff) | |
download | traccar-server-ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466.tar.gz traccar-server-ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466.tar.bz2 traccar-server-ba9551ce3e4a3aade38d5f3b2ac7dee9d022a466.zip |
Implement permissions manager
Diffstat (limited to 'src/org/traccar/http')
-rw-r--r-- | src/org/traccar/http/MainServlet.java | 31 |
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); |