View Javadoc
1   package org.apache.maven.model.building;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.io.File;
23  import java.net.URI;
24  
25  import org.apache.maven.building.FileSource;
26  
27  /**
28   * Wraps an ordinary {@link File} as a model source.
29   *
30   * @author Benjamin Bentmann
31   */
32  public class FileModelSource extends FileSource implements ModelSource2
33  {
34  
35      /**
36       * Creates a new model source backed by the specified file.
37       *
38       * @param pomFile The POM file, must not be {@code null}.
39       */
40      public FileModelSource( File pomFile )
41      {
42          super( pomFile );
43      }
44      
45      /**
46       * 
47       * @return the file of this source
48       * 
49       * @deprecated instead use {@link #getFile()}
50       */
51      @Deprecated
52      public File getPomFile()
53      {
54          return getFile();
55      }
56      
57      @Override
58      public ModelSource2 getRelatedSource( String relPath )
59      {
60          relPath = relPath.replace( '\\', File.separatorChar ).replace( '/', File.separatorChar );
61  
62          File relatedPom = new File( getFile().getParentFile(), relPath );
63  
64          if ( relatedPom.isDirectory() )
65          {
66              // TODO figure out how to reuse ModelLocator.locatePom(File) here
67              relatedPom = new File( relatedPom, "pom.xml" );
68          }
69  
70          if ( relatedPom.isFile() && relatedPom.canRead() )
71          {
72              return new FileModelSource( new File( relatedPom.toURI().normalize() ) );
73          }
74  
75          return null;
76      }
77  
78      @Override
79      public URI getLocationURI()
80      {
81          return getFile().toURI();
82      }
83  
84      @Override
85      public boolean equals( Object obj ) 
86      {
87          if ( this == obj ) 
88          {
89              return true;
90          }
91          
92          if ( !( obj instanceof FileModelSource ) ) 
93          {
94              return false;
95          }
96          FileModelSource other = ( FileModelSource ) obj;
97          return getFile().equals( other.getFile() );
98      }
99  
100     @Override
101     public int hashCode() 
102     {
103         return getFile().hashCode(); 
104     }
105 
106 }