2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
19 package org.apidesign.bck2brwsr.dew;
21 import java.io.ByteArrayInputStream;
22 import java.io.ByteArrayOutputStream;
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.io.InputStreamReader;
26 import java.io.OutputStream;
27 import java.io.OutputStreamWriter;
28 import java.io.Reader;
29 import java.io.Writer;
33 * @author Tomas Zeuzla
35 class MemoryFileObject extends BaseFileObject {
37 private byte[] content;
38 private long lastModified;
44 super(resourceName, kind);
45 this.content = content;
46 this.lastModified = this.content == null ?
48 System.currentTimeMillis();
54 this(resourceName, getKind(resourceName) ,content);
59 public InputStream openInputStream() throws IOException {
60 if (content == null) {
61 throw new IOException();
63 return new ByteArrayInputStream(content);
68 public OutputStream openOutputStream() throws IOException {
69 return new CloseStream();
73 public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
74 return new InputStreamReader(openInputStream());
78 public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
79 if (content == null) {
80 throw new IOException();
82 return new String(content);
87 public Writer openWriter() throws IOException {
88 return new OutputStreamWriter(openOutputStream());
92 public long getLastModified() {
97 public boolean delete() {
101 byte[] getContent() {
105 private class CloseStream extends OutputStream {
107 private final ByteArrayOutputStream delegate;
110 delegate = new ByteArrayOutputStream();
114 public void write(int b) throws IOException {
119 public void write(byte[] b) throws IOException {
124 public void write(byte[] b, int off, int len) throws IOException {
125 delegate.write(b, off, len);
129 public void close() throws IOException {
131 content = delegate.toByteArray();
132 lastModified = System.currentTimeMillis();