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.project.interpolation.ModelInterpolationException;
021 import org.codehaus.plexus.context.Context;
022 import org.codehaus.plexus.context.ContextException;
023 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
024 import org.jadira.dependencynavigator.controller.DependencyResolutionException;
025 import org.jadira.dependencynavigator.implementations.Workspace;
026 import org.jadira.dependencynavigator.model.ArtifactInitialisationException;
027 import org.jadira.dependencynavigator.model.PomFile;
028 import org.jadira.dependencynavigator.model.RootPom;
029
030 import java.io.BufferedReader;
031 import java.io.File;
032 import java.io.FileNotFoundException;
033 import java.io.FileReader;
034
035 public class LocalDiskWorkspace extends Workspace implements Contextualizable {
036
037 public static final String KEY_WORKSPACE_PATH = "local.workspace";
038
039 private File workspaceDirectory;
040
041 private File rootFile;
042
043 public File getWorkspaceDirectory() {
044 return this.workspaceDirectory;
045 }
046
047 public void loadRootPom(File file) throws ArtifactInitialisationException {
048 this.rootFile = file;
049 reloadPomFile();
050 }
051
052 @Override
053 public void reloadPomFile() throws ArtifactInitialisationException {
054 try {
055 BufferedReader fileReader = new BufferedReader(new FileReader(rootFile));
056 root = new RootPom(loadPom(fileReader), this);
057 } catch (FileNotFoundException e) {
058 throw new DependencyResolutionException(e);
059 } catch (ModelInterpolationException e) {
060 throw new DependencyResolutionException(e);
061 }
062 }
063
064 @Override
065 public String getPath(String moduleName) {
066 return rootFile.getParent() + "/" + moduleName + "/pom.xml";
067 }
068
069 @Override
070 public PomFile loadModulePom(String module) {
071 try {
072 File file2 = new File(getPath(module));
073 BufferedReader fileReader = new BufferedReader(new FileReader(file2));
074 return loadPom(fileReader);
075 } catch (FileNotFoundException e) {
076 throw new DependencyResolutionException(e);
077 }
078 }
079
080 @Override
081 public boolean canCreateSnapshot() {
082 return true;
083 }
084
085 public void contextualize(Context context) throws ContextException {
086 String workspacePath = (String) context.get(KEY_WORKSPACE_PATH);
087 if (workspacePath == null || workspacePath.trim().length() == 0) {
088 throw new ContextException("Missing configuration parameter: " + KEY_WORKSPACE_PATH);
089 }
090 workspaceDirectory = new File(workspacePath);
091 }
092 }