001 /* 002 * Licensed under the Apache License, Version 2.0 (the "License"); 003 * you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at 005 * 006 * http://www.apache.org/licenses/LICENSE-2.0 007 * 008 * Unless required by applicable law or agreed to in writing, software 009 * distributed under the License is distributed on an "AS IS" BASIS, 010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 011 * See the License for the specific language governing permissions and 012 * limitations under the License. 013 */ 014 /* 015 * This file has been modified by Chris Pheby in accordance with Section 4.2 016 * of the Apache Software License 017 */ 018 package org.jadira.dependencynavigator.implementations.local; 019 020 import org.apache.maven.model.Model; 021 import org.apache.maven.model.io.xpp3.MavenXpp3Reader; 022 import org.codehaus.plexus.context.Context; 023 import org.codehaus.plexus.context.ContextException; 024 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; 025 import org.codehaus.plexus.util.xml.pull.XmlPullParserException; 026 import org.jadira.dependencynavigator.controller.DependencyResolutionException; 027 import org.jadira.dependencynavigator.implementations.Repository; 028 029 import java.io.File; 030 import java.io.FileNotFoundException; 031 import java.io.FileReader; 032 import java.io.IOException; 033 034 public class LocalDiskRepository implements Repository, Contextualizable { 035 036 public static final String KEY_LOCAL_REPO_PATH = "local.repo"; 037 038 private File repositoryRoot; 039 040 public Model resolveFile(String groupId, String artifactId, String version) { 041 String[] groups = groupId.split("\\."); 042 File artifactPomFile = new File(repositoryRoot.getPath()); 043 for (int i = 0; i < groups.length; i++) { 044 artifactPomFile = new File(artifactPomFile, groups[i]); 045 } 046 artifactPomFile = new File(artifactPomFile, artifactId); 047 artifactPomFile = new File(artifactPomFile, version); 048 artifactPomFile = new File(artifactPomFile, artifactId + "-" + version + ".pom"); 049 050 if (!artifactPomFile.exists()) { 051 return null; 052 } 053 054 MavenXpp3Reader pomReader = new MavenXpp3Reader(); 055 try { 056 return pomReader.read(new FileReader(artifactPomFile)); 057 } catch (FileNotFoundException e) { 058 throw new DependencyResolutionException(e); 059 } catch (IOException e) { 060 throw new DependencyResolutionException(e); 061 } catch (XmlPullParserException e) { 062 // throw new DependencyResolutionException(e); 063 } 064 return null; 065 } 066 067 public File getRepositoryRoot() { 068 return this.repositoryRoot; 069 } 070 071 public boolean canCreateSnapshot() { 072 return true; 073 } 074 075 public void contextualize(Context context) throws ContextException { 076 String repoPath = (String) context.get(KEY_LOCAL_REPO_PATH); 077 if (repoPath == null || repoPath.trim().length() == 0) { 078 throw new ContextException("Missing configuration parameter: " + KEY_LOCAL_REPO_PATH); 079 } 080 repositoryRoot = new File(repoPath); 081 } 082 }