You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/07/28 13:23:56 UTC

svn commit: r1366639 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/api/ oak-it/osgi/ oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/ oak-jcr/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/

Author: jukka
Date: Sat Jul 28 11:23:55 2012
New Revision: 1366639

URL: http://svn.apache.org/viewvc?rev=1366639&view=rev
Log:
OAK-200: Replace Commons Collections with Guava

Use Guava to replace also Commons IO.
Better documentation of the contract to close streams.

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java
    jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
    jackrabbit/oak/trunk/oak-it/osgi/test-bundles.xml
    jackrabbit/oak/trunk/oak-jcr/pom.xml
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java?rev=1366639&r1=1366638&r2=1366639&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java Sat Jul 28 11:23:55 2012
@@ -76,12 +76,14 @@ public interface CoreValueFactory {
     CoreValue createValue(BigDecimal value);
 
     /**
-     * Creates a new value of type {@link javax.jcr.PropertyType#BINARY}.
+     * Creates a new value of type {@link javax.jcr.PropertyType#BINARY}
+     * from the given byte stream. The stream is consumed <em>and</em> closed
+     * by this method.
      *
      * @param value A non-null {@code InputStream} that defines the new value.
      * @return a new value instance.
      * @throws IllegalArgumentException if the specified {@code InputStream} is {@code null}.
-     * @throws IOException If an error occurs while processing the stream.
+     * @throws IOException If the stream could not be consumed (or closed).
      * @throws //TODO define exceptions (currently impl. throws MicrokernelException)
      */
     @Nonnull

Modified: jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java?rev=1366639&r1=1366638&r2=1366639&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java (original)
+++ jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java Sat Jul 28 11:23:55 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.osgi;
 
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
 import static org.ops4j.pax.exam.CoreOptions.bundle;
 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
@@ -23,6 +25,7 @@ import static org.ops4j.pax.exam.CoreOpt
 import java.io.File;
 import java.io.IOException;
 import java.net.URISyntaxException;
+import java.util.regex.Pattern;
 
 import javax.inject.Inject;
 import javax.jcr.Repository;
@@ -48,7 +51,6 @@ public class OSGiIT {
                 junitBundles(),
                 mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.6.0"),
                 bundle(new File(base, "jcr.jar").toURI().toURL().toString()),
-                bundle(new File(base, "commons-io.jar").toURI().toURL().toString()),
                 bundle(new File(base, "guava.jar").toURI().toURL().toString()),
                 bundle(new File(base, "jackrabbit-api.jar").toURI().toURL().toString()),
                 bundle(new File(base, "jackrabbit-jcr-commons.jar").toURI().toURL().toString()),
@@ -65,8 +67,8 @@ public class OSGiIT {
 
     @Test
     public void testMicroKernel() {
-        System.out.println(kernel);
-        System.out.println(kernel.getHeadRevision());
+        assertNotNull(kernel);
+        assertTrue(Pattern.matches("[0-9a-f]+", kernel.getHeadRevision()));
     }
 
     @Inject
@@ -74,7 +76,8 @@ public class OSGiIT {
 
     @Test
     public void testOakRepository() {
-        System.out.println(oakRepository);
+        assertNotNull(oakRepository);
+        // TODO: try something with oakRepository
     }
 
     @Inject
@@ -82,7 +85,8 @@ public class OSGiIT {
 
     @Test
     public void testJcrRepository() {
-        System.out.println(jcrRepository);
+        assertNotNull(jcrRepository);
+        // TODO: try something with jcrRepository
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-it/osgi/test-bundles.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/osgi/test-bundles.xml?rev=1366639&r1=1366638&r2=1366639&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/osgi/test-bundles.xml (original)
+++ jackrabbit/oak/trunk/oak-it/osgi/test-bundles.xml Sat Jul 28 11:23:55 2012
@@ -29,7 +29,6 @@
       <scope>test</scope>
       <includes>
         <include>javax.jcr:jcr</include>
-        <include>commons-io:commons-io</include>
         <include>com.google.guava:guava</include>
         <include>org.apache.jackrabbit:jackrabbit-api</include>
         <include>org.apache.jackrabbit:jackrabbit-jcr-commons</include>

Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1366639&r1=1366638&r2=1366639&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Sat Jul 28 11:23:55 2012
@@ -192,11 +192,6 @@ org.apache.jackrabbit.test.api.observati
         <version>${guava.version}</version>
     </dependency>
     <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>1.4</version>
-    </dependency>
-    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.6.4</version>

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java?rev=1366639&r1=1366638&r2=1366639&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java Sat Jul 28 11:23:55 2012
@@ -16,7 +16,6 @@
  */
 package org.apache.jackrabbit.oak.jcr.value;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.api.CoreValueFactory;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -136,9 +135,6 @@ public class ValueFactoryImpl implements
             return new ValueImpl(cv, namePathMapper);
         } catch (IOException ex) {
             throw new RuntimeException(ex);
-        } finally {
-            // JCR-2903
-            IOUtils.closeQuietly(value);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java?rev=1366639&r1=1366638&r2=1366639&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java Sat Jul 28 11:23:55 2012
@@ -16,13 +16,16 @@
  */
 package org.apache.jackrabbit.oak.jcr.value;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.util.ISO8601;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Charsets;
+import com.google.common.io.CharStreams;
+import com.google.common.io.InputSupplier;
+
 import javax.jcr.Binary;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
@@ -31,7 +34,6 @@ import javax.jcr.ValueFormatException;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.util.Calendar;
 import java.util.TimeZone;
@@ -184,13 +186,17 @@ class ValueImpl implements Value {
                     throw new IllegalStateException("getStream has previously been called on this Value instance. " +
                             "In this case a new Value instance must be acquired in order to successfully call this method.");
                 }
-                InputStream in = getNewStream();
                 try {
-                    return IOUtils.toString(in, "UTF-8");
+                    stream = getNewStream();
+                    return CharStreams.toString(CharStreams.newReaderSupplier(
+                            new InputSupplier<InputStream>() {
+                                @Override
+                                public InputStream getInput() {
+                                    return stream;
+                                }
+                            }, Charsets.UTF_8));
                 } catch (IOException e) {
                     throw new RepositoryException("conversion from stream to string failed", e);
-                } finally {
-                    IOUtils.closeQuietly(stream);
                 }
             default:
                 return value.toString();
@@ -212,11 +218,8 @@ class ValueImpl implements Value {
         switch (getType()) {
         case PropertyType.NAME:
         case PropertyType.PATH:
-            try {
-                return new ByteArrayInputStream(getString().getBytes("UTF-8"));
-            } catch (UnsupportedEncodingException ex) {
-                throw new RepositoryException("UTF-8 is not supported", ex);
-            }
+            return new ByteArrayInputStream(
+                    getString().getBytes(Charsets.UTF_8));
         }
         return value.getNewStream();
     }
@@ -230,6 +233,7 @@ class ValueImpl implements Value {
     }
 
     //-------------------------------------------------------------< Object >---
+
     /**
      * @see Object#equals(Object)
      */