1 package org.apache.maven.model.building;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import java.nio.file.Path;
24 import java.util.Optional;
25 import java.util.function.BiFunction;
26 import java.util.function.Function;
27
28 import org.apache.maven.model.Model;
29 import org.apache.maven.model.transform.BuildToRawPomXMLFilterFactory;
30 import org.apache.maven.model.transform.RelativeProject;
31
32
33
34
35
36
37
38 public class DefaultBuildPomXMLFilterFactory extends BuildToRawPomXMLFilterFactory
39 {
40 private final TransformerContext context;
41
42
43
44
45
46
47 public DefaultBuildPomXMLFilterFactory( TransformerContext context,
48 boolean consume )
49 {
50 super( consume );
51 this.context = context;
52 }
53
54 @Override
55 protected Function<Path, Optional<RelativeProject>> getRelativePathMapper()
56 {
57 return p -> Optional.ofNullable( context.getRawModel( p ) )
58 .map( DefaultBuildPomXMLFilterFactory::toRelativeProject );
59 }
60
61 @Override
62 protected BiFunction<String, String, String> getDependencyKeyToVersionMapper()
63 {
64 return ( g, a ) -> Optional.ofNullable( context.getRawModel( g, a ) )
65 .map( DefaultBuildPomXMLFilterFactory::toVersion )
66 .orElse( null );
67 }
68
69 @Override
70 protected Optional<String> getChangelist()
71 {
72 return Optional.ofNullable( context.getUserProperty( "changelist" ) );
73 }
74
75 @Override
76 protected Optional<String> getRevision()
77 {
78 return Optional.ofNullable( context.getUserProperty( "revision" ) );
79 }
80
81 @Override
82 protected Optional<String> getSha1()
83 {
84 return Optional.ofNullable( context.getUserProperty( "sha1" ) );
85 }
86
87 private static RelativeProject toRelativeProject( final Model m )
88 {
89 String groupId = m.getGroupId();
90 if ( groupId == null && m.getParent() != null )
91 {
92 groupId = m.getParent().getGroupId();
93 }
94
95 String version = m.getVersion();
96 if ( version == null && m.getParent() != null )
97 {
98 version = m.getParent().getVersion();
99 }
100
101 return new RelativeProject( groupId, m.getArtifactId(), version );
102 }
103
104 private static String toVersion( final Model m )
105 {
106 String version = m.getVersion();
107 if ( version == null && m.getParent() != null )
108 {
109 version = m.getParent().getVersion();
110 }
111
112 return version;
113 }
114 }