servicemix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ioca...@apache.org
Subject svn commit: r1230380 - in /servicemix/smx4/bundles/trunk: ./ bundles-pom/ snappy-java-1.0.4.1/ snappy-java-1.0.4.1/src/ snappy-java-1.0.4.1/src/main/ snappy-java-1.0.4.1/src/main/java/ snappy-java-1.0.4.1/src/main/java/org/ snappy-java-1.0.4.1/src/main...
Date Thu, 12 Jan 2012 03:09:40 GMT
Author: iocanel
Date: Thu Jan 12 03:09:40 2012
New Revision: 1230380

URL: http://svn.apache.org/viewvc?rev=1230380&view=rev
Log:
[SMX4-1035] Added an OSGi bundle for snappy-java. Minor modification to bundles-pom.

Added:
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/pom.xml
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/Snappy.java
  (with props)
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/SnappyBundleActivator.java
  (with props)
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/OSGI-INF/
    servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/OSGI-INF/bundle.info
Modified:
    servicemix/smx4/bundles/trunk/bundles-pom/pom.xml
    servicemix/smx4/bundles/trunk/pom.xml

Modified: servicemix/smx4/bundles/trunk/bundles-pom/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/bundles/trunk/bundles-pom/pom.xml?rev=1230380&r1=1230379&r2=1230380&view=diff
==============================================================================
--- servicemix/smx4/bundles/trunk/bundles-pom/pom.xml (original)
+++ servicemix/smx4/bundles/trunk/bundles-pom/pom.xml Thu Jan 12 03:09:40 2012
@@ -30,7 +30,7 @@
     <groupId>org.apache.servicemix.bundles</groupId>
     <artifactId>bundles-pom</artifactId>
     <packaging>pom</packaging>
-    <version>8-SNAPSHOT</version>
+    <version>9-SNAPSHOT</version>
     <name>Apache ServiceMix :: Bundles</name>
 
     <properties>
@@ -103,6 +103,15 @@
                     <artifactId>maven-jarsigner-plugin</artifactId>
                     <version>1.2</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>2.3.2</version>
+                    <configuration>
+                        <source>1.5</source>
+                        <target>1.5</target>
+                    </configuration>
+                </plugin>
             </plugins>
     
         </pluginManagement>
@@ -111,7 +120,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.1.0</version>
+                <version>2.3.6</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
@@ -122,6 +131,8 @@
                         <Private-Package>${servicemix.osgi.private.pkg}</Private-Package>
                         <DynamicImport-Package>${servicemix.osgi.dynamicimport.pkg}</DynamicImport-Package>
                         <Embed-Dependency>${servicemix.osgi.embed.dependency}</Embed-Dependency>
+                        <Bundle-NativeCode>${servicemix.osgi.native}</Bundle-NativeCode>
+                        <Bundle-Activator>${servicemix.osgi.activator}</Bundle-Activator>
                         <_failok>${servicemix.osgi.failok}</_failok>
                         <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         <_removeheaders>Ignore-Package,Include-Resource,Private-Package,Embed-Dependency</_removeheaders>

Modified: servicemix/smx4/bundles/trunk/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/bundles/trunk/pom.xml?rev=1230380&r1=1230379&r2=1230380&view=diff
==============================================================================
--- servicemix/smx4/bundles/trunk/pom.xml (original)
+++ servicemix/smx4/bundles/trunk/pom.xml Thu Jan 12 03:09:40 2012
@@ -41,6 +41,7 @@
     <name>Apache ServiceMix :: Bundles</name>
 
     <modules>
+      <module>bundles-pom</module>
       <module>smack-3.2.1</module>
       <module>paranamer-2.4</module>
       <module>jopt-simple-4.3</module>
@@ -49,6 +50,7 @@
       <module>twitter4j-2.2.5</module>
       <module>libthrift-0.7.0</module>
       <module>libthrift-0.8.0</module>
+      <module>snappy-java-1.0.4.1</module>
     </modules>
 
 </project>

Added: servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/pom.xml?rev=1230380&view=auto
==============================================================================
--- servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/pom.xml (added)
+++ servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/pom.xml Thu Jan 12 03:09:40 2012
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.bundles</groupId>
+        <artifactId>bundles-pom</artifactId>
+        <version>9-SNAPSHOT</version>
+        <relativePath>../bundles-pom/pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.snappy-java</artifactId>
+    <version>1.0.4.1_1-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix :: Bundles :: ${pkgArtifactId}</name>
+    <description>This OSGi bundle wraps ${pkgArtifactId} ${pkgVersion} jar file.</description>
+
+    <properties>
+        <pkgGroupId>org.xerial.snappy</pkgGroupId>
+        <pkgArtifactId>snappy-java</pkgArtifactId>
+        <pkgVersion>1.0.4.1</pkgVersion>
+        <servicemix.osgi.export>
+            org.xerial.snappy;version="${pkgVersion}";-split-package:=merge-first
+        </servicemix.osgi.export>
+        <servicemix.osgi.import.pkg>
+            !org.xerial.snappy*,
+            *
+        </servicemix.osgi.import.pkg>
+        <servicemix.osgi.native>
+            org/xerial/snappy/native/Mac/x86_64/libsnappyjava.jnilib;osname=macosx;processor=x86_64,
+            org/xerial/snappy/native/Mac/i386/libsnappyjava.jnilib;osname=macosx;processor=x86,
+            org/xerial/snappy/native/Linux/amd64/libsnappyjava.so;osname=linux;processor=x86_64,
+            org/xerial/snappy/native/Linux/i386/libsnappyjava.so;osname=linux;processor=x86,
+            org/xerial/snappy/native/Windows/x86/snappyjava.dll;osname=win32;processor=x86,
+            org/xerial/snappy/native/Windows/amd64/snappyjava.dll;osname=win32;processor=x86_64
+        </servicemix.osgi.native>
+        <servicemix.osgi.activator>org.xerial.snappy.SnappyBundleActivator</servicemix.osgi.activator>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>4.2.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>target/nativelibs</directory>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.4</version>
+                <executions>
+                    <execution>
+                        <id>unpack</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>${pkgGroupId}</groupId>
+                                    <artifactId>${pkgArtifactId}</artifactId>
+                                    <version>${pkgVersion}</version>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}/nativelibs</outputDirectory>
+                                    <includes>**/native/**/*</includes>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <artifactSet>
+                                <includes>
+                                    <include>${pkgGroupId}:${pkgArtifactId}</include>
+                                </includes>
+                            </artifactSet>
+                            <filters>
+                                <filter>
+                                    <artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
+                                    <excludes>
+                                        <exclude>**</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/Snappy.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/Snappy.java?rev=1230380&view=auto
==============================================================================
--- servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/Snappy.java
(added)
+++ servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/Snappy.java
Thu Jan 12 03:09:40 2012
@@ -0,0 +1,755 @@
+/*
+ * 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.xerial.snappy;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.util.Properties;
+
+/**
+ * Snappy API for data compression/decompression
+ * 
+ * @author leo
+ * 
+ */
+public class Snappy
+{
+    /**
+     * An instance of SnappyNativeAPI
+     */
+    private static SnappyNativeAPI impl = new SnappyNative();
+
+    /**
+     * Copy bytes from source to destination
+     * 
+     * @param src
+     *            pointer to the source array
+     * @param offset
+     *            byte offset in the source array
+     * @param byteLength
+     *            the number of bytes to copy
+     * @param dest
+     *            pointer to the destination array
+     * @param dest_offset
+     *            byte offset in the destination array
+     * @throws IOException
+     */
+    public static void arrayCopy(Object src, int offset, int byteLength, Object dest, int
dest_offset)
+            throws IOException {
+        ((SnappyNativeAPI) impl).arrayCopy(src, offset, byteLength, dest, dest_offset);
+    }
+
+    /**
+     * High-level API for compressing the input byte array. This method performs
+     * array copy to generate the result. If you want to reduce the memory copy
+     * cost, use {@link #compress(byte[], int, int, byte[], int)} or
+     * {@link #compress(ByteBuffer, ByteBuffer)}.
+     * 
+     * @param input
+     *            the input data
+     * @return the compressed byte array
+     * @throws IOException
+     */
+    public static byte[] compress(byte[] input) throws IOException {
+        return rawCompress(input, input.length);
+    }
+
+    /**
+     * Compress the input buffer content in [inputOffset,
+     * ...inputOffset+inputLength) then output to the specified output buffer.
+     * 
+     * @param input
+     * @param inputOffset
+     * @param inputLength
+     * @param output
+     * @param outputOffset
+     * @return byte size of the compressed data
+     * @throws IOException
+     *             when failed to access the input/output buffer
+     */
+    public static int compress(byte[] input, int inputOffset, int inputLength, byte[] output,
int outputOffset)
+            throws IOException {
+        return rawCompress(input, inputOffset, inputLength, output, outputOffset);
+    }
+
+    /**
+     * Compress the content in the given input buffer. After the compression,
+     * you can retrieve the compressed data from the output buffer [pos() ...
+     * limit()) (compressed data size = limit() - pos() = remaining())
+     * 
+     * @param uncompressed
+     *            buffer[pos() ... limit()) containing the input data
+     * @param compressed
+     *            output of the compressed data. Uses range [pos()..].
+     * @return byte size of the compressed data.
+     * 
+     * @throws SnappyError
+     *             when the input is not a direct buffer
+     */
+    public static int compress(ByteBuffer uncompressed, ByteBuffer compressed) throws IOException
{
+
+        if (!uncompressed.isDirect())
+            throw new SnappyError(SnappyErrorCode.NOT_A_DIRECT_BUFFER, "input is not a direct
buffer");
+        if (!compressed.isDirect())
+            throw new SnappyError(SnappyErrorCode.NOT_A_DIRECT_BUFFER, "destination is not
a direct buffer");
+
+        // input: uncompressed[pos(), limit())
+        // output: compressed
+        int uPos = uncompressed.position();
+        int uLen = uncompressed.remaining();
+        int compressedSize = ((SnappyNativeAPI) impl).rawCompress(uncompressed, uPos, uLen,
compressed,
+                compressed.position());
+
+        //         pos  limit
+        // [ ......BBBBBBB.........]
+        compressed.limit(compressed.position() + compressedSize);
+
+        return compressedSize;
+    }
+
+    /**
+     * Compress the input char array
+     * 
+     * @param input
+     * @return the compressed data
+     */
+    public static byte[] compress(char[] input) {
+        return rawCompress(input, input.length * 2); // char uses 2 bytes
+    }
+
+    /**
+     * Compress the input double array
+     * 
+     * @param input
+     * @return the compressed data
+     */
+    public static byte[] compress(double[] input) {
+        return rawCompress(input, input.length * 8); // double uses 8 bytes
+    }
+
+    /**
+     * Compress the input float array
+     * 
+     * @param input
+     * @return the compressed data
+     */
+    public static byte[] compress(float[] input) {
+        return rawCompress(input, input.length * 4); // float uses 4 bytes
+    }
+
+    /**
+     * Compress the input int array
+     * 
+     * @param input
+     * @return the compressed data
+     */
+    public static byte[] compress(int[] input) {
+        return rawCompress(input, input.length * 4); // int uses 4 bytes
+    }
+
+    /**
+     * Compress the input long array
+     * 
+     * @param input
+     * @return the compressed data
+     */
+    public static byte[] compress(long[] input) {
+        return rawCompress(input, input.length * 8); // long uses 8 bytes
+    }
+
+    /**
+     * Compress the input short array
+     * 
+     * @param input
+     * @return the compressed data
+     */
+    public static byte[] compress(short[] input) {
+        return rawCompress(input, input.length * 2); // short uses 2 bytes
+    }
+
+    /**
+     * Compress the input String
+     * 
+     * @param s
+     * @return the compressed data
+     * @throws IOException
+     */
+    public static byte[] compress(String s) throws IOException {
+        try {
+            return compress(s, "UTF-8");
+        }
+        catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException("UTF-8 encoder is not found");
+        }
+    }
+
+    /**
+     * Compress the input string using the given encoding
+     * 
+     * @param s
+     * @param encoding
+     * @return the compressed data
+     * @throws UnsupportedEncodingException
+     * @throws IOException
+     */
+    public static byte[] compress(String s, String encoding) throws UnsupportedEncodingException,
IOException {
+        byte[] data = s.getBytes(encoding);
+        return compress(data);
+    }
+
+    /**
+     * Compress the input string using the given encoding
+     * 
+     * @param s
+     * @param encoding
+     * @return the compressed data
+     * @throws UnsupportedEncodingException
+     * @throws IOException
+     */
+    public static byte[] compress(String s, Charset encoding) throws IOException {
+        byte[] data = s.getBytes(encoding);
+        return compress(data);
+    }
+
+    /**
+     * Get the native library version of the snappy
+     * 
+     * @return native library version
+     */
+    public static String getNativeLibraryVersion() {
+
+        URL versionFile = Snappy.class.getResource("/org/xerial/snappy/VERSION");
+
+        String version = "unknown";
+        try {
+            if (versionFile != null) {
+                Properties versionData = new Properties();
+                versionData.load(versionFile.openStream());
+                version = versionData.getProperty("version", version);
+                if (version.equals("unknown"))
+                    version = versionData.getProperty("VERSION", version);
+                version = version.trim().replaceAll("[^0-9\\.]", "");
+            }
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+        }
+        return version;
+    }
+
+    /**
+     * Returns true iff the contents of compressed buffer [offset,
+     * offset+length) can be uncompressed successfully. Does not return the
+     * uncompressed data. Takes time proportional to the input length, but is
+     * usually at least a factor of four faster than actual decompression.
+     */
+    public static boolean isValidCompressedBuffer(byte[] input, int offset, int length) throws
IOException {
+        if (input == null)
+            throw new NullPointerException("input is null");
+        return ((SnappyNativeAPI) impl).isValidCompressedBuffer(input, offset, length);
+    }
+
+    /**
+     * Returns true iff the contents of compressed buffer [offset,
+     * offset+length) can be uncompressed successfully. Does not return the
+     * uncompressed data. Takes time proportional to the input length, but is
+     * usually at least a factor of four faster than actual decompression.
+     */
+    public static boolean isValidCompressedBuffer(byte[] input) throws IOException {
+        return isValidCompressedBuffer(input, 0, input.length);
+    }
+
+    /**
+     * Returns true iff the contents of compressed buffer [pos() ... limit())
+     * can be uncompressed successfully. Does not return the uncompressed data.
+     * Takes time proportional to the input length, but is usually at least a
+     * factor of four faster than actual decompression.
+     */
+    public static boolean isValidCompressedBuffer(ByteBuffer compressed) throws IOException
{
+        return ((SnappyNativeAPI) impl).isValidCompressedBuffer(compressed, compressed.position(),
+                compressed.remaining());
+    }
+
+    /**
+     * Get the maximum byte size needed for compressing data of the given byte
+     * size.
+     * 
+     * @param byteSize
+     *            byte size of the data to compress
+     * @return maximum byte size of the compressed data
+     */
+    public static int maxCompressedLength(int byteSize) {
+        return ((SnappyNativeAPI) impl).maxCompressedLength(byteSize);
+    }
+
+    /**
+     * Compress the input data and produce a byte array of the uncompressed data
+     * 
+     * @param data
+     *            input array. The input MUST be an array type
+     * @param byteSize
+     *            the input byte size
+     * @return compressed data
+     */
+    public static byte[] rawCompress(Object data, int byteSize) {
+        byte[] buf = new byte[Snappy.maxCompressedLength(byteSize)];
+        int compressedByteSize = ((SnappyNativeAPI) impl).rawCompress(data, 0, byteSize,
buf, 0);
+        byte[] result = new byte[compressedByteSize];
+        System.arraycopy(buf, 0, result, 0, compressedByteSize);
+        return result;
+    }
+
+    /**
+     * Compress the input buffer [offset,... ,offset+length) contents, then
+     * write the compressed data to the output buffer[offset, ...)
+     * 
+     * @param input
+     *            input array. This MUST be a primitive array type
+     * @param inputOffset
+     *            byte offset at the output array
+     * @param inputLength
+     *            byte length of the input data
+     * @param output
+     *            output array. This MUST be a primitive array type
+     * @param outputOffset
+     *            byte offset at the output array
+     * @return byte size of the compressed data
+     * @throws IOException
+     */
+    public static int rawCompress(Object input, int inputOffset, int inputLength, byte[]
output, int outputOffset)
+            throws IOException {
+        if (input == null || output == null)
+            throw new NullPointerException("input or output is null");
+
+        int compressedSize = ((SnappyNativeAPI) impl)
+                .rawCompress(input, inputOffset, inputLength, output, outputOffset);
+        return compressedSize;
+    }
+
+    /**
+     * Uncompress the content in the input buffer. The uncompressed data is
+     * written to the output buffer.
+     * 
+     * Note that if you pass the wrong data or the range [inputOffset,
+     * inputOffset + inputLength) that cannot be uncompressed, your JVM might
+     * crash due to the access violation exception issued in the native code
+     * written in C++. To avoid this type of crash, use
+     * {@link #isValidCompressedBuffer(byte[], int, int)} first.
+     * 
+     * @param input
+     *            input byte array
+     * @param inputOffset
+     *            byte offset in the input byte array
+     * @param inputLength
+     *            byte length of the input data
+     * @param output
+     *            output buffer, MUST be a primitive type array
+     * @param outputOffset
+     *            byte offset in the output buffer
+     * @return the byte size of the uncompressed data
+     * @throws IOException
+     *             when failed to uncompress the input data
+     */
+    public static int rawUncompress(byte[] input, int inputOffset, int inputLength, Object
output, int outputOffset)
+            throws IOException {
+        if (input == null || output == null)
+            throw new NullPointerException("input or output is null");
+        return ((SnappyNativeAPI) impl).rawUncompress(input, inputOffset, inputLength, output,
outputOffset);
+    }
+
+    /**
+     * High-level API for uncompressing the input byte array.
+     * 
+     * @param input
+     * @return the uncompressed byte array
+     * @throws IOException
+     */
+    public static byte[] uncompress(byte[] input) throws IOException {
+        byte[] result = new byte[Snappy.uncompressedLength(input)];
+        int byteSize = Snappy.uncompress(input, 0, input.length, result, 0);
+        return result;
+    }
+
+    /**
+     * Uncompress the content in the input buffer. The uncompressed data is
+     * written to the output buffer.
+     * 
+     * Note that if you pass the wrong data or the range [inputOffset,
+     * inputOffset + inputLength) that cannot be uncompressed, your JVM might
+     * crash due to the access violation exception issued in the native code
+     * written in C++. To avoid this type of crash, use
+     * {@link #isValidCompressedBuffer(byte[], int, int)} first.
+     * 
+     * @param input
+     * @param inputOffset
+     * @param inputLength
+     * @param output
+     * @param outputOffset
+     * @return the byte size of the uncompressed data
+     * @throws IOException
+     */
+    public static int uncompress(byte[] input, int inputOffset, int inputLength, byte[] output,
int outputOffset)
+            throws IOException {
+        return rawUncompress(input, inputOffset, inputLength, output, outputOffset);
+    }
+
+    /**
+     * Uncompress the content in the input buffer. The result is dumped to the
+     * specified output buffer.
+     * 
+     * Note that if you pass the wrong data or the range [pos(), limit()) that
+     * cannot be uncompressed, your JVM might crash due to the access violation
+     * exception issued in the native code written in C++. To avoid this type of
+     * crash, use {@link #isValidCompressedBuffer(ByteBuffer)} first.
+     * 
+     * 
+     * @param compressed
+     *            buffer[pos() ... limit()) containing the input data
+     * @param uncompressed
+     *            output of the the uncompressed data. It uses buffer[pos()..]
+     * @return uncompressed data size
+     * 
+     * @throws IOException
+     *             when failed to uncompress the given input
+     * @throws SnappyError
+     *             when the input is not a direct buffer
+     */
+    public static int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException
{
+
+        if (!compressed.isDirect())
+            throw new SnappyError(SnappyErrorCode.NOT_A_DIRECT_BUFFER, "input is not a direct
buffer");
+        if (!uncompressed.isDirect())
+            throw new SnappyError(SnappyErrorCode.NOT_A_DIRECT_BUFFER, "destination is not
a direct buffer");
+
+        int cPos = compressed.position();
+        int cLen = compressed.remaining();
+
+        //         pos  limit
+        // [ ......UUUUUU.........]
+        int decompressedSize = ((SnappyNativeAPI) impl).rawUncompress(compressed, cPos, cLen,
uncompressed,
+                uncompressed.position());
+        uncompressed.limit(uncompressed.position() + decompressedSize);
+
+        return decompressedSize;
+    }
+
+    /**
+     * Uncompress the input data as char array
+     * 
+     * @param input
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static char[] uncompressCharArray(byte[] input) throws IOException {
+        return uncompressCharArray(input, 0, input.length);
+    }
+
+    /**
+     * Uncompress the input[offset, .., offset+length) as a char array
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static char[] uncompressCharArray(byte[] input, int offset, int length) throws
IOException {
+        int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
+        char[] result = new char[uncompressedLength / 2];
+        int byteSize = ((SnappyNativeAPI) impl).rawUncompress(input, offset, length, result,
0);
+        return result;
+    }
+
+    /**
+     * Uncompress the input as a double array
+     * 
+     * @param input
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static double[] uncompressDoubleArray(byte[] input) throws IOException {
+        int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
+        double[] result = new double[uncompressedLength / 8];
+        int byteSize = ((SnappyNativeAPI) impl).rawUncompress(input, 0, input.length, result,
0);
+        return result;
+    }
+
+    /**
+     * Get the uncompressed byte size of the given compressed input. This
+     * operation takes O(1) time.
+     * 
+     * @param input
+     * @return uncompressed byte size of the the given input data
+     * @throws IOException
+     *             when failed to uncompress the given input. The error code is
+     *             {@link SnappyErrorCode#PARSING_ERROR}
+     */
+    public static int uncompressedLength(byte[] input) throws IOException {
+        return ((SnappyNativeAPI) impl).uncompressedLength(input, 0, input.length);
+    }
+
+    /**
+     * Get the uncompressed byte size of the given compressed input. This
+     * operation takes O(1) time.
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return uncompressed byte size of the the given input data
+     * @throws IOException
+     *             when failed to uncompress the given input. The error code is
+     *             {@link SnappyErrorCode#PARSING_ERROR}
+     */
+    public static int uncompressedLength(byte[] input, int offset, int length) throws IOException
{
+        if (input == null)
+            throw new NullPointerException("input is null");
+
+        return ((SnappyNativeAPI) impl).uncompressedLength(input, offset, length);
+    }
+
+    /**
+     * Get the uncompressed byte size of the given compressed input. This
+     * operation taks O(1) time.
+     * 
+     * @param compressed
+     *            input data [pos() ... limit())
+     * @return uncompressed byte length of the given input
+     * @throws IOException
+     *             when failed to uncompress the given input. The error code is
+     *             {@link SnappyErrorCode#PARSING_ERROR}
+     * @throws SnappyError
+     *             when the input is not a direct buffer
+     */
+    public static int uncompressedLength(ByteBuffer compressed) throws IOException {
+        if (!compressed.isDirect())
+            throw new SnappyError(SnappyErrorCode.NOT_A_DIRECT_BUFFER, "input is not a direct
buffer");
+
+        return ((SnappyNativeAPI) impl).uncompressedLength(compressed, compressed.position(),
compressed.remaining());
+    }
+
+    /**
+     * Uncompress the input as a float array
+     * 
+     * @param input
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static float[] uncompressFloatArray(byte[] input) throws IOException {
+        return uncompressFloatArray(input, 0, input.length);
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as a float array
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static float[] uncompressFloatArray(byte[] input, int offset, int length) throws
IOException {
+        int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
+        float[] result = new float[uncompressedLength / 4];
+        int byteSize = ((SnappyNativeAPI) impl).rawUncompress(input, offset, length, result,
0);
+        return result;
+    }
+
+    /**
+     * Uncompress the input data as an int array
+     * 
+     * @param input
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static int[] uncompressIntArray(byte[] input) throws IOException {
+        return uncompressIntArray(input, 0, input.length);
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as an int array
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static int[] uncompressIntArray(byte[] input, int offset, int length) throws IOException
{
+        int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
+        int[] result = new int[uncompressedLength / 4];
+        int byteSize = ((SnappyNativeAPI) impl).rawUncompress(input, offset, length, result,
0);
+        return result;
+    }
+
+    /**
+     * Uncompress the input data as a long array
+     * 
+     * @param input
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static long[] uncompressLongArray(byte[] input) throws IOException {
+        return uncompressLongArray(input, 0, input.length);
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as a long array
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static long[] uncompressLongArray(byte[] input, int offset, int length) throws
IOException {
+        int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
+        long[] result = new long[uncompressedLength / 8];
+        int byteSize = ((SnappyNativeAPI) impl).rawUncompress(input, offset, length, result,
0);
+        return result;
+    }
+
+    /**
+     * Uncompress the input as a short array
+     * 
+     * @param input
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static short[] uncompressShortArray(byte[] input) throws IOException {
+        return uncompressShortArray(input, 0, input.length);
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as a short array
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static short[] uncompressShortArray(byte[] input, int offset, int length) throws
IOException {
+        int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
+        short[] result = new short[uncompressedLength / 2];
+        int byteSize = ((SnappyNativeAPI) impl).rawUncompress(input, offset, length, result,
0);
+        return result;
+    }
+
+    /**
+     * Uncompress the input as a String
+     * 
+     * @param input
+     * @return the uncompressed dasta
+     * @throws IOException
+     */
+    public static String uncompressString(byte[] input) throws IOException {
+        try {
+            return uncompressString(input, "UTF-8");
+        }
+        catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException("UTF-8 decoder is not found");
+        }
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as a String
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static String uncompressString(byte[] input, int offset, int length) throws IOException
{
+        try {
+            return uncompressString(input, offset, length, "UTF-8");
+        }
+        catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException("UTF-8 decoder is not found");
+        }
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as a String of the given
+     * encoding
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @param encoding
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static String uncompressString(byte[] input, int offset, int length, String encoding)
throws IOException,
+            UnsupportedEncodingException {
+        byte[] uncompressed = new byte[uncompressedLength(input, offset, length)];
+        int compressedSize = uncompress(input, offset, length, uncompressed, 0);
+        return new String(uncompressed, encoding);
+    }
+
+    /**
+     * Uncompress the input[offset, offset+length) as a String of the given
+     * encoding
+     * 
+     * @param input
+     * @param offset
+     * @param length
+     * @param encoding
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static String uncompressString(byte[] input, int offset, int length, Charset encoding)
throws IOException,
+            UnsupportedEncodingException {
+        byte[] uncompressed = new byte[uncompressedLength(input, offset, length)];
+        int compressedSize = uncompress(input, offset, length, uncompressed, 0);
+        return new String(uncompressed, encoding);
+    }
+
+    /**
+     * Uncompress the input as a String of the given encoding
+     * 
+     * @param input
+     * @param encoding
+     * @return the uncompressed data
+     * @throws IOException
+     * @throws UnsupportedEncodingException
+     */
+    public static String uncompressString(byte[] input, String encoding) throws IOException,
+            UnsupportedEncodingException {
+        byte[] uncompressed = uncompress(input);
+        return new String(uncompressed, encoding);
+    }
+
+    /**
+     * Uncompress the input as a String of the given encoding
+     * 
+     * @param input
+     * @param encoding
+     * @return the uncompressed data
+     * @throws IOException
+     */
+    public static String uncompressString(byte[] input, Charset encoding) throws IOException,
+            UnsupportedEncodingException {
+        byte[] uncompressed = uncompress(input);
+        return new String(uncompressed, encoding);
+    }
+}

Propchange: servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/Snappy.java
------------------------------------------------------------------------------
    svn:executable = *

Added: servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/SnappyBundleActivator.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/SnappyBundleActivator.java?rev=1230380&view=auto
==============================================================================
--- servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/SnappyBundleActivator.java
(added)
+++ servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/SnappyBundleActivator.java
Thu Jan 12 03:09:40 2012
@@ -0,0 +1,40 @@
+/*
+ * 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.xerial.snappy;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * OSGi bundle entry point
+ * 
+ * @author leo
+ * 
+ */
+public class SnappyBundleActivator implements BundleActivator
+{
+    public void start(BundleContext context) throws Exception {
+       System.loadLibrary("snappyjava");
+    }
+
+    public void stop(BundleContext context) throws Exception {
+
+    }
+
+}

Propchange: servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/java/org/xerial/snappy/SnappyBundleActivator.java
------------------------------------------------------------------------------
    svn:executable = *

Added: servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/OSGI-INF/bundle.info
URL: http://svn.apache.org/viewvc/servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/OSGI-INF/bundle.info?rev=1230380&view=auto
==============================================================================
--- servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/OSGI-INF/bundle.info
(added)
+++ servicemix/smx4/bundles/trunk/snappy-java-1.0.4.1/src/main/resources/OSGI-INF/bundle.info
Thu Jan 12 03:09:40 2012
@@ -0,0 +1,11 @@
+\u001B[1mSYNOPSIS\u001B[0m
+    ${project.description}
+
+    Original Maven URL:
+        \u001B[33mmvn:${pkgGroupId}/${pkgArtifactId}/${pkgVersion}\u001B[0m
+
+\u001B[1mDESCRIPTION\u001B[0m
+    The snappy-java is a Java port of the snappy, a fast compresser/decompresser written
in C++, originally developed by Google.
+
+\u001B[1mSEE ALSO\u001B[0m
+    \u001B[36mhttp://code.google.com/p/snappy-java\u001B[0m



Mime
View raw message