diff --git a/zanata-war/src/main/java/org/zanata/cache/CacheContainerProducer.java b/zanata-war/src/main/java/org/zanata/cache/CacheContainerProducer.java new file mode 100644 index 0000000000..3b7a06ad5d --- /dev/null +++ b/zanata-war/src/main/java/org/zanata/cache/CacheContainerProducer.java @@ -0,0 +1,49 @@ +/* + * Copyright 2014, Red Hat, Inc. and individual contributors as indicated by the + * @author tags. See the copyright.txt file in the distribution for a full + * listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This software is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this software; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF + * site: http://www.fsf.org. + */ +package org.zanata.cache; + +import org.infinispan.manager.CacheContainer; +import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.AutoCreate; +import org.jboss.seam.annotations.Name; +import org.jboss.seam.annotations.Scope; +import org.jboss.seam.annotations.Unwrap; +import org.zanata.util.ServiceLocator; + +/** + * Produces a cache container for injection. + * @author Carlos Munoz camunoz@redhat.com + */ +@Name("cacheContainer") +@Scope(ScopeType.STATELESS) +@AutoCreate +public class CacheContainerProducer { + + private static final String CACHE_CONTAINER_NAME = + "java:jboss/infinispan/container/zanata"; + + @Unwrap + public CacheContainer getCacheContainer() { + return ServiceLocator.instance().getJndiComponent(CACHE_CONTAINER_NAME, + CacheContainer.class); + } +} diff --git a/zanata-war/src/main/java/org/zanata/service/impl/TranslationStateCacheImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/TranslationStateCacheImpl.java index 89469c0c46..96302bc9a0 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/TranslationStateCacheImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/TranslationStateCacheImpl.java @@ -82,8 +82,6 @@ public class TranslationStateCacheImpl implements TranslationStateCache { private static final String TFT_VALIDATION_CACHE_NAME = BASE + ".targetValidationCache"; - private CacheContainer cacheManager; - private CacheWrapper documentStatisticCache; private CacheLoader documentStatisticLoader; @@ -93,6 +91,9 @@ public class TranslationStateCacheImpl implements TranslationStateCache { private CacheWrapper> targetValidationCache; private CacheLoader> targetValidationLoader; + @In + private CacheContainer cacheContainer; + @In private ServiceLocator serviceLocator; @@ -114,21 +115,17 @@ public TranslationStateCacheImpl( @Create public void create() { - cacheManager = - ServiceLocator.instance().getJndiComponent( - "java:jboss/infinispan/container/zanata", - CacheContainer.class); documentStatisticCache = InfinispanCacheWrapper.create(DOC_STATISTIC_CACHE_NAME, - cacheManager, documentStatisticLoader); + cacheContainer, documentStatisticLoader); docStatusCache = InfinispanCacheWrapper.create(DOC_STATUS_CACHE_NAME, - cacheManager, + cacheContainer, docStatusLoader); targetValidationCache = InfinispanCacheWrapper.create(TFT_VALIDATION_CACHE_NAME, - cacheManager, + cacheContainer, targetValidationLoader); } @@ -136,7 +133,7 @@ public void create() { public void destroy() { // NB Since infinispan is container managed, there's no need to stop the // cache manager with - // cacheManager.stop(); + // cacheContainer.stop(); } @Override diff --git a/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java index 6e511af290..a64ac1f4c3 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java @@ -57,11 +57,12 @@ public class VersionStateCacheImpl implements VersionStateCache { private static final String VERSION_STATISTIC_CACHE_NAME = BASE + ".versionStatisticCache"; - private CacheContainer cacheManager; - private CacheWrapper versionStatisticCache; private CacheLoader versionStatisticLoader; + @In + private CacheContainer cacheContainer; + @In private ServiceLocator serviceLocator; @@ -78,20 +79,16 @@ public VersionStateCacheImpl( @Create public void create() { - cacheManager = - ServiceLocator.instance().getJndiComponent( - "java:jboss/infinispan/container/zanata", - CacheContainer.class); versionStatisticCache = InfinispanCacheWrapper.create(VERSION_STATISTIC_CACHE_NAME, - cacheManager, versionStatisticLoader); + cacheContainer, versionStatisticLoader); } @Destroy public void destroy() { // NB Since infinispan is container managed, there's no need to stop the // cache manager with - // cacheManager.stop(); + // cacheContainer.stop(); } @Observer(TextFlowTargetStateEvent.EVENT_NAME)