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; 019 020 import org.apache.maven.model.Model; 021 import org.apache.maven.model.io.xpp3.MavenXpp3Reader; 022 import org.codehaus.plexus.util.xml.pull.XmlPullParserException; 023 import org.jadira.dependencynavigator.assembler.Assembler; 024 import org.jadira.dependencynavigator.assembler.AssemblerException; 025 import org.jadira.dependencynavigator.controller.DependencyResolutionException; 026 import org.jadira.dependencynavigator.model.Artifact; 027 import org.jadira.dependencynavigator.model.ArtifactInitialisationException; 028 import org.jadira.dependencynavigator.model.PomFile; 029 import org.jadira.dependencynavigator.model.RootPom; 030 031 import java.io.BufferedReader; 032 import java.io.FileNotFoundException; 033 import java.io.IOException; 034 035 public abstract class Workspace { 036 037 public static final String ROLE = "org.jadira.dependencynavigator.implementations.Workspace"; 038 /** 039 * the root of the pom hierarachy. this will be an entity in the workspace 040 */ 041 protected RootPom root; 042 043 private Assembler assembler; 044 045 private Repository repository; 046 047 public abstract PomFile loadModulePom(String module); 048 049 public abstract String getPath(String moduleName); 050 051 public abstract void reloadPomFile() throws ArtifactInitialisationException; 052 053 public abstract boolean canCreateSnapshot(); 054 055 public RootPom getRoot() { 056 return this.root; 057 } 058 059 protected PomFile loadPom(BufferedReader pomFile) { 060 try { 061 MavenXpp3Reader pomReader = new MavenXpp3Reader(); 062 Model model = pomReader.read(new BufferedReader(pomFile)); 063 return new PomFile(assembler.assemble(model, repository), null, Artifact.DEFAULT_SCOPE); 064 } catch (FileNotFoundException e) { 065 throw new DependencyResolutionException(e); 066 } catch (IOException e) { 067 throw new DependencyResolutionException(e); 068 } catch (XmlPullParserException e) { 069 throw new DependencyResolutionException(e); 070 } catch (ArtifactInitialisationException e) { 071 throw new DependencyResolutionException(e); 072 } catch (AssemblerException e) { 073 throw new DependencyResolutionException(e); 074 } 075 } 076 }