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