summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java')
-rw-r--r--dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java b/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java
new file mode 100644
index 00000000..6d5404f7
--- /dev/null
+++ b/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java
@@ -0,0 +1,37 @@
+package thrift;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
+import org.openslx.bwlp.thrift.iface.OperatingSystem;
+import org.openslx.thrifthelper.ThriftManager;
+import org.openslx.util.TimeoutReference;
+
+/**
+ * Holds the list of all known operating systems. The list is synchronized with
+ * the master server.
+ */
+public class OperatingSystemList {
+
+ private static final Logger LOGGER = Logger.getLogger(OperatingSystemList.class);
+
+ private static final TimeoutReference<List<OperatingSystem>> cachedList = new TimeoutReference<List<OperatingSystem>>(
+ 600000, null);
+
+ public static synchronized List<OperatingSystem> get() {
+ List<OperatingSystem> list = cachedList.get();
+ if (list == null) {
+ try {
+ list = ThriftManager.getMasterClient().getOperatingSystems();
+ // TODO: Write to DB
+ } catch (TException e) {
+ LOGGER.warn("Could not retrieve OS list from master server", e);
+ return null;
+ }
+ cachedList.set(list);
+ }
+ return list;
+ }
+
+}