Copyright (c) 2005, 2008 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2005, 2008 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.osgi.storagemanager; import java.io.*;
Represents a managed output stream for target managed by a storage manager.
See Also:
Since:3.2
/** * Represents a managed output stream for target managed by a storage manager. * @see StorageManager#getOutputStream(String) * @see StorageManager#getOutputStreamSet(String[]) * <p> * Clients may not extend this class. * </p> * @since 3.2 */
// Note the implementation of this class originated from the following deprecated classes: // /org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/StreamManagerOutputStream.java public final class ManagedOutputStream extends FilterOutputStream { static final int ST_OPEN = 0; static final int ST_CLOSED = 1; private String target; private StorageManager manager; private File outputFile; private int state; private ManagedOutputStream[] streamSet = null; ManagedOutputStream(OutputStream out, StorageManager manager, String target, File outputFile) { super(out); this.manager = manager; this.target = target; this.outputFile = outputFile; this.state = ST_OPEN; }
Instructs this output stream to be closed and storage manager to be updated as appropriate. If this managed output stream is part of a set returned by StorageManager.getOutputStreamSet(String[]) then the storage manager will only be updated with the new content after all of the managed output streams in the set are closed successfully.
See Also:
/** * Instructs this output stream to be closed and storage manager to * be updated as appropriate. If this managed output stream is part of * a set returned by {@link StorageManager#getOutputStreamSet(String[])} then * the storage manager will only be updated with the new content after all * of the managed output streams in the set are closed successfully. * @see FilterOutputStream#close() */
@Override public void close() throws IOException { manager.closeOutputStream(this); }
Instructs this output stream to be closed and the contents discarded. If this managed output stream is part of a set returned by StorageManager.getOutputStreamSet(String[]) then the new content of all managed output streams in the set will be discarded.
/** * Instructs this output stream to be closed and the contents discarded. * If this managed output stream is part of a set returned by * {@link StorageManager#getOutputStreamSet(String[])} then the new * content of all managed output streams in the set will be discarded. */
public void abort() { manager.abortOutputStream(this); } OutputStream getOutputStream() { return out; } String getTarget() { return target; } File getOutputFile() { return outputFile; } int getState() { return state; } void setState(int state) { this.state = state; } void setStreamSet(ManagedOutputStream[] set) { streamSet = set; } ManagedOutputStream[] getStreamSet() { return streamSet; } /* * (non-Javadoc) * @see java.io.FilterOutputStream#write(byte[], int, int) * Override this method to prevent single byte writes to the output stream * which is done by the default implementation of FilteredOutputStream */ @Override public void write(byte[] bytes, int off, int len) throws IOException { out.write(bytes, off, len); } }