Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordonald.g.dunne2015-08-17 18:53:50 +0000
committerAngel Avila2015-09-12 01:04:04 +0000
commit19da7d754338b94caa8f72508bf4357a5082b362 (patch)
tree4239d1182031440463d97eb03509fbe1cdbeb3f6
parent8125da1acf86aaa62432d3f0ac6228ee3b020c3d (diff)
downloadorg.eclipse.osee-19da7d754338b94caa8f72508bf4357a5082b362.tar.gz
org.eclipse.osee-19da7d754338b94caa8f72508bf4357a5082b362.tar.xz
org.eclipse.osee-19da7d754338b94caa8f72508bf4357a5082b362.zip
feature[ats_ATS217738]: Convert ATS Server to evacuating cache
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java4
-rw-r--r--plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java4
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java5
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java4
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsArtifactConfigCache.java65
-rw-r--r--plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/WorkItem.java3
6 files changed, 43 insertions, 42 deletions
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java
index 3c1ca4a6341..354813e66ed 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java
@@ -231,8 +231,8 @@ public class AtsClientImpl implements IAtsClient {
attributeResolverService = new AtsAttributeResolverServiceImpl();
relationResolver = new AtsRelationResolverServiceImpl(this);
- workDefAdmin = new AtsWorkDefinitionAdminImpl(workDefCacheProvider, workItemService, workDefService,
- attributeResolverService, teamWorkflowProvidersLazy);
+ workDefAdmin = new AtsWorkDefinitionAdminImpl(workDefCacheProvider, workDefService, attributeResolverService,
+ teamWorkflowProvidersLazy);
branchService = new AtsBranchServiceImpl(this, teamWorkflowProvidersLazy);
reviewService = new AtsReviewServiceImpl(this, this);
diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java
index b228e273b89..2a0b6343830 100644
--- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java
+++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java
@@ -87,8 +87,8 @@ public class AtsWorkDefinitionAdminImplTest {
AtsWorkDefinitionCache cache = new AtsWorkDefinitionCache();
when(cacheProvider.get()).thenReturn(cache);
- workDefAmin = new AtsWorkDefinitionAdminImpl(cacheProvider, workItemService, workDefinitionService,
- attributeResolver, teamWorkflowProviders);
+ workDefAmin = new AtsWorkDefinitionAdminImpl(cacheProvider, workDefinitionService, attributeResolver,
+ teamWorkflowProviders);
}
@Test
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java
index c0a3575c09c..2754c8e2e27 100644
--- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java
@@ -32,7 +32,6 @@ import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch;
import org.eclipse.osee.ats.api.workflow.IAtsGoal;
import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
-import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService;
import org.eclipse.osee.ats.core.util.CacheProvider;
import org.eclipse.osee.ats.core.workflow.ITeamWorkflowProvidersLazy;
import org.eclipse.osee.ats.core.workflow.TeamWorkflowProviders;
@@ -50,13 +49,11 @@ public class AtsWorkDefinitionAdminImpl implements IAtsWorkDefinitionAdmin {
private final CacheProvider<AtsWorkDefinitionCache> cacheProvider;
private final IAtsWorkDefinitionService workDefinitionService;
- private final IAtsWorkItemService workItemService;
private final IAttributeResolver attributeResolver;
private final ITeamWorkflowProvidersLazy teamWorkflowProvidersLazy;
- public AtsWorkDefinitionAdminImpl(CacheProvider<AtsWorkDefinitionCache> workDefCacheProvider, IAtsWorkItemService workItemService, IAtsWorkDefinitionService workDefinitionService, IAttributeResolver attributeResolver, ITeamWorkflowProvidersLazy teamWorkflowProvidersLazy) {
+ public AtsWorkDefinitionAdminImpl(CacheProvider<AtsWorkDefinitionCache> workDefCacheProvider, IAtsWorkDefinitionService workDefinitionService, IAttributeResolver attributeResolver, ITeamWorkflowProvidersLazy teamWorkflowProvidersLazy) {
this.cacheProvider = workDefCacheProvider;
- this.workItemService = workItemService;
this.workDefinitionService = workDefinitionService;
this.attributeResolver = attributeResolver;
this.teamWorkflowProvidersLazy = teamWorkflowProvidersLazy;
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java
index 5d1a60cdb61..2349d743dbd 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/AtsServerImpl.java
@@ -207,8 +207,8 @@ public class AtsServerImpl implements IAtsServer {
attributeResolverService = new AtsAttributeResolverServiceImpl();
relationResolver = new AtsRelationResolverServiceImpl(this);
attributeResolverService.setOrcsApi(orcsApi);
- workDefAdmin = new AtsWorkDefinitionAdminImpl(workDefCacheProvider, workItemService, workDefService,
- attributeResolverService, teamWorkflowProvidersLazy);
+ workDefAdmin = new AtsWorkDefinitionAdminImpl(workDefCacheProvider, workDefService, attributeResolverService,
+ teamWorkflowProvidersLazy);
atsLogFactory = AtsCoreFactory.newLogFactory();
atsStateFactory = AtsCoreFactory.newStateFactory(getServices(), atsLogFactory);
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsArtifactConfigCache.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsArtifactConfigCache.java
index 3d0cce1c098..3b6bd36aaf7 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsArtifactConfigCache.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/util/AtsArtifactConfigCache.java
@@ -11,45 +11,49 @@
package org.eclipse.osee.ats.impl.internal.util;
import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.TimeUnit;
import org.eclipse.osee.ats.api.IAtsConfigObject;
import org.eclipse.osee.ats.api.team.IAtsConfigItemFactory;
-import org.eclipse.osee.ats.core.config.AtsConfigCache;
import org.eclipse.osee.ats.core.config.IAtsConfig;
import org.eclipse.osee.ats.core.util.AtsUtilCore;
+import org.eclipse.osee.framework.core.exception.OseeWrappedException;
import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
import org.eclipse.osee.orcs.OrcsApi;
import org.eclipse.osee.orcs.data.ArtifactReadable;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
/**
* @author Donald G. Dunne
*/
public class AtsArtifactConfigCache implements IAtsConfig {
- private final AtsConfigCache cache;
private final IAtsConfigItemFactory configItemFactory;
private final OrcsApi orcsApi;
+ private final Cache<Long, IAtsConfigObject> uuidCache =
+ CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.MINUTES).build();
public AtsArtifactConfigCache(IAtsConfigItemFactory configItemFactory, OrcsApi orcsApi) {
this.configItemFactory = configItemFactory;
this.orcsApi = orcsApi;
- cache = new AtsConfigCache();
}
@Override
public <A extends IAtsConfigObject> List<A> getByTag(String tag, Class<A> clazz) throws OseeCoreException {
- return cache.getByTag(tag, clazz);
+ throw new UnsupportedOperationException("AtsArtifactConfigCache.getByTag not supported on server");
}
@Override
public <A extends IAtsConfigObject> A getSoleByTag(String tag, Class<A> clazz) throws OseeCoreException {
- return cache.getSoleByTag(tag, clazz);
+ throw new UnsupportedOperationException("AtsArtifactConfigCache.getSoleByTag not supported on server");
}
@Override
public <A extends IAtsConfigObject> List<A> get(Class<A> clazz) throws OseeCoreException {
- return cache.get(clazz);
+ throw new UnsupportedOperationException("AtsArtifactConfigCache.get not supported on server");
}
@Override
@@ -59,45 +63,44 @@ public class AtsArtifactConfigCache implements IAtsConfig {
@Override
public void invalidate(IAtsConfigObject configObject) throws OseeCoreException {
- cache.invalidate(configObject);
+ uuidCache.invalidate(configObject.getUuid());
}
@Override
public final <A extends IAtsConfigObject> List<A> getById(long id, Class<A> clazz) {
- return cache.getById(id, clazz);
+ throw new UnsupportedOperationException("AtsArtifactConfigCache.getById not supported on server");
}
@SuppressWarnings("unchecked")
@Override
- public <A extends IAtsConfigObject> A getSoleByUuid(long uuid, Class<A> clazz) throws OseeCoreException {
- A result = cache.getSoleByUuid(uuid, clazz);
- if (result == null) {
- ArtifactReadable artifact =
- orcsApi.getQueryFactory().fromBranch(AtsUtilCore.getAtsBranch()).andUuid(uuid).getResults().getOneOrNull();
- if (artifact != null) {
- result = (A) configItemFactory.getConfigObject(artifact);
- if (result != null) {
- cache.cache(result);
+ public <A extends IAtsConfigObject> A getSoleByUuid(final long uuid, Class<A> clazz) throws OseeCoreException {
+ IAtsConfigObject atsConfigObject = null;
+ try {
+ atsConfigObject = uuidCache.get(uuid, new Callable<IAtsConfigObject>() {
+
+ @Override
+ public IAtsConfigObject call() throws Exception {
+ ArtifactReadable artifact = orcsApi.getQueryFactory().fromBranch(AtsUtilCore.getAtsBranch()).andUuid(
+ uuid).getResults().getOneOrNull();
+ if (artifact == null) {
+ throw new OseeStateException("Artifact of %d of class %s is not found", uuid, clazz.getTypeName());
+ }
+ IAtsConfigObject atsConfigObject = configItemFactory.getConfigObject(artifact);
+ if (atsConfigObject == null) {
+ throw new OseeStateException("Artifact of %d is not of class %s", uuid, clazz.getTypeName());
+ }
+ return atsConfigObject;
}
- }
+ });
+ } catch (Exception ex) {
+ throw new OseeWrappedException(ex);
}
- return result;
+ return atsConfigObject != null ? (A) atsConfigObject : null;
}
@Override
public IAtsConfigObject getSoleByUuid(long uuid) throws OseeCoreException {
- IAtsConfigObject result = cache.getSoleByUuid(uuid);
- if (result == null) {
- ArtifactReadable artifact =
- orcsApi.getQueryFactory().fromBranch(AtsUtilCore.getAtsBranch()).andUuid(uuid).getResults().getOneOrNull();
- if (artifact != null) {
- result = configItemFactory.getConfigObject(artifact);
- if (result != null) {
- cache.cache(result);
- }
- }
- }
- return result;
+ return getSoleByUuid(uuid, IAtsConfigObject.class);
}
}
diff --git a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/WorkItem.java b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/WorkItem.java
index 206a11eb631..515e9508d5f 100644
--- a/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/WorkItem.java
+++ b/plugins/org.eclipse.osee.ats.impl/src/org/eclipse/osee/ats/impl/internal/workitem/WorkItem.java
@@ -186,7 +186,8 @@ public class WorkItem extends AtsObject implements IAtsWorkItem {
try {
match = getAtsServer().getWorkDefAdmin().getWorkDefinition(this);
} catch (Exception ex) {
- logger.error("Error getting work definition match for artifact[%s]", artifact);
+ logger.error("Error getting work definition match for artifact[%s]: Exception %s", artifact,
+ ex.getLocalizedMessage());
}
}
return match;

Back to the top