KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openlaszlo > iv > flash > url > URLUrl


1 /*
2  * $Id: URLUrl.java,v 1.4 2002/04/16 12:40:16 ptalbot Exp $
3  *
4  * ==========================================================================
5  *
6  * The JGenerator Software License, Version 1.0
7  *
8  * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution, if
22  * any, must include the following acknowlegement:
23  * "This product includes software developed by Dmitry Skavish
24  * (skavish@usa.net, http://www.flashgap.com/)."
25  * Alternately, this acknowlegement may appear in the software itself,
26  * if and wherever such third-party acknowlegements normally appear.
27  *
28  * 4. The name "The JGenerator" must not be used to endorse or promote
29  * products derived from this software without prior written permission.
30  * For written permission, please contact skavish@usa.net.
31  *
32  * 5. Products derived from this software may not be called "The JGenerator"
33  * nor may "The JGenerator" appear in their names without prior written
34  * permission of Dmitry Skavish.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER
40  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  *
49  */

50
51 package org.openlaszlo.iv.flash.url;
52
53 import java.io.*;
54 import java.net.*;
55 import java.util.*;
56 import org.openlaszlo.iv.flash.util.*;
57 import org.openlaszlo.iv.flash.api.*;
58
59
60 /**
61  * Implementation of regular url
62  *
63  * @author Dmitry Skavish
64  */

65 public class URLUrl extends IVUrl {
66
67     private URL url;
68     private URLConnection conn;
69     private long lastModified = 0;
70     private long lastConnect = 0;
71
72     /**
73      * Creates URLUrl from URL
74      *
75      * @param url specified URL
76      * @exception IVException
77      */

78     public URLUrl( URL url ) throws IVException {
79         this.url = url;
80     }
81
82     public String JavaDoc getParameter( String JavaDoc name ) {
83         if( parms == null ) {
84             try {
85                 parse( getName() );
86             } catch( IVException e ) {
87                 Log.logRB(e);
88             }
89             if( parms == null ) {
90                 parms = new Hashtable();
91             }
92         }
93         return super.getParameter(name);
94     }
95
96     public String JavaDoc getName() {
97         return url.toExternalForm();
98     }
99
100     public String JavaDoc getRef() {
101         return url.getRef();
102     }
103
104     public long lastModified() {
105         return lastModified;
106     }
107
108     public InputStream getInputStream() throws IOException {
109         connect();
110         Log.logRB( Resource.RETRIEVINGCONTENT, new Object JavaDoc[] {getName()} );
111         return conn.getInputStream();
112     }
113
114     public void refresh() {
115         try {
116             connect();
117         } catch( IOException e ) {
118             Log.logRB( e );
119         }
120     }
121
122     private synchronized void connect() throws IOException {
123         long now = System.currentTimeMillis();
124         if( lastConnect == 0 || lastConnect+500 < now ) {
125             Log.logRB( Resource.CONNECTINGTO, new Object JavaDoc[] {getName()} );
126             String JavaDoc auth = setProxy();
127             conn = url.openConnection();
128             if ( auth!=null )
129                 conn.setRequestProperty( "Proxy-Authorization", auth );
130             conn.connect();
131             lastModified = conn.getLastModified();
132             lastConnect = System.currentTimeMillis();
133         }
134     }
135
136     private String JavaDoc setProxy() {
137         String JavaDoc auth = null;
138         String JavaDoc useProxy = PropertyManager.getProperty( "org.openlaszlo.iv.flash.http.proxy.enable" );
139         if ( "true".equalsIgnoreCase( useProxy ) )
140         {
141             String JavaDoc proxy = PropertyManager.getProperty( "org.openlaszlo.iv.flash.http.proxy.host" );
142             String JavaDoc proxyport = PropertyManager.getProperty( "org.openlaszlo.iv.flash.http.proxy.port" );
143             String JavaDoc myUserName = PropertyManager.getProperty( "org.openlaszlo.iv.flash.http.proxy.username" );
144             String JavaDoc myPassword = PropertyManager.getProperty( "org.openlaszlo.iv.flash.http.proxy.password" );
145             if( proxy != null)
146             {
147                 Properties props = System.getProperties();
148                 props.put( "proxySet", "true" );
149                 props.put( "proxyHost", proxy );
150                 if ( proxyport != null )
151                     props.put( "proxyPort", proxyport );
152                 else
153                     props.put( "proxyPort", "80" );
154                 if ( myUserName!=null && myUserName.trim().length()>0 )
155                 {
156                     String JavaDoc authString = myUserName + ":" +
157                                         ( ( myPassword!=null && myPassword.trim().length()>0 ) ? myPassword : "" );
158                     auth = "Basic " + new sun.misc.BASE64Encoder().encode(authString.getBytes());
159                 }
160             }
161         }
162         return auth;
163     }
164 }
165
Popular Tags