View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.log4j.lf5.util;
18  
19  import java.io.InputStream;
20  import java.io.InputStreamReader;
21  import java.net.URL;
22  
23  /**
24   * Resource encapsulates access to Resources via the Classloader.
25   *
26   * @author Michael J. Sikorsky
27   * @author Robert Shaw
28   */
29  
30  // Contributed by ThoughtWorks Inc.
31  
32  public class Resource {
33    //--------------------------------------------------------------------------
34    //   Constants:
35    //--------------------------------------------------------------------------
36  
37    //--------------------------------------------------------------------------
38    //   Protected Variables:
39    //--------------------------------------------------------------------------
40    protected String _name;
41  
42    //--------------------------------------------------------------------------
43    //   Private Variables:
44    //--------------------------------------------------------------------------
45  
46    //--------------------------------------------------------------------------
47    //   Constructors:
48    //--------------------------------------------------------------------------
49  
50    /**
51     * Default, no argument constructor.
52     */
53    public Resource() {
54      super();
55    }
56  
57    /**
58     * Construct a Resource given a name.
59     *
60     * @see #setName(String)
61     */
62    public Resource(String name) {
63      _name = name;
64    }
65  
66    //--------------------------------------------------------------------------
67    //   Public Methods:
68    //--------------------------------------------------------------------------
69  
70    /**
71     * Set the name of the resource.
72     * <p>
73     * A resource is some data (images, audio, text, etc) that can be accessed
74     * by class code in a way that is independent of the location of the code.
75     * </p>
76     * <p>
77     * The name of a resource is a "/"-separated path name that identifies
78     * the resource.
79     * </p>
80     *
81     * @see #getName()
82     */
83    public void setName(String name) {
84      _name = name;
85    }
86  
87    /**
88     * Get the name of the resource.  Set setName() for a description of
89     * a resource.
90     *
91     * @see #setName
92     */
93    public String getName() {
94      return (_name);
95    }
96  
97    /**
98     * Get the InputStream for this Resource.  Uses the classloader
99     * from this Resource.
100    *
101    * @see #getInputStreamReader
102    * @see ResourceUtils
103    */
104   public InputStream getInputStream() {
105     InputStream in = ResourceUtils.getResourceAsStream(this, this);
106 
107     return (in);
108   }
109 
110   /**
111    * Get the InputStreamReader for this Resource. Uses the classloader from
112    * this Resource.
113    *
114    * @see #getInputStream
115    * @see ResourceUtils
116    */
117   public InputStreamReader getInputStreamReader() {
118     InputStream in = ResourceUtils.getResourceAsStream(this, this);
119 
120     if (in == null) {
121       return null;
122     }
123 
124     InputStreamReader reader = new InputStreamReader(in);
125 
126     return reader;
127   }
128 
129   /**
130    * Get the URL of the Resource.  Uses the classloader from this Resource.
131    *
132    * @see ResourceUtils
133    */
134   public URL getURL() {
135     return (ResourceUtils.getResourceAsURL(this, this));
136   }
137 
138   //--------------------------------------------------------------------------
139   //   Protected Methods:
140   //--------------------------------------------------------------------------
141 
142   //--------------------------------------------------------------------------
143   //   Private Methods:
144   //--------------------------------------------------------------------------
145 
146   //--------------------------------------------------------------------------
147   //   Nested Top-Level Classes or Interfaces:
148   //--------------------------------------------------------------------------
149 
150 }
151 
152 
153 
154 
155 
156