Author: ieb
Date: Fri Nov  2 12:12:00 2012
New Revision: 1404941

URL: http://svn.apache.org/viewvc?rev=1404941&view=rev
Log:
SLING-2555 Fixed Infinispan bundle and tested in pax exam.

Added:
    
sling/whiteboard/ieb/cache/infinispan/src/test/java/org/apache/sling/commons/cache/infinispan/CacheIT.java
   (with props)
Modified:
    sling/whiteboard/ieb/cache/infinispan/pom.xml
    
sling/whiteboard/ieb/cache/infinispan/src/main/java/org/apache/sling/commons/cache/infinispan/CacheManagerServiceImpl.java

Modified: sling/whiteboard/ieb/cache/infinispan/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/ieb/cache/infinispan/pom.xml?rev=1404941&r1=1404940&r2=1404941&view=diff
==============================================================================
--- sling/whiteboard/ieb/cache/infinispan/pom.xml (original)
+++ sling/whiteboard/ieb/cache/infinispan/pom.xml Fri Nov  2 12:12:00 2012
@@ -47,12 +47,17 @@
         <plugins>
             <plugin>
                 <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <version>2.3.6</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
                            <Import-Package>
+                              !bsh,
                               !org.jboss.logmanager, 
                               !org.jboss.modules,
                               !net.jcip.annotations,
@@ -63,8 +68,8 @@
                            <Private-Package>
                                org.apache.sling.commons.cache.infinispan.*,
                                org.apache.sling.commons.cache.impl.*
-                               </Private-Package>
-                           
<DynamicImport-Package>sun.misc.*</DynamicImport-Package>
+                           </Private-Package>
+                           
<DynamicImport-Package>*,sun.misc,sun.reflect,javax.transaction,javax.transaction.xa</DynamicImport-Package>
                            <Embed-Transitive>true</Embed-Transitive>
                            <Embed-Dependency>
                            infinispan-core,
@@ -78,6 +83,36 @@
             </plugin>
         </plugins>
     </build>
+    <profiles>
+        <profile>
+            <id>java6</id>
+            <activation>
+                <jdk>1.6</jdk>
+            </activation>
+            <build>
+                <plugins>
+                  <!-- integration tests run with pax-exam -->
+                    <plugin>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <version>2.12</version>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <includes>
+                                <include>**/*IT.java</include>
+                            </includes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 
     <dependencies>
         <dependency>
@@ -120,6 +155,11 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
-        
+        <dependency>
+               <groupId>org.apache.sling</groupId>
+               
<artifactId>org.apache.sling.commons.cache.container-test</artifactId>
+               <version>0.1-SNAPSHOT</version>
+               <scope>test</scope>
+        </dependency>        
     </dependencies>
 </project>

Modified: 
sling/whiteboard/ieb/cache/infinispan/src/main/java/org/apache/sling/commons/cache/infinispan/CacheManagerServiceImpl.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/ieb/cache/infinispan/src/main/java/org/apache/sling/commons/cache/infinispan/CacheManagerServiceImpl.java?rev=1404941&r1=1404940&r2=1404941&view=diff
==============================================================================
--- 
sling/whiteboard/ieb/cache/infinispan/src/main/java/org/apache/sling/commons/cache/infinispan/CacheManagerServiceImpl.java
 (original)
+++ 
sling/whiteboard/ieb/cache/infinispan/src/main/java/org/apache/sling/commons/cache/infinispan/CacheManagerServiceImpl.java
 Fri Nov  2 12:12:00 2012
@@ -80,32 +80,37 @@ public class CacheManagerServiceImpl ext
                String config = toString(properties.get(CACHE_CONFIG),
                                DEFAULT_CACHE_CONFIG);
                File configFile = new File(config);
-               if (configFile.exists()) {
-                       LOGGER.info("Configuring Cache from {} ",
-                                       configFile.getAbsolutePath());
-                       InputStream in = null;
-                       try {
-                               in = processConfig(new 
FileInputStream(configFile), properties);
-                               cacheManager  = new DefaultCacheManager(in);
-                       } finally {
-                               if (in != null) {
-                                       in.close();
+               ClassLoader cl = Thread.currentThread().getContextClassLoader();
+               try {
+                       
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+                       if (configFile.exists()) {
+                               LOGGER.info("Configuring Cache from {} ",
+                                               configFile.getAbsolutePath());
+                               InputStream in = null;
+                               try {
+                                       in = processConfig(new 
FileInputStream(configFile), properties);
+                                       cacheManager  = new 
DefaultCacheManager(in);
+                               } finally {
+                                       if (in != null) {
+                                               in.close();
+                                       }
                                }
+                       } else {
+                               LOGGER.info("Configuring Cache from Classpath 
Default {} ",
+                                               CONFIG_PATH);
+                               InputStream in = 
processConfig(this.getClass().getClassLoader()
+                                               
.getResourceAsStream(CONFIG_PATH), properties);
+                               if (in == null) {
+                                       throw new IOException(
+                                                       "Unable to open config 
at classpath location "
+                                                                       + 
CONFIG_PATH);
+                               }
+                               cacheManager  = new DefaultCacheManager(in);
+                               in.close();
                        }
-               } else {
-                       LOGGER.info("Configuring Cache from Classpath Default 
{} ",
-                                       CONFIG_PATH);
-                       InputStream in = 
processConfig(this.getClass().getClassLoader()
-                                       .getResourceAsStream(CONFIG_PATH), 
properties);
-                       if (in == null) {
-                               throw new IOException(
-                                               "Unable to open config at 
classpath location "
-                                                               + CONFIG_PATH);
-                       }
-                       cacheManager  = new DefaultCacheManager(in);
-                       in.close();
+               } finally {
+                       Thread.currentThread().setContextClassLoader(cl);
                }
-               
 
                final WeakReference<CacheManagerServiceImpl> ref = new 
WeakReference<CacheManagerServiceImpl>(
                                this);

Added: 
sling/whiteboard/ieb/cache/infinispan/src/test/java/org/apache/sling/commons/cache/infinispan/CacheIT.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/ieb/cache/infinispan/src/test/java/org/apache/sling/commons/cache/infinispan/CacheIT.java?rev=1404941&view=auto
==============================================================================
--- 
sling/whiteboard/ieb/cache/infinispan/src/test/java/org/apache/sling/commons/cache/infinispan/CacheIT.java
 (added)
+++ 
sling/whiteboard/ieb/cache/infinispan/src/test/java/org/apache/sling/commons/cache/infinispan/CacheIT.java
 Fri Nov  2 12:12:00 2012
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.commons.cache.infinispan;
+
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.provision;
+
+
+import javax.inject.Inject;
+
+import org.apache.sling.commons.cache.api.Cache;
+import org.apache.sling.commons.cache.api.CacheManagerService;
+import org.apache.sling.commons.cache.api.CacheScope;
+import org.apache.sling.test.AbstractOSGiRunner;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.ExamReactorStrategy;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.ops4j.pax.exam.spi.reactors.EagerSingleStagedReactorFactory;
+import org.osgi.framework.BundleContext;
+
+/**
+ * Spin the cache up in a container to verify we have a working system.
+ */
+@RunWith(JUnit4TestRunner.class)
+@ExamReactorStrategy(EagerSingleStagedReactorFactory.class) // we want to spin 
up the container once only.
+public class CacheIT extends AbstractOSGiRunner {
+
+
+       @Inject
+       private CacheManagerService cacheManagerService;
+       
+       @Inject
+       private BundleContext bundleContext;
+               
+
+       @Override
+       protected String getImports() {
+               return 
"org.apache.sling.commons.cache.api,javax.transaction,javax.transaction.xa";
+       }
+       
+
+       @Override
+       public Option[] getOptions() {
+               // check();
+               return options(
+                               provision(
+                                               // Infinispan needs a 
transaction API.
+                                   mavenBundle("org.apache.geronimo.specs", 
"geronimo-jta_1.1_spec"),
+                                               mavenBundle("org.apache.sling", 
"org.apache.sling.commons.cache.api")
+                               ));
+       }
+
+
+       @Override
+       protected String getArtifactName() {
+               return "org.apache.sling.commons.cache.infinispan";
+       }
+
+
+       @Test
+       public void testCacheManagerReplicated() {
+               check();
+               String cacheName = "string-cache-replicated";
+               Assert.assertNotNull(cacheManagerService);
+               Cache<String> c = cacheManagerService.getCache(cacheName,
+                               CacheScope.CLUSTERREPLICATED);
+               Assert.assertNotNull(c);
+               String v = cacheName + 
String.valueOf(System.currentTimeMillis());
+               c.put("key", v);
+               Assert.assertEquals(v, c.get("key"));
+               cacheManagerService.unbind(CacheScope.CLUSTERREPLICATED);
+               cacheManagerService.unbind(CacheScope.CLUSTERINVALIDATED);
+               cacheManagerService.unbind(CacheScope.INSTANCE);
+               cacheManagerService.unbind(CacheScope.REQUEST);
+               cacheManagerService.unbind(CacheScope.THREAD);
+               c = cacheManagerService.getCache(cacheName,
+                               CacheScope.CLUSTERREPLICATED);
+               Assert.assertNotNull(c);
+               Assert.assertEquals(v, c.get("key"));
+
+       }
+
+       @Test
+       public void testCacheManagerInvalidated() {
+               String cacheName = "string-cache-invalidated";
+               Assert.assertNotNull(cacheManagerService);
+               Cache<String> c = cacheManagerService.getCache(cacheName,
+                               CacheScope.CLUSTERINVALIDATED);
+               Assert.assertNotNull(c);
+               String v = cacheName + 
String.valueOf(System.currentTimeMillis());
+               c.put("key", v);
+               Assert.assertEquals(v, c.get("key"));
+               cacheManagerService.unbind(CacheScope.CLUSTERREPLICATED);
+               cacheManagerService.unbind(CacheScope.CLUSTERINVALIDATED);
+               cacheManagerService.unbind(CacheScope.INSTANCE);
+               cacheManagerService.unbind(CacheScope.REQUEST);
+               cacheManagerService.unbind(CacheScope.THREAD);
+               c = cacheManagerService.getCache(cacheName,
+                               CacheScope.CLUSTERINVALIDATED);
+               Assert.assertNotNull(c);
+               Assert.assertEquals(v, c.get("key"));
+       }
+
+
+
+       @Test
+       public void testCacheManagerInstance() {
+               String cacheName = "string-cache-instance";
+               Assert.assertNotNull(cacheManagerService);
+               Cache<String> c = cacheManagerService.getCache(cacheName,
+                               CacheScope.INSTANCE);
+               Assert.assertNotNull(c);
+               String v = cacheName + 
String.valueOf(System.currentTimeMillis());
+               c.put("key", v);
+               Assert.assertEquals(v, c.get("key"));
+               cacheManagerService.unbind(CacheScope.CLUSTERREPLICATED);
+               cacheManagerService.unbind(CacheScope.CLUSTERINVALIDATED);
+               cacheManagerService.unbind(CacheScope.INSTANCE);
+               cacheManagerService.unbind(CacheScope.REQUEST);
+               cacheManagerService.unbind(CacheScope.THREAD);
+               c = cacheManagerService.getCache(cacheName, 
CacheScope.INSTANCE);
+               Assert.assertNotNull(c);
+               Assert.assertEquals(v, c.get("key"));
+       }
+
+       @Test
+       public void testCacheManagerRequest() {
+               String cacheName = "string-cache-request";
+               Assert.assertNotNull(cacheManagerService);
+               Cache<String> c = cacheManagerService.getCache(cacheName,
+                               CacheScope.REQUEST);
+               Assert.assertNotNull(c);
+               String v = cacheName + 
String.valueOf(System.currentTimeMillis());
+               c.put("key", v);
+               Assert.assertEquals(v, c.get("key"));
+               cacheManagerService.unbind(CacheScope.CLUSTERREPLICATED);
+               cacheManagerService.unbind(CacheScope.CLUSTERINVALIDATED);
+               cacheManagerService.unbind(CacheScope.INSTANCE);
+               cacheManagerService.unbind(CacheScope.REQUEST);
+               cacheManagerService.unbind(CacheScope.THREAD);
+               c = cacheManagerService.getCache(cacheName, CacheScope.REQUEST);
+               Assert.assertNotNull(c);
+               Assert.assertNull(c.get("key"));
+       }
+
+       @Test
+       public void testCacheManagerThread() {
+               String cacheName = "string-cache-thread";
+               Assert.assertNotNull(cacheManagerService);
+               Cache<String> c = cacheManagerService.getCache(cacheName,
+                               CacheScope.THREAD);
+               Assert.assertNotNull(c);
+               String v = cacheName + 
String.valueOf(System.currentTimeMillis());
+               c.put("key", v);
+               Assert.assertEquals(v, c.get("key"));
+               cacheManagerService.unbind(CacheScope.CLUSTERREPLICATED);
+               cacheManagerService.unbind(CacheScope.CLUSTERINVALIDATED);
+               cacheManagerService.unbind(CacheScope.INSTANCE);
+               cacheManagerService.unbind(CacheScope.REQUEST);
+               cacheManagerService.unbind(CacheScope.THREAD);
+               c = cacheManagerService.getCache(cacheName, CacheScope.THREAD);
+               Assert.assertNotNull(c);
+               Assert.assertNull(c.get("key"));
+       }
+
+}

Propchange: 
sling/whiteboard/ieb/cache/infinispan/src/test/java/org/apache/sling/commons/cache/infinispan/CacheIT.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to