Skip to content

Commit 7e4fc8d

Browse files
committed
feat: Add scope, type, classifier, and optional properties to ArtifactDescriptor
Added new PomElement properties to ArtifactDescriptor for cleaner API: - scope: dependency scope (compile, test, runtime, etc.) - type: artifact type (jar, pom, etc.) - classifier: artifact classifier (mule-plugin, sources, etc.) - optional: whether dependency is optional (true/false) All properties are PomElement for consistency with existing 'version' field: - Tracks line numbers for violation reporting - Handles property references like - Provides null-safe access via ?. operator Updated tests to use cleaner API: - dependency.scope?.value instead of dependency.getAttribute('scope')?.value All tests pass (including new PomManagementResolutionTest and full suite).
1 parent 59a5b93 commit 7e4fc8d

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

mule-linter-core/src/test/groovy/com/avioconsulting/mule/linter/model/PomManagementResolutionTest.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class PomManagementResolutionTest extends Specification {
6767
6868
and: "Child-specific details (scope) are preserved"
6969
result.dependency != null
70-
result.dependency.getAttribute('scope')?.value == "runtime"
70+
result.dependency.scope?.value == "runtime"
7171
result.dependency.artifactId == "my-lib"
7272
}
7373
@@ -83,6 +83,6 @@ class PomManagementResolutionTest extends Specification {
8383
result.version == "3.0.0"
8484
result.isVersionFromManagement == false
8585
result.versionSource == pomFile
86-
result.dependency.getAttribute('scope')?.value == "compile"
86+
result.dependency.scope?.value == "compile"
8787
}
8888
}

mule-linter-spi/src/main/groovy/com/avioconsulting/mule/linter/model/pom/ArtifactDescriptor.groovy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ class ArtifactDescriptor {
88
String groupId
99
String artifactId
1010
PomElement version
11+
PomElement scope
12+
PomElement type
13+
PomElement classifier
14+
PomElement optional
1115
Integer lineNo
1216
PomFile pomFile
1317
GPathResult pluginXml
@@ -19,6 +23,10 @@ class ArtifactDescriptor {
1923
this.lineNo = getNodeLineNumber(pluginXml)
2024
this.pomFile = pomFile
2125
this.version = getAttribute('version')
26+
this.scope = getAttribute('scope')
27+
this.type = getAttribute('type')
28+
this.classifier = getAttribute('classifier')
29+
this.optional = getAttribute('optional')
2230
}
2331

2432
PomElement getAttribute(String attributeName) {

0 commit comments

Comments
 (0)