Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package freemarker.cache;
 
 import java.io.File;
 import java.net.URL;
Wraps a java.net.URL, and implements methods required for a typical template source.
 
     private final URL url;
     private URLConnection conn;
     private InputStream inputStream;
     private Boolean useCaches;

    

Parameters:
useCaches null if this aspect wasn't set in the parent TemplateLoader.
 
     URLTemplateSource(URL urlBoolean useCachesthrows IOException {
         this. = url;
         this. = url.openConnection();
         this. = useCaches;
         if (useCaches != null) {
             .setUseCaches(useCaches.booleanValue());
         }
     }
 
     public boolean equals(Object o) {
         if (o instanceof URLTemplateSource) {
             return .equals(((URLTemplateSourceo).);
         } else {
             return false;
         }
     }
 
     public int hashCode() {
         return .hashCode();
     }
 
     public String toString() {
         return .toString();
     }
     
     long lastModified() {
         if ( instanceof JarURLConnection) {
           // There is a bug in sun's jar url connection that causes file handle leaks when calling getLastModified()
           // Since the time stamps of jar file contents can't vary independent from the jar file timestamp, just use
           // the jar file timestamp
           URL jarURL=((JarURLConnection)).getJarFileURL();
           if (jarURL.getProtocol().equals("file")) {
             // Return the last modified time of the underlying file - saves some opening and closing
             return new File(jarURL.getFile()).lastModified();
           } else {
             // Use the URL mechanism
             URLConnection jarConn=null;
             try {
               jarConn=jarURL.openConnection();
               return jarConn.getLastModified();
             } catch (IOException e) {
               return -1;
             } finally {
               try {
                 if (jarConn!=nulljarConn.getInputStream().close();
               } catch (IOException e) { }
             }
           }
         } else {
           long lastModified = .getLastModified();
           if (lastModified == -1L && .getProtocol().equals("file")) {
               // Hack for obtaining accurate last modified time for
               // URLs that point to the local file system. This is fixed
               // in JDK 1.4, but prior JDKs returns -1 for file:// URLs.
               return new File(.getFile()).lastModified();
           } else {
               return lastModified;
           }
         }
     }
 
     InputStream getInputStream() throws IOException {
        if ( != null) {
            // Ensure that the returned InputStream reads from the beginning of the resource when getInputStream()
            // is called for the second time:
            try {
                .close();
            } catch (IOException e) {
                // Ignore; this is maybe because it was closed for the 2nd time now
            }
            this. = .openConnection();
        }
         = .getInputStream();
        return ;
    }
    void close() throws IOException {
        try {
          if ( != null) {
              .close();
          } else {
              .getInputStream().close();
          }
        } finally {
           = null;
           = null;
        }
    }
    Boolean getUseCaches() {
        return ;
    }
    void setUseCaches(boolean useCaches) {
        if (this. != null) {
            .setUseCaches(useCaches);
            this. = Boolean.valueOf(useCaches);
        }
    }
    
New to GrepCode? Check out our FAQ X