001: /*
002: * $Id: BufferedUrl.java,v 1.2 2002/02/15 23:44:28 skavish Exp $
003: *
004: * ==========================================================================
005: *
006: * The JGenerator Software License, Version 1.0
007: *
008: * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved.
009: *
010: * Redistribution and use in source and binary forms, with or without
011: * modification, are permitted provided that the following conditions are met:
012: *
013: * 1. Redistributions of source code must retain the above copyright
014: * notice, this list of conditions and the following disclaimer.
015: *
016: * 2. Redistributions in binary form must reproduce the above copyright
017: * notice, this list of conditions and the following disclaimer in
018: * the documentation and/or other materials provided with the
019: * distribution.
020: *
021: * 3. The end-user documentation included with the redistribution, if
022: * any, must include the following acknowlegement:
023: * "This product includes software developed by Dmitry Skavish
024: * (skavish@usa.net, http://www.flashgap.com/)."
025: * Alternately, this acknowlegement may appear in the software itself,
026: * if and wherever such third-party acknowlegements normally appear.
027: *
028: * 4. The name "The JGenerator" must not be used to endorse or promote
029: * products derived from this software without prior written permission.
030: * For written permission, please contact skavish@usa.net.
031: *
032: * 5. Products derived from this software may not be called "The JGenerator"
033: * nor may "The JGenerator" appear in their names without prior written
034: * permission of Dmitry Skavish.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER
040: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: *
049: */
050:
051: package org.openlaszlo.iv.flash.url;
052:
053: import java.io.*;
054: import java.net.*;
055: import java.util.*;
056: import org.openlaszlo.iv.flash.api.*;
057: import org.openlaszlo.iv.flash.util.*;
058:
059: /**
060: * Buffered url
061: * <P>
062: * This class reads data from url and caches them in a buffer
063: *
064: * @author Dmitry Skavish
065: */
066: public class BufferedUrl extends IVUrl {
067:
068: private FlashBuffer fb;
069: private IVUrl url;
070:
071: /**
072: * Creates buffered url from specified IVUrl
073: *
074: * @param url specified url
075: * @exception IOException
076: */
077: public BufferedUrl(IVUrl url) throws IOException {
078: this .url = url;
079: this .fb = Util.readUrl(url);
080: }
081:
082: /**
083: * Creates buffered url from specified url and flash file
084: *
085: * @param file flash file in which context to create url
086: * @param surl specified url
087: * @exception IOException
088: */
089: public BufferedUrl(String surl, FlashFile file) throws IOException,
090: IVException {
091: this .url = IVUrl.newUrl(surl, file);
092: this .fb = Util.readUrl(url);
093: }
094:
095: /**
096: * Creates buffered url from buffer
097: *
098: * @param fb buffer of data
099: */
100: public BufferedUrl(FlashBuffer fb) {
101: this .fb = fb;
102: }
103:
104: public FlashBuffer getFlashBuffer() {
105: return fb;
106: }
107:
108: public String getName() {
109: return "fgbuffer:///" + hashCode();
110: }
111:
112: public InputStream getInputStream() throws IOException {
113: return fb.getInputStream();
114: }
115:
116: public String getParameter(String name) {
117: if (url == null)
118: return super .getParameter(name);
119: return url.getParameter(name);
120: }
121:
122: public long lastModified() {
123: if (url == null)
124: return super .lastModified();
125: return url.lastModified();
126: }
127:
128: public void refresh() {
129: if (url == null) {
130: super .refresh();
131: } else {
132: url.refresh();
133: }
134: }
135:
136: public String getRef() {
137: if (url == null)
138: return super.getRef();
139: return url.getRef();
140: }
141:
142: }
|