KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > project > injection > DefaultModelDefaultsInjector


1 package org.apache.maven.project.injection;
2
3 /*
4  * Copyright 2001-2005 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 import org.apache.maven.model.Build;
20 import org.apache.maven.model.Dependency;
21 import org.apache.maven.model.DependencyManagement;
22 import org.apache.maven.model.Model;
23 import org.apache.maven.model.Plugin;
24 import org.apache.maven.model.PluginManagement;
25 import org.apache.maven.project.ModelUtils;
26
27 import java.util.Iterator JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.Map JavaDoc;
30 import java.util.TreeMap JavaDoc;
31
32 /**
33  * @author jdcasey Created on Feb 1, 2005
34  */

35 public class DefaultModelDefaultsInjector
36     implements ModelDefaultsInjector
37 {
38     public void injectDefaults( Model model )
39     {
40         injectDependencyDefaults( model.getDependencies(), model.getDependencyManagement() );
41         if ( model.getBuild() != null )
42         {
43             injectPluginDefaults( model.getBuild(), model.getBuild().getPluginManagement() );
44         }
45     }
46
47     private void injectPluginDefaults( Build build, PluginManagement pluginManagement )
48     {
49         if ( pluginManagement == null )
50         {
51             // nothing to inject.
52
return ;
53         }
54         
55         List JavaDoc buildPlugins = build.getPlugins();
56         
57         if ( buildPlugins != null && !buildPlugins.isEmpty() )
58         {
59             Map JavaDoc pmPlugins = pluginManagement.getPluginsAsMap();
60             
61             if ( pmPlugins != null && !pmPlugins.isEmpty() )
62             {
63                 for ( Iterator JavaDoc it = buildPlugins.iterator(); it.hasNext(); )
64                 {
65                     Plugin buildPlugin = (Plugin) it.next();
66                     
67                     Plugin pmPlugin = (Plugin) pmPlugins.get( buildPlugin.getKey() );
68                     
69                     if ( pmPlugin != null )
70                     {
71                         mergePluginWithDefaults( buildPlugin, pmPlugin );
72                     }
73                 }
74             }
75         }
76         
77     }
78
79     public void mergePluginWithDefaults( Plugin plugin, Plugin def )
80     {
81         ModelUtils.mergePluginDefinitions( plugin, def, false );
82     }
83
84     private void injectDependencyDefaults( List JavaDoc dependencies, DependencyManagement dependencyManagement )
85     {
86         if ( dependencyManagement != null )
87         {
88             // a given project's dependencies should be smaller than the
89
// group-defined defaults set...
90
// in other words, the project's deps will probably be a subset of
91
// those specified in defaults.
92
Map JavaDoc depsMap = new TreeMap JavaDoc();
93             for ( Iterator JavaDoc it = dependencies.iterator(); it.hasNext(); )
94             {
95                 Dependency dep = (Dependency) it.next();
96                 depsMap.put( dep.getManagementKey(), dep );
97             }
98
99             List JavaDoc managedDependencies = dependencyManagement.getDependencies();
100
101             for ( Iterator JavaDoc it = managedDependencies.iterator(); it.hasNext(); )
102             {
103                 Dependency def = (Dependency) it.next();
104                 String JavaDoc key = def.getManagementKey();
105
106                 Dependency dep = (Dependency) depsMap.get( key );
107                 if ( dep != null )
108                 {
109                     mergeDependencyWithDefaults( dep, def );
110                 }
111             }
112         }
113     }
114
115     private void mergeDependencyWithDefaults( Dependency dep, Dependency def )
116     {
117         if ( dep.getScope() == null && def.getScope() != null )
118         {
119             dep.setScope( def.getScope() );
120             dep.setSystemPath( def.getSystemPath() );
121         }
122
123         if ( dep.getVersion() == null && def.getVersion() != null )
124         {
125             dep.setVersion( def.getVersion() );
126         }
127         
128         if ( dep.getClassifier() == null && def.getClassifier() != null )
129         {
130             dep.setClassifier( def.getClassifier() );
131         }
132         
133         if ( dep.getType() == null && def.getType() != null )
134         {
135             dep.setType( def.getType() );
136         }
137         
138         List JavaDoc exclusions = dep.getExclusions();
139         if ( exclusions == null || exclusions.isEmpty() )
140         {
141             dep.setExclusions( def.getExclusions() );
142         }
143     }
144
145 }
Popular Tags