Coverage Report - org.apache.maven.archiva.dependency.graph.ProjectModelBasedGraphBuilder
 
Classes in this File Line Coverage Branch Coverage Complexity
ProjectModelBasedGraphBuilder
0%
0/29
0%
0/2
2
 
 1  
 package org.apache.maven.archiva.dependency.graph;
 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 org.apache.maven.archiva.model.ArchivaProjectModel;
 23  
 import org.apache.maven.archiva.model.ArtifactReference;
 24  
 import org.apache.maven.archiva.model.VersionedReference;
 25  
 import org.apache.maven.archiva.repository.project.ProjectModelException;
 26  
 import org.apache.maven.archiva.repository.project.ProjectModelResolverFactory;
 27  
 import org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelFilter;
 28  
 
 29  
 /**
 30  
  * ProjectModelBasedGraphBuilder 
 31  
  *
 32  
  * @version $Id: ProjectModelBasedGraphBuilder.java 721529 2008-11-28 16:29:00Z brett $
 33  
  * 
 34  
  * @plexus.component 
 35  
  *              role="org.apache.maven.archiva.dependency.graph.DependencyGraphBuilder"
 36  
  *              role-hint="project-model"
 37  
  */
 38  0
 public class ProjectModelBasedGraphBuilder
 39  
     implements DependencyGraphBuilder
 40  
 {
 41  
     /**
 42  
      * @plexus.requirement
 43  
      */
 44  
     private ProjectModelResolverFactory resolverFactory;
 45  
 
 46  
     /**
 47  
      * @plexus.requirement 
 48  
      *          role="org.apache.maven.archiva.repository.project.ProjectModelFilter"
 49  
      *          role-hint="effective"
 50  
      */
 51  0
     private EffectiveProjectModelFilter effectiveFilter = new EffectiveProjectModelFilter();
 52  
 
 53  
     public DependencyGraph createGraph( VersionedReference versionedProjectReference )
 54  
     {
 55  0
         String groupId = versionedProjectReference.getGroupId();
 56  0
         String artifactId = versionedProjectReference.getArtifactId();
 57  0
         String version = versionedProjectReference.getVersion();
 58  
 
 59  0
         DependencyGraph graph = new DependencyGraph( groupId, artifactId, version );
 60  0
         return graph;
 61  
     }
 62  
 
 63  
     public void resolveNode( DependencyGraph graph, DependencyGraphNode fromNode,
 64  
                              VersionedReference versionedProjectReference )
 65  
     {
 66  0
         ArchivaProjectModel model = resolveModel( fromNode.getArtifact() );
 67  
 
 68  0
         DependencyGraphUtils.addNodeFromModel( model, graph, fromNode );
 69  0
     }
 70  
 
 71  
     private ArchivaProjectModel resolveModel( ArtifactReference reference )
 72  
     {
 73  0
         VersionedReference projectRef = new VersionedReference();
 74  
 
 75  0
         projectRef.setGroupId( reference.getGroupId() );
 76  0
         projectRef.setArtifactId( reference.getArtifactId() );
 77  0
         projectRef.setVersion( reference.getVersion() );
 78  
 
 79  0
         ArchivaProjectModel model = resolverFactory.getCurrentResolverStack().findProject( projectRef );
 80  
 
 81  0
         if ( model == null )
 82  
         {
 83  0
             return createDefaultModel( reference );
 84  
         }
 85  
 
 86  
         try
 87  
         {
 88  0
             ArchivaProjectModel processedModel = effectiveFilter.filter( model );
 89  
 
 90  0
             return processedModel;
 91  
         }
 92  0
         catch ( ProjectModelException e )
 93  
         {
 94  0
             e.printStackTrace( System.err );
 95  0
             return createDefaultModel( reference );
 96  
         }
 97  
     }
 98  
 
 99  
     private ArchivaProjectModel createDefaultModel( ArtifactReference reference )
 100  
     {
 101  0
         ArchivaProjectModel model = new ArchivaProjectModel();
 102  
 
 103  
         // Create default (dummy) model
 104  0
         model = new ArchivaProjectModel();
 105  0
         model.setGroupId( reference.getGroupId() );
 106  0
         model.setArtifactId( reference.getArtifactId() );
 107  0
         model.setVersion( reference.getVersion() );
 108  0
         model.setPackaging( reference.getType() );
 109  0
         return model;
 110  
     }
 111  
 }