diff --git a/activemq-core/src/main/java/org/apache/activemq/kaha/ObjectMarshaller.java b/activemq-core/src/main/java/org/apache/activemq/kaha/ObjectMarshaller.java index e48e75221f..3c923ba617 100644 --- a/activemq-core/src/main/java/org/apache/activemq/kaha/ObjectMarshaller.java +++ b/activemq-core/src/main/java/org/apache/activemq/kaha/ObjectMarshaller.java @@ -1,35 +1,34 @@ /** - * - * 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 - * + * + * 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. + * + * 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.activemq.kaha; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; -import java.io.OutputStream; + /** * Implementation of a Marshaller for Objects * * @version $Revision: 1.2 $ */ public class ObjectMarshaller implements Marshaller{ + /** * Write the payload of this entry to the RawContainer * @@ -38,20 +37,13 @@ public class ObjectMarshaller implements Marshaller{ * @throws IOException */ public void writePayload(Object object,DataOutput dataOut) throws IOException{ - -// I failed to see why we just did not just used the provided stream directly -// ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); -// ObjectOutputStream objectOut=new ObjectOutputStream(bytesOut); -// objectOut.writeObject(object); -// objectOut.close(); -// byte[] data = bytesOut.toByteArray(); -// dataOut.writeInt(data.length); -// dataOut.write(data); - - ObjectOutputStream objectOut=new ObjectOutputStream((OutputStream) dataOut); + ByteArrayOutputStream bytesOut=new ByteArrayOutputStream(); + ObjectOutputStream objectOut=new ObjectOutputStream(bytesOut); objectOut.writeObject(object); - objectOut.flush(); - objectOut.reset(); + objectOut.close(); + byte[] data=bytesOut.toByteArray(); + dataOut.writeInt(data.length); + dataOut.write(data); } /** @@ -62,25 +54,15 @@ public class ObjectMarshaller implements Marshaller{ * @throws IOException */ public Object readPayload(DataInput dataIn) throws IOException{ - -// I failed to see why we just did not just used the provided stream directly -// int size = dataIn.readInt(); -// byte[] data = new byte[size]; -// dataIn.readFully(data); -// ByteArrayInputStream bytesIn = new ByteArrayInputStream(data); -// ObjectInputStream objectIn=new ObjectInputStream(bytesIn); -// try{ -// return objectIn.readObject(); -// }catch(ClassNotFoundException e){ -// throw new IOException(e.getMessage()); -// } - - ObjectInputStream objectIn=new ObjectInputStream((InputStream) dataIn); + int size=dataIn.readInt(); + byte[] data=new byte[size]; + dataIn.readFully(data); + ByteArrayInputStream bytesIn=new ByteArrayInputStream(data); + ObjectInputStream objectIn=new ObjectInputStream(bytesIn); try{ return objectIn.readObject(); - } catch(ClassNotFoundException e) { + }catch(ClassNotFoundException e){ throw new IOException(e.getMessage()); } - } } diff --git a/activemq-core/src/test/java/org/apache/activemq/kaha/StoreTest.java b/activemq-core/src/test/java/org/apache/activemq/kaha/StoreTest.java index 2540a24c0e..9297154338 100644 --- a/activemq-core/src/test/java/org/apache/activemq/kaha/StoreTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/kaha/StoreTest.java @@ -151,13 +151,14 @@ public class StoreTest extends TestCase{ public void testBasicAllocations() throws Exception{ Map testMap = new HashMap(); - for (int i =0; i<10; i++){ + int count = 1000; + for (int i =0; i