1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package com.sun.star.lib.uno.adapter;
29 
30 import java.io.IOException;
31 import com.sun.star.io.XOutputStream;
32 import java.io.OutputStream;
33 
34 /**
35  * The <code>XOutputStreamToOutputStreamAdapter</code> wraps
36  * the UNO <code>XOutputStream</code> object in a Java
37  * <code>OutputStream</code>.  This allows users to access
38  * an <code>XOutputStream</code> as if it were an
39  * <code>OutputStream</code>.
40  *
41  * @author  Brian Cameron
42  */
43 public class XOutputStreamToOutputStreamAdapter extends OutputStream {
44 
45     /**
46      *  Internal handle to the XInputStream
47      */
48     XOutputStream xout;
49 
50     /**
51      *  Constructor.
52      *
53      *  @param  out  The <code>XOutputStream</code> to be
54      *          accessed as an <code>OutputStream</code>.
55      */
56     public XOutputStreamToOutputStreamAdapter(XOutputStream out) {
57         xout = out;
58     }
59 
60     public void close() throws IOException {
61         try {
62             xout.closeOutput();
63         } catch (Exception e) {
64             throw new IOException(e.toString());
65         }
66     }
67 
68     public void flush() throws IOException {
69         try {
70             xout.flush();
71         } catch (Exception e) {
72             throw new IOException(e.toString());
73         }
74     }
75 
76     public void write(byte[] b) throws IOException {
77 
78 	try {
79             xout.writeBytes(b);
80         } catch (Exception e) {
81             throw new IOException(e.toString());
82         }
83     }
84 
85     public void write(byte[] b, int off, int len) throws IOException {
86 
87         byte[] tmp = new byte[len];
88 
89         // Copy the input array into a temp array, and write it out.
90         //
91         System.arraycopy(b, off, tmp, 0, len);
92 
93         try {
94             xout.writeBytes(tmp);
95         } catch (Exception e) {
96             throw new IOException(e.toString());
97         }
98     }
99 
100     public void write(int b) throws IOException {
101 
102         byte [] oneByte = new byte [1];
103         oneByte[0] = (byte) b;
104 
105         try {
106             xout.writeBytes(oneByte);
107         } catch (Exception e) {
108             throw new IOException(e.toString());
109         }
110     }
111 }
112