diff options
5 files changed, 65 insertions, 15 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ImageCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ImageCache.java index 380b51ea..d9795ace 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ImageCache.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ImageCache.java @@ -18,7 +18,7 @@ public class ImageCache { @Override protected List<ImageSummaryRead> update() throws TAuthorizationException, TInternalServerError, TException { List<ImageSummaryRead> result = null; - int pageSize = ThriftManager.getSatClient().getPageSize(); + int pageSize = Session.getSatelliteConfig().pageSize; for (int i = 0;; ++i) { List<ImageSummaryRead> page = ThriftManager.getSatClient().getImageList(Session.getSatelliteToken(), null, i); if (result == null) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/LectureCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/LectureCache.java index eb80b61e..bbed5adc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/LectureCache.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/LectureCache.java @@ -18,7 +18,7 @@ public class LectureCache { @Override protected List<LectureSummary> update() throws TAuthorizationException, TInternalServerError, TException { List<LectureSummary> result = null; - int pageSize = ThriftManager.getSatClient().getPageSize(); + int pageSize = Session.getSatelliteConfig().pageSize; for (int i = 0;; ++i) { List<LectureSummary> page = ThriftManager.getSatClient().getLectureList(Session.getSatelliteToken(), i); if (result == null) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java index 36c6f617..c1c52fcb 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java @@ -1,7 +1,11 @@ package org.openslx.dozmod.thrift; +import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.ClientSessionData; +import org.openslx.bwlp.thrift.iface.ImagePermissions; +import org.openslx.bwlp.thrift.iface.LecturePermissions; +import org.openslx.bwlp.thrift.iface.SatelliteConfig; import org.openslx.bwlp.thrift.iface.SessionData; import org.openslx.bwlp.thrift.iface.TInvalidTokenException; import org.openslx.bwlp.thrift.iface.UserInfo; @@ -10,23 +14,25 @@ import org.openslx.dozmod.authentication.ServiceProviderResponse; import org.openslx.thrifthelper.ThriftManager; public class Session { - + + private static final Logger LOGGER = Logger.getLogger(Session.class); + private static String firstName = null; - + private static String lastName = null; - + private static String eMail = null; - + private static String userId = null; - + private static String organizationId = null; private static String satelliteToken = null; - + private static String masterToken = null; private static String satelliteAddress = null; - + public static void fromClientSessionData(ClientSessionData session) { if (userId != null && !userId.equals(session.userInfo.userId)) throw new IllegalArgumentException("Cannot set new session data with different user id!"); @@ -50,7 +56,7 @@ public class Session { masterToken = session.sessionId; satelliteToken = session.authToken; } - + public static void fromEcpLogin(ServiceProviderResponse response) { if (userId != null && !userId.equals(response.userId)) throw new IllegalArgumentException("Cannot set new session data with different user id!"); @@ -62,12 +68,12 @@ public class Session { masterToken = response.sessionId; satelliteToken = response.token; } - + public static void fromSavedSession(SavedSession session) { satelliteToken = session.token; // TODO: Satellite whoami call } - + /** * @return the first name */ @@ -131,4 +137,31 @@ public class Session { Session.satelliteAddress = satelliteAddress; } + private static SatelliteConfig satConf = null; + + /** + * Query the satellite server for its configuration and default values. + * + * @return + */ + public static SatelliteConfig getSatelliteConfig() { + synchronized (SatelliteConfig.class) { + if (satConf != null) + return satConf; + try { + satConf = ThriftManager.getSatClient().getConfiguration(); + return satConf; + } catch (TException e) { + LOGGER.warn("Could not get satellite configuration, falling back to builtin defaults", e); + SatelliteConfig satConfig = new SatelliteConfig(); + satConfig.setDefaultImagePermissions(new ImagePermissions(true, true, false, false)); + satConfig.setDefaultLecturePermissions(new LecturePermissions(false, false)); + satConfig.setMaxImageValidityDays(200); + satConfig.setMaxLectureValidityDays(100); + satConfig.setPageSize(200); + return satConfig; + } + } + } + } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UserCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UserCache.java index 50c02f08..949d01c1 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UserCache.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UserCache.java @@ -22,7 +22,7 @@ public class UserCache { @Override protected List<UserInfo> update() throws Exception { List<UserInfo> result = null; - int pageSize = ThriftManager.getSatClient().getPageSize(); + int pageSize = Session.getSatelliteConfig().pageSize; for (int i = 0;; ++i) { List<UserInfo> page = ThriftManager.getSatClient() .getUserList(Session.getSatelliteToken(), i); diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java index b835ded9..20df580d 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java @@ -32,6 +32,7 @@ import org.openslx.bwlp.thrift.iface.LectureSummary; import org.openslx.bwlp.thrift.iface.LectureWrite; import org.openslx.bwlp.thrift.iface.OperatingSystem; import org.openslx.bwlp.thrift.iface.Organization; +import org.openslx.bwlp.thrift.iface.SatelliteConfig; import org.openslx.bwlp.thrift.iface.SatelliteServer; import org.openslx.bwlp.thrift.iface.ShareMode; import org.openslx.bwlp.thrift.iface.TAuthorizationException; @@ -52,14 +53,25 @@ public class ServerHandler implements SatelliteServer.Iface { private static final FileServer fileServer = FileServer.instance(); + private static final SatelliteConfig satConfig; + + static { + satConfig = new SatelliteConfig(); + satConfig.setDefaultImagePermissions(new ImagePermissions(true, true, false, false)); + satConfig.setDefaultLecturePermissions(new LecturePermissions(false, false)); + satConfig.setMaxImageValidityDays(200); + satConfig.setMaxLectureValidityDays(100); + satConfig.setPageSize(Paginator.PER_PAGE); + } + @Override public long getVersion() { return Version.VERSION; } @Override - public int getPageSize() throws TException { - return Paginator.PER_PAGE; + public SatelliteConfig getConfiguration() { + return satConfig; } /* @@ -133,6 +145,11 @@ public class ServerHandler implements SatelliteServer.Iface { } @Override + public UserInfo whoami(String userToken) throws TAuthorizationException { + return SessionManager.getOrFail(userToken); + } + + @Override public void invalidateSession(String userToken) { SessionManager.remove(userToken); } |