1 /**********************************************************************
2 * SojoAdapter.java
3 * created on 11.11.2006 by netseeker
4 * $Id: SojoAdapter.java,v 1.3 2007/05/27 22:13:09 netseeker Exp $
5 *
6 * ====================================================================
7 *
8 * Copyright 2005-2006 netseeker aka Michael Manske
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 * ====================================================================
22 *
23 * This file is part of the EJOE framework.
24 * For more information on the author, please see
25 * <http://www.manskes.de/>.
26 *
27 *********************************************************************/
28 package de.netseeker.ejoe.adapter;
29
30 import java.io.ByteArrayInputStream;
31 import java.io.ByteArrayOutputStream;
32 import java.io.InputStream;
33 import java.io.OutputStream;
34
35 import net.sf.sojo.interchange.object.ObjectSerializer;
36 import de.netseeker.ejoe.EJConstants;
37 import de.netseeker.ejoe.io.FastBufferedOutputStream;
38 import de.netseeker.ejoe.io.IOUtil;
39
40 /***
41 * An adapter for (de)serializing objects via SOJO - Simplify your Old Java Objects
42 *
43 * @see <a href="http://sojo.sourceforge.net/">SOJO</a>
44 * @author netseeker
45 * @since 0.3.9.1
46 */
47 public class SojoAdapter extends BaseAdapter
48 {
49 /***
50 *
51 */
52 private static final long serialVersionUID = 1L;
53
54 /***
55 *
56 */
57 public SojoAdapter()
58 {
59 }
60
61
62
63
64
65
66 public Object read( InputStream in ) throws Exception
67 {
68 ObjectSerializer deSerializer = new ObjectSerializer();
69
70
71 byte[] buffer = new byte[EJConstants.BUFFERED_STREAM_SIZE];
72 ByteArrayOutputStream bOut = new ByteArrayOutputStream();
73 int length = 0;
74 while ( (length = in.read( buffer )) != -1 )
75 {
76 if ( length > 0 ) bOut.write( buffer, 0, length );
77 }
78 ByteArrayInputStream bIn = new ByteArrayInputStream( bOut.toByteArray() );
79
80 Object obj = null;
81
82 try
83 {
84 obj = deSerializer.deserializeFromInputStream( bIn );
85 }
86 finally
87 {
88 IOUtil.closeQuiet( bIn );
89 }
90
91 return obj;
92 }
93
94
95
96
97
98
99 public void write( Object obj, OutputStream out ) throws Exception
100 {
101 ObjectSerializer serializer = new ObjectSerializer();
102 FastBufferedOutputStream bOut = new FastBufferedOutputStream( out );
103 try
104 {
105 serializer.serializeToOutputStream( obj, bOut );
106 }
107 finally
108 {
109 IOUtil.closeQuiet( bOut );
110 }
111 }
112
113
114
115
116
117
118 public boolean isSelfBuffered()
119 {
120 return true;
121 }
122
123
124
125
126
127
128 public boolean requiresCustomEOFHandling()
129 {
130 return true;
131 }
132 }