dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderJavaFileObject.java
author tzezula
Wed, 02 Oct 2013 21:00:24 +0200
changeset 1324 263482b074e9
child 1325 f7f25ea1bbec
permissions -rw-r--r--
ClassLoaderFileManager
     1 /*
     2  * To change this license header, choose License Headers in Project Properties.
     3  * To change this template file, choose Tools | Templates
     4  * and open the template in the editor.
     5  */
     6 
     7 package org.apidesign.bck2brwsr.dew;
     8 
     9 import java.io.BufferedReader;
    10 import java.io.FileNotFoundException;
    11 import java.io.IOException;
    12 import java.io.InputStream;
    13 import java.io.InputStreamReader;
    14 import java.io.OutputStream;
    15 import java.io.OutputStreamWriter;
    16 import java.io.Reader;
    17 import java.io.Writer;
    18 
    19 /**
    20  *
    21  * @author Tomas Zezula
    22  */
    23 class ClassLoaderJavaFileObject extends BaseFileObject {
    24 
    25     ClassLoaderJavaFileObject(final String path) {
    26         super(path, getKind(path));
    27     }    
    28 
    29     @Override
    30     public InputStream openInputStream() throws IOException {
    31         final InputStream in = getClass().getClassLoader().getResourceAsStream(path.substring(1));
    32         if (in == null) {
    33             getClass().getClassLoader().getResourceAsStream(path.substring(1));
    34             throw new FileNotFoundException(path);
    35 
    36         }
    37         return in;
    38     }
    39 
    40     @Override
    41     public OutputStream openOutputStream() throws IOException {
    42         throw new UnsupportedOperationException("Read Only FileObject");    //NOI18N
    43     }
    44 
    45     @Override
    46     public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
    47         return new InputStreamReader(openInputStream());
    48     }
    49 
    50     @Override
    51     public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
    52         final BufferedReader in = new BufferedReader(openReader(ignoreEncodingErrors));
    53         try {
    54             final StringBuilder sb = new StringBuilder();
    55             String line;
    56             while ((line = in.readLine()) != null) {
    57                 sb.append(line);
    58                 sb.append('\n');    //NOI18N
    59             }
    60             return sb.toString();
    61         } finally {
    62             in.close();
    63         }
    64     }
    65 
    66     @Override
    67     public Writer openWriter() throws IOException {
    68         return new OutputStreamWriter(openOutputStream());
    69     }
    70 
    71     @Override
    72     public long getLastModified() {
    73         return System.currentTimeMillis();
    74     }
    75 
    76     @Override
    77     public boolean delete() {
    78         return false;
    79     }
    80 
    81 }