home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / browser / documentref.java < prev    next >
Text File  |  1995-08-11  |  3KB  |  81 lines

  1. /*
  2.  * @(#)DocumentRef.java    1.4 95/05/10 Jonathan Payne
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package browser;
  21.  
  22. import net.www.html.URL;
  23. import java.io.InputStream;
  24.  
  25. public class DocumentRef extends Ref {
  26.     URL    url;
  27.     Object  hardThing = null;
  28.  
  29.     public DocumentRef(URL u) {
  30.     url = u;
  31.     }
  32.  
  33.     public DocumentRef(Document d, URL u) {
  34.     this(u);
  35.     setThing(d);
  36.  
  37.     /* if url is null, we don't know how to reconstitute this,
  38.        so we make a hard reference to the object */
  39.     if (u == null) {
  40.         hardThing = d;
  41.     }
  42.     }
  43.  
  44.     public Object reconstitute() {
  45.     Object    content = null;
  46.  
  47.     if (hardThing != null) {
  48.         return hardThing;
  49.     }
  50.  
  51.     try {
  52.         InputStream    is = url.openStreamInteractively();
  53.         if (url.content_type == URL.content_html) {
  54.         content = new Document(url, is);
  55.         } else {
  56.         content = url.getContent(is, null);
  57.  
  58.         if (content == null) {
  59.             /* launched -- nothing to do */
  60. //            setCacheable(false);
  61.         } else if (content instanceof Thread) {
  62.             /* a launchable thing: launch it */
  63.             ((Thread) content).start();
  64. //            setCacheable(false);
  65.         } else if (content instanceof String) {
  66.             content = new Document(url, (String) content);
  67.         }
  68.         }
  69.     } catch (net.UnknownServiceException e) {
  70.         content = new Document(url, "<html><body><h1>Error</h1><p><i>Failed to get: </i>" + this.url.toExternalForm() + "</h1>\n<p><i>Reason is: </i>The URL contained a protocol specification that is not defined anywhere.\n");
  71.     } catch (net.UnknownHostException e) {
  72.         content = new Document(url, "<html><body><h1>Error</h1><p><i>Failed to get: </i>" + this.url.toExternalForm() + "</h1>\n<p><i>Reason is: </i>The URL refers to a host whose name is not defined.\n");
  73.     } catch (FileNotFoundException e) {
  74.         content = new Document(url, "<html><body><h1>Error</h1><p><i>Failed to get: </i>" + this.url.toExternalForm() + "</h1>\n<p><i>Reason is: </i>The URL refers to a document which does not exist.\n");
  75.     } catch (Exception e) {
  76.         content = new Document(url, "<html><body><h1>Error</h1><p><i>Failed to get: </i>" + this.url.toExternalForm() + "</h1>\n<p><i>Reason is: </i>"+e);
  77.     }
  78.     return content;
  79.     }
  80. }
  81.