From commits-return-4537-apmail-jackrabbit-commits-archive=jackrabbit.apache.org@jackrabbit.apache.org Wed Sep 12 21:46:26 2007 Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 32499 invoked from network); 12 Sep 2007 21:46:25 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Sep 2007 21:46:25 -0000 Received: (qmail 68412 invoked by uid 500); 12 Sep 2007 21:46:18 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 68379 invoked by uid 500); 12 Sep 2007 21:46:18 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 68370 invoked by uid 99); 12 Sep 2007 21:46:18 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Sep 2007 14:46:18 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Sep 2007 21:48:02 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9181B1A9832; Wed, 12 Sep 2007 14:46:02 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r575089 - /jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java Date: Wed, 12 Sep 2007 21:46:02 -0000 To: commits@jackrabbit.apache.org From: clombart@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20070912214602.9181B1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: clombart Date: Wed Sep 12 14:46:01 2007 New Revision: 575089 URL: http://svn.apache.org/viewvc?rev=575089&view=rev Log: review the implementation. Use inputstream instead of String Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java?rev=575089&r1=575088&r2=575089&view=diff ============================================================================== --- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java (original) +++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java Wed Sep 12 14:46:01 2007 @@ -17,6 +17,11 @@ package org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + import javax.jcr.RepositoryException; import javax.jcr.Value; import javax.jcr.ValueFactory; @@ -43,8 +48,8 @@ { return null; } - String value = new String((byte[]) propValue); - return valueFactory.createValue(value); + InputStream ins = new ByteArrayInputStream((byte[]) propValue); + return valueFactory.createValue(ins); } @@ -56,11 +61,11 @@ { try { - return value.getString().getBytes(); + return inputStreamToBytes(value.getStream()); } - catch (RepositoryException e) + catch (Exception e) { - throw new IncorrectAtomicTypeException("Impossible to convert the value : " + value.toString() , e); + throw new IncorrectAtomicTypeException("Impossible to convert a binary value." , e); } } @@ -70,6 +75,20 @@ */ public String getXPathQueryValue(ValueFactory valueFactory, Object object) { - return "'" + object.toString() + "'"; + throw new IncorrectAtomicTypeException("Binary cannot be used in queries"); } + + private byte[] inputStreamToBytes(InputStream in) throws IOException { + + ByteArrayOutputStream out = new ByteArrayOutputStream(1024); + byte[] buffer = new byte[1024]; + int len; + + while((len = in.read(buffer)) >= 0) + out.write(buffer, 0, len); + + in.close(); + out.close(); + return out.toByteArray(); + } }