Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java')
-rw-r--r--plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java388
1 files changed, 194 insertions, 194 deletions
diff --git a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java
index 27daf38df34..73b0ef81294 100644
--- a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java
+++ b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java
@@ -55,199 +55,199 @@ import org.eclipse.osee.framework.manager.servlet.internal.Activator;
*/
public class OseeCacheServlet extends UnsecuredOseeHttpServlet {
- private static final long serialVersionUID = 6693534844874109524L;
- private final IDataTranslationService translationService;
- private final IOseeCachingService cachingService;
- private final IOseeModelFactoryService factoryService;
- private final ISessionManager sessionManager;
-
- public OseeCacheServlet(ISessionManager sessionManager, IDataTranslationService translationService, IOseeCachingService cachingService, IOseeModelFactoryService factoryService) {
- super();
- this.sessionManager = sessionManager;
- this.translationService = translationService;
- this.cachingService = cachingService;
- this.factoryService = factoryService;
- }
-
- public IDataTranslationService getTranslationService() {
- return translationService;
- }
-
- public IOseeCachingService getCachingService() {
- return cachingService;
- }
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
- OseeCacheEnum cacheId = OseeCacheEnum.valueOf(req.getParameter("cacheId"));
- try {
- IOseeCachingService caching = getCachingService();
- IDataTranslationService service = getTranslationService();
- Pair<Object, ITranslatorId> pair = createResponse(true, new CacheUpdateRequest(cacheId), caching);
- resp.setStatus(HttpServletResponse.SC_ACCEPTED);
- resp.setContentType("text/xml");
- resp.setCharacterEncoding("UTF-8");
- InputStream inputStream = service.convertToStream(pair.getFirst(), pair.getSecond());
- OutputStream outputStream = resp.getOutputStream();
- Lib.inputStreamToOutputStream(inputStream, outputStream);
- } catch (Exception ex) {
- OseeLog.log(getClass(), Level.SEVERE, ex);
- }
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- try {
- String sessionId = req.getParameter("sessionId");
- String clientVersion = ModCompatible.getClientVersion(sessionManager, sessionId);
- boolean isCompatible = ModCompatible.is_0_9_2_Compatible(clientVersion);
-
- CacheOperation operation = CacheOperation.fromString(req.getParameter("function"));
- switch (operation) {
- case UPDATE:
- sendUpdates(isCompatible, req, resp);
- break;
- case STORE:
- storeUpdates(isCompatible, req, resp);
- break;
- default:
- throw new UnsupportedOperationException();
- }
- } catch (Exception ex) {
- handleError(resp, req.toString(), ex);
- }
- }
-
- private void handleError(HttpServletResponse resp, String request, Throwable th) throws IOException {
- OseeLog.log(Activator.class, Level.SEVERE, String.format("Osee Cache request error: [%s]", request), th);
- resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- resp.setContentType("text/plain");
- resp.getWriter().write(Lib.exceptionToString(th));
- resp.getWriter().flush();
- resp.getWriter().close();
- }
-
- private void storeUpdates(boolean isCompatible, HttpServletRequest req, HttpServletResponse resp) throws OseeCoreException {
- IDataTranslationService service = getTranslationService();
- IOseeCachingService caching = getCachingService();
- TransactionCache txCache = caching.getTransactionCache();
-
- BranchCacheStoreRequest updateRequest = null;
- InputStream inputStream = null;
- try {
- inputStream = req.getInputStream();
- updateRequest = service.convert(inputStream, CoreTranslatorId.BRANCH_CACHE_STORE_REQUEST);
- } catch (IOException ex) {
- OseeExceptions.wrapAndThrow(ex);
- } finally {
- Lib.close(inputStream);
- }
- Collection<Branch> updated =
- new BranchCacheUpdateUtil(factoryService.getBranchFactory(), txCache).updateCache(updateRequest,
- caching.getBranchCache());
-
- BranchCache cache = caching.getBranchCache();
- if (updateRequest.isServerUpdateMessage()) {
- for (Branch branch : updated) {
- if (StorageState.CREATED == branch.getStorageState()) {
- branch.setStorageState(StorageState.MODIFIED);
- }
- branch.clearDirty();
- cache.decache(branch);
- cache.cache(branch);
- }
- } else {
- cache.storeItems(updated);
- }
- try {
- resp.setStatus(HttpServletResponse.SC_ACCEPTED);
- resp.setContentType("text/plain");
- resp.setCharacterEncoding("UTF-8");
- resp.getWriter().write("Branch Store Successful");
- } catch (IOException ex) {
- OseeExceptions.wrapAndThrow(ex);
- }
- }
-
- private void sendUpdates(boolean isCompatible, HttpServletRequest req, HttpServletResponse resp) throws OseeCoreException {
- IDataTranslationService service = getTranslationService();
- IOseeCachingService caching = getCachingService();
-
- CacheUpdateRequest updateRequest = null;
- InputStream inputStream = null;
- try {
- inputStream = req.getInputStream();
- updateRequest = service.convert(inputStream, CoreTranslatorId.OSEE_CACHE_UPDATE_REQUEST);
- } catch (IOException ex) {
- OseeExceptions.wrapAndThrow(ex);
- } finally {
- Lib.close(inputStream);
- }
-
- OutputStream outputStream = null;
- try {
- Pair<Object, ITranslatorId> pair = createResponse(isCompatible, updateRequest, caching);
-
- resp.setStatus(HttpServletResponse.SC_ACCEPTED);
- resp.setContentType("text/xml");
- resp.setCharacterEncoding("UTF-8");
-
- ModCompatible.makeSendCompatible(isCompatible, pair.getFirst());
-
- inputStream = service.convertToStream(pair.getFirst(), pair.getSecond());
- outputStream = resp.getOutputStream();
- Lib.inputStreamToOutputStream(inputStream, outputStream);
- } catch (IOException ex) {
- OseeExceptions.wrapAndThrow(ex);
- }
- }
-
- private Pair<Object, ITranslatorId> createResponse(boolean isCompatible, CacheUpdateRequest updateRequest, IOseeCachingService caching) throws OseeCoreException {
- Conditions.checkNotNull(caching, "caching service");
- Object response = null;
- ITranslatorId transalatorId = null;
- switch (updateRequest.getCacheId()) {
- case BRANCH_CACHE:
- response = BranchCacheUpdateResponse.fromCache(caching.getBranchCache(), caching.getBranchCache().getAll());
- transalatorId = CoreTranslatorId.BRANCH_CACHE_UPDATE_RESPONSE;
- break;
- case TRANSACTION_CACHE:
- Collection<TransactionRecord> record;
- TransactionCache txCache = caching.getTransactionCache();
-
- if (updateRequest.getItemsIds().isEmpty()) {
- record = txCache.getAll();
- } else {
- record = new ArrayList<TransactionRecord>();
- for (Integer item : updateRequest.getItemsIds()) {
- record.add(txCache.getOrLoad(item));
- }
- }
- response = TransactionCacheUpdateResponse.fromCache(factoryService.getTransactionFactory(), record);
- transalatorId = CoreTranslatorId.TX_CACHE_UPDATE_RESPONSE;
- break;
- case ARTIFACT_TYPE_CACHE:
- response = ArtifactTypeCacheUpdateResponse.fromCache(caching.getArtifactTypeCache().getAll());
- transalatorId = CoreTranslatorId.ARTIFACT_TYPE_CACHE_UPDATE_RESPONSE;
- break;
- case ATTRIBUTE_TYPE_CACHE:
- response =
- AttributeTypeCacheUpdateResponse.fromCache(factoryService.getAttributeTypeFactory(),
- caching.getAttributeTypeCache().getAll());
- transalatorId = CoreTranslatorId.ATTRIBUTE_TYPE_CACHE_UPDATE_RESPONSE;
- break;
- case OSEE_ENUM_TYPE_CACHE:
- response = OseeEnumTypeCacheUpdateResponse.fromCache(caching.getEnumTypeCache().getAll());
- transalatorId = CoreTranslatorId.OSEE_ENUM_TYPE_CACHE_UPDATE_RESPONSE;
- break;
- case RELATION_TYPE_CACHE:
- response = RelationTypeCacheUpdateResponse.fromCache(caching.getRelationTypeCache().getAll());
- transalatorId = CoreTranslatorId.RELATION_TYPE_CACHE_UPDATE_RESPONSE;
- break;
- default:
- throw new OseeArgumentException(String.format("Invalid cacheId [%s]", updateRequest.getCacheId()));
- }
- return new Pair<Object, ITranslatorId>(response, transalatorId);
- }
+ private static final long serialVersionUID = 6693534844874109524L;
+ private final IDataTranslationService translationService;
+ private final IOseeCachingService cachingService;
+ private final IOseeModelFactoryService factoryService;
+ private final ISessionManager sessionManager;
+
+ public OseeCacheServlet(ISessionManager sessionManager, IDataTranslationService translationService, IOseeCachingService cachingService, IOseeModelFactoryService factoryService) {
+ super();
+ this.sessionManager = sessionManager;
+ this.translationService = translationService;
+ this.cachingService = cachingService;
+ this.factoryService = factoryService;
+ }
+
+ public IDataTranslationService getTranslationService() {
+ return translationService;
+ }
+
+ public IOseeCachingService getCachingService() {
+ return cachingService;
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
+ OseeCacheEnum cacheId = OseeCacheEnum.valueOf(req.getParameter("cacheId"));
+ try {
+ IOseeCachingService caching = getCachingService();
+ IDataTranslationService service = getTranslationService();
+ Pair<Object, ITranslatorId> pair = createResponse(true, new CacheUpdateRequest(cacheId), caching);
+ resp.setStatus(HttpServletResponse.SC_ACCEPTED);
+ resp.setContentType("text/xml");
+ resp.setCharacterEncoding("UTF-8");
+ InputStream inputStream = service.convertToStream(pair.getFirst(), pair.getSecond());
+ OutputStream outputStream = resp.getOutputStream();
+ Lib.inputStreamToOutputStream(inputStream, outputStream);
+ } catch (Exception ex) {
+ OseeLog.log(getClass(), Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ try {
+ String sessionId = req.getParameter("sessionId");
+ String clientVersion = ModCompatible.getClientVersion(sessionManager, sessionId);
+ boolean isCompatible = ModCompatible.is_0_9_2_Compatible(clientVersion);
+
+ CacheOperation operation = CacheOperation.fromString(req.getParameter("function"));
+ switch (operation) {
+ case UPDATE:
+ sendUpdates(isCompatible, req, resp);
+ break;
+ case STORE:
+ storeUpdates(isCompatible, req, resp);
+ break;
+ default:
+ throw new UnsupportedOperationException();
+ }
+ } catch (Exception ex) {
+ handleError(resp, req.toString(), ex);
+ }
+ }
+
+ private void handleError(HttpServletResponse resp, String request, Throwable th) throws IOException {
+ OseeLog.log(Activator.class, Level.SEVERE, String.format("Osee Cache request error: [%s]", request), th);
+ resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ resp.setContentType("text/plain");
+ resp.getWriter().write(Lib.exceptionToString(th));
+ resp.getWriter().flush();
+ resp.getWriter().close();
+ }
+
+ private void storeUpdates(boolean isCompatible, HttpServletRequest req, HttpServletResponse resp) throws OseeCoreException {
+ IDataTranslationService service = getTranslationService();
+ IOseeCachingService caching = getCachingService();
+ TransactionCache txCache = caching.getTransactionCache();
+
+ BranchCacheStoreRequest updateRequest = null;
+ InputStream inputStream = null;
+ try {
+ inputStream = req.getInputStream();
+ updateRequest = service.convert(inputStream, CoreTranslatorId.BRANCH_CACHE_STORE_REQUEST);
+ } catch (IOException ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ } finally {
+ Lib.close(inputStream);
+ }
+ Collection<Branch> updated =
+ new BranchCacheUpdateUtil(factoryService.getBranchFactory(), txCache).updateCache(updateRequest,
+ caching.getBranchCache());
+
+ BranchCache cache = caching.getBranchCache();
+ if (updateRequest.isServerUpdateMessage()) {
+ for (Branch branch : updated) {
+ if (StorageState.CREATED == branch.getStorageState()) {
+ branch.setStorageState(StorageState.MODIFIED);
+ }
+ branch.clearDirty();
+ cache.decache(branch);
+ cache.cache(branch);
+ }
+ } else {
+ cache.storeItems(updated);
+ }
+ try {
+ resp.setStatus(HttpServletResponse.SC_ACCEPTED);
+ resp.setContentType("text/plain");
+ resp.setCharacterEncoding("UTF-8");
+ resp.getWriter().write("Branch Store Successful");
+ } catch (IOException ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ }
+ }
+
+ private void sendUpdates(boolean isCompatible, HttpServletRequest req, HttpServletResponse resp) throws OseeCoreException {
+ IDataTranslationService service = getTranslationService();
+ IOseeCachingService caching = getCachingService();
+
+ CacheUpdateRequest updateRequest = null;
+ InputStream inputStream = null;
+ try {
+ inputStream = req.getInputStream();
+ updateRequest = service.convert(inputStream, CoreTranslatorId.OSEE_CACHE_UPDATE_REQUEST);
+ } catch (IOException ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ } finally {
+ Lib.close(inputStream);
+ }
+
+ OutputStream outputStream = null;
+ try {
+ Pair<Object, ITranslatorId> pair = createResponse(isCompatible, updateRequest, caching);
+
+ resp.setStatus(HttpServletResponse.SC_ACCEPTED);
+ resp.setContentType("text/xml");
+ resp.setCharacterEncoding("UTF-8");
+
+ ModCompatible.makeSendCompatible(isCompatible, pair.getFirst());
+
+ inputStream = service.convertToStream(pair.getFirst(), pair.getSecond());
+ outputStream = resp.getOutputStream();
+ Lib.inputStreamToOutputStream(inputStream, outputStream);
+ } catch (IOException ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ }
+ }
+
+ private Pair<Object, ITranslatorId> createResponse(boolean isCompatible, CacheUpdateRequest updateRequest, IOseeCachingService caching) throws OseeCoreException {
+ Conditions.checkNotNull(caching, "caching service");
+ Object response = null;
+ ITranslatorId transalatorId = null;
+ switch (updateRequest.getCacheId()) {
+ case BRANCH_CACHE:
+ response = BranchCacheUpdateResponse.fromCache(caching.getBranchCache(), caching.getBranchCache().getAll());
+ transalatorId = CoreTranslatorId.BRANCH_CACHE_UPDATE_RESPONSE;
+ break;
+ case TRANSACTION_CACHE:
+ Collection<TransactionRecord> record;
+ TransactionCache txCache = caching.getTransactionCache();
+
+ if (updateRequest.getItemsIds().isEmpty()) {
+ record = txCache.getAll();
+ } else {
+ record = new ArrayList<TransactionRecord>();
+ for (Integer item : updateRequest.getItemsIds()) {
+ record.add(txCache.getOrLoad(item));
+ }
+ }
+ response = TransactionCacheUpdateResponse.fromCache(factoryService.getTransactionFactory(), record);
+ transalatorId = CoreTranslatorId.TX_CACHE_UPDATE_RESPONSE;
+ break;
+ case ARTIFACT_TYPE_CACHE:
+ response = ArtifactTypeCacheUpdateResponse.fromCache(caching.getArtifactTypeCache().getAll());
+ transalatorId = CoreTranslatorId.ARTIFACT_TYPE_CACHE_UPDATE_RESPONSE;
+ break;
+ case ATTRIBUTE_TYPE_CACHE:
+ response =
+ AttributeTypeCacheUpdateResponse.fromCache(factoryService.getAttributeTypeFactory(),
+ caching.getAttributeTypeCache().getAll());
+ transalatorId = CoreTranslatorId.ATTRIBUTE_TYPE_CACHE_UPDATE_RESPONSE;
+ break;
+ case OSEE_ENUM_TYPE_CACHE:
+ response = OseeEnumTypeCacheUpdateResponse.fromCache(caching.getEnumTypeCache().getAll());
+ transalatorId = CoreTranslatorId.OSEE_ENUM_TYPE_CACHE_UPDATE_RESPONSE;
+ break;
+ case RELATION_TYPE_CACHE:
+ response = RelationTypeCacheUpdateResponse.fromCache(caching.getRelationTypeCache().getAll());
+ transalatorId = CoreTranslatorId.RELATION_TYPE_CACHE_UPDATE_RESPONSE;
+ break;
+ default:
+ throw new OseeArgumentException(String.format("Invalid cacheId [%s]", updateRequest.getCacheId()));
+ }
+ return new Pair<Object, ITranslatorId>(response, transalatorId);
+ }
}

Back to the top