diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-06-05 10:46:34 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-06-05 10:46:34 +0200 |
commit | 6ea2c1db26260c1f36e01c58fc6f8ef0220e577e (patch) | |
tree | 79fc40a581daa9269d9cd140bebef24fac475b56 /pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store | |
parent | 531124af765490a63c3a1121ba81fed21c6d7ab4 (diff) | |
download | pdf-as-4-6ea2c1db26260c1f36e01c58fc6f8ef0220e577e.tar.gz pdf-as-4-6ea2c1db26260c1f36e01c58fc6f8ef0220e577e.tar.bz2 pdf-as-4-6ea2c1db26260c1f36e01c58fc6f8ef0220e577e.zip |
SOAP Service for backend upload + transaction ID fixes
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store')
3 files changed, 74 insertions, 0 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/IRequestStore.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/IRequestStore.java new file mode 100644 index 00000000..6623004b --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/IRequestStore.java @@ -0,0 +1,8 @@ +package at.gv.egiz.pdfas.web.store; + +import at.gv.egiz.pdfas.api.ws.PDFASSignRequest; + +public interface IRequestStore { + public String createNewStoreEntry(PDFASSignRequest request); + public PDFASSignRequest fetchStoreEntry(String id); +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/InMemoryRequestStore.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/InMemoryRequestStore.java new file mode 100644 index 00000000..df9ab676 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/InMemoryRequestStore.java @@ -0,0 +1,31 @@ +package at.gv.egiz.pdfas.web.store; + +import java.util.HashMap; +import java.util.UUID; + +import at.gv.egiz.pdfas.api.ws.PDFASSignRequest; + +public class InMemoryRequestStore implements IRequestStore { + + public InMemoryRequestStore() { + } + + private HashMap<String, PDFASSignRequest> store = new HashMap<String, PDFASSignRequest>(); + + public String createNewStoreEntry(PDFASSignRequest request) { + UUID id = UUID.randomUUID(); + String sid = id.toString(); + this.store.put(sid, request); + return sid; + } + + public PDFASSignRequest fetchStoreEntry(String id) { + if(store.containsKey(id)) { + PDFASSignRequest request = store.get(id); + store.remove(id); + return request; + } + return null; + } + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/RequestStore.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/RequestStore.java new file mode 100644 index 00000000..a4eba2e6 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/store/RequestStore.java @@ -0,0 +1,35 @@ +package at.gv.egiz.pdfas.web.store; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.web.config.WebConfiguration; +import at.gv.egiz.pdfas.web.exception.PdfAsStoreException; + +public class RequestStore { + private static IRequestStore instance = null; + + private static final Logger logger = LoggerFactory + .getLogger(RequestStore.class); + + public synchronized static IRequestStore getInstance() throws PdfAsStoreException { + if (instance == null) { + try { + String storeClass = WebConfiguration.getStoreClass(); + logger.info("Using Request Store: " + storeClass); + + Class<?> clazz = Class.forName(storeClass); + Object store = clazz.newInstance(); + if(store instanceof IRequestStore) { + instance = (IRequestStore)store; + } else { + throw new PdfAsStoreException("Failed to instanciate Request Store from " + storeClass); + } + } catch (Throwable e) { + e.printStackTrace(); + throw new PdfAsStoreException("Failed to instanciate Request Store", e); + } + } + return instance; + } +} |