View Javadoc
1   package org.codehaus.plexus.components.io.resources;
2   
3   /*
4    * Copyright 2007 The Codehaus Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import javax.annotation.Nonnull;
20  import java.io.IOException;
21  import java.io.InputStream;
22  import java.net.URL;
23  import java.net.URLConnection;
24  
25  public abstract class PlexusIoURLResource
26      extends AbstractPlexusIoResource
27  {
28      protected PlexusIoURLResource( @Nonnull String name, long lastModified, long size, boolean isFile,
29                                     boolean isDirectory, boolean isExisting )
30      {
31          super( name, lastModified, size, isFile, isDirectory, isExisting );
32      }
33  
34      @Nonnull
35      public InputStream getContents()
36          throws IOException
37      {
38          final URL url = getURL();
39          try
40          {
41              URLConnection uc = url.openConnection();
42              uc.setUseCaches( false );
43              return uc.getInputStream();
44          }
45          catch ( IOException e )
46          {
47              IOException ex = new IOException( getDescriptionForError( url ) );
48              ex.initCause( e );
49              throw ex;
50          }
51      }
52  
53      public String getDescriptionForError( URL url )
54      {
55          return url != null ? url.toExternalForm() : "url=null";
56      }
57  
58      public abstract URL getURL() throws IOException;
59  }