1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.internal.impl;
20  
21  import java.util.Objects;
22  
23  import org.apache.maven.api.Artifact;
24  import org.apache.maven.api.Dependency;
25  import org.apache.maven.api.DependencyCoordinate;
26  import org.apache.maven.api.DependencyScope;
27  import org.apache.maven.api.Type;
28  import org.apache.maven.api.Version;
29  import org.apache.maven.api.annotations.Nonnull;
30  import org.apache.maven.api.annotations.Nullable;
31  import org.apache.maven.repository.internal.DefaultModelVersionParser;
32  import org.eclipse.aether.artifact.ArtifactProperties;
33  
34  import static org.apache.maven.internal.impl.Utils.nonNull;
35  
36  public class DefaultDependency implements Dependency {
37  
38      private final InternalSession session;
39      private final org.eclipse.aether.graph.Dependency dependency;
40      private final String key;
41  
42      public DefaultDependency(
43              @Nonnull InternalSession session, @Nonnull org.eclipse.aether.graph.Dependency dependency) {
44          this.session = nonNull(session, "session");
45          this.dependency = nonNull(dependency, "dependency");
46          this.key = getGroupId()
47                  + ':'
48                  + getArtifactId()
49                  + ':'
50                  + getExtension()
51                  + (!getClassifier().isEmpty() ? ":" + getClassifier() : "")
52                  + ':'
53                  + getVersion();
54      }
55  
56      @Override
57      public String key() {
58          return key;
59      }
60  
61      @Nonnull
62      public org.eclipse.aether.graph.Dependency getDependency() {
63          return dependency;
64      }
65  
66      @Override
67      public String getGroupId() {
68          return dependency.getArtifact().getGroupId();
69      }
70  
71      @Override
72      public String getArtifactId() {
73          return dependency.getArtifact().getArtifactId();
74      }
75  
76      @Override
77      public String getClassifier() {
78          return dependency.getArtifact().getClassifier();
79      }
80  
81      @Override
82      public Version getVersion() {
83          return session.parseVersion(dependency.getArtifact().getVersion());
84      }
85  
86      @Override
87      public Version getBaseVersion() {
88          return session.parseVersion(dependency.getArtifact().getBaseVersion());
89      }
90  
91      @Override
92      public String getExtension() {
93          return dependency.getArtifact().getExtension();
94      }
95  
96      @Override
97      public Type getType() {
98          String type = dependency
99                  .getArtifact()
100                 .getProperty(ArtifactProperties.TYPE, dependency.getArtifact().getExtension());
101         return session.requireType(type);
102     }
103 
104     @Override
105     public boolean isSnapshot() {
106         return DefaultModelVersionParser.checkSnapshot(dependency.getArtifact().getVersion());
107     }
108 
109     @Nonnull
110     @Override
111     public DependencyScope getScope() {
112         return session.requireDependencyScope(dependency.getScope());
113     }
114 
115     @Nullable
116     @Override
117     public boolean isOptional() {
118         return dependency.isOptional();
119     }
120 
121     @Nonnull
122     @Override
123     public DependencyCoordinate toCoordinate() {
124         return session.createDependencyCoordinate(this);
125     }
126 
127     @Override
128     public boolean equals(Object o) {
129         return o instanceof Artifact && Objects.equals(key(), ((Artifact) o).key());
130     }
131 
132     @Override
133     public int hashCode() {
134         return key.hashCode();
135     }
136 
137     @Override
138     public String toString() {
139         return dependency.toString();
140     }
141 }