You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by cl...@apache.org on 2007/09/12 23:46:02 UTC
svn commit: r575089 -
/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/atomictypeconverter/impl/ByteArrayTypeConverterImpl.java
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();
+ }
}