Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/sun/net/www/content/image/URLImageContentHandlerSource.java

/*
 * @(#)URLImageContentHandlerSource.java	1.1 95/11/15  James Gosling
 * 
 * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for NON-COMMERCIAL purposes and without fee is hereby
 * granted provided that this copyright notice appears in all copies. Please
 * refer to the file "copyright.html" for further important copyright and
 * licensing information.
 * 
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
 * OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
 * ITS DERIVATIVES.
 */

package sun.net.www.content.image;

import java.net.URL;
import java.net.URLConnection;
import java.net.*;
import sun.awt.image.*;
import java.io.InputStream;
import java.io.IOException;

class URLImageContentHandlerSource extends InputStreamImageSource {
    URL url;
    URLConnection conn;

    public URLImageContentHandlerSource (URLConnection uc) {
	url = uc.getURL();
	conn = uc;
    }

    private synchronized URLConnection getConnection() throws IOException {
	URLConnection c = conn;
	if (c != null) {
	    conn = null;
	} else {
	    c = url.openConnection();
	}
	return c;
    }

    protected synchronized ImageDecoder getDecoder() {
	try {
	    URLConnection c = getConnection();
	    String type = c.getContentType();
	    ImageDecoder id = null;
	    InputStream is = c.getInputStream();

	    id = new sun.awt.image.GifImageDecoder(this, is);
	    if (id == null) {
		id = getDecoder(is);
	    }
	    return id;
	} catch(IOException e) {
	    return null;
	}
    }
}