Skip to content

Commit 7e550ef

Browse files
authored
[MNG-8215] Add location tracking for toolchains (#1608)
1 parent 40e4115 commit 7e550ef

File tree

5 files changed

+68
-6
lines changed

5 files changed

+68
-6
lines changed

api/maven-api-toolchain/src/main/mdo/toolchains.mdo

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,51 @@
199199
</codeSegment>
200200
</codeSegments>
201201
</class>
202+
<!-- /BuildProfile support -->
203+
<class locationTracker="locations">
204+
<name>InputLocation</name>
205+
<version>1.2.0+</version>
206+
<fields>
207+
<!-- line, column and source fields are auto-generated by Modello -->
208+
</fields>
209+
<codeSegments>
210+
<codeSegment>
211+
<version>1.2.0+</version>
212+
<code>
213+
214+
@Override
215+
public String toString() {
216+
return getLineNumber() + " : " + getColumnNumber() + ", " + getSource();
217+
}
218+
</code>
219+
</codeSegment>
220+
</codeSegments>
221+
</class>
222+
<class sourceTracker="source">
223+
<name>InputSource</name>
224+
<version>1.2.0+</version>
225+
<fields>
226+
<field>
227+
<name>location</name>
228+
<version>1.2.0+</version>
229+
<type>String</type>
230+
<description>
231+
The path/URL of the settings definition or {@code null} if unknown.
232+
</description>
233+
</field>
234+
</fields>
235+
<codeSegments>
236+
<codeSegment>
237+
<version>1.2.0+</version>
238+
<code>
239+
@Override
240+
public String toString() {
241+
return getLocation();
242+
}
243+
</code>
244+
</codeSegment>
245+
</codeSegments>
246+
</class>
202247
</classes>
203248
</model>
204249

maven-api-impl/pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ under the License.
196196
</goals>
197197
<phase>generate-sources</phase>
198198
<configuration>
199-
<version>1.1.0</version>
199+
<version>1.2.0</version>
200200
<basedir>${project.basedir}/../api/maven-api-toolchain</basedir>
201201
<velocityBasedir>${project.basedir}/../src/mdo</velocityBasedir>
202202
<models>
@@ -212,6 +212,8 @@ under the License.
212212
<param>packageModelV3=org.apache.maven.toolchain.model</param>
213213
<param>packageModelV4=org.apache.maven.api.toolchain</param>
214214
<param>packageToolV4=org.apache.maven.toolchain.v4</param>
215+
<param>locationTracking=true</param>
216+
<param>generateLocationClasses=true</param>
215217
</params>
216218
</configuration>
217219
</execution>

maven-api-impl/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsXmlFactory.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.apache.maven.api.services.xml.XmlReaderRequest;
3333
import org.apache.maven.api.services.xml.XmlWriterException;
3434
import org.apache.maven.api.services.xml.XmlWriterRequest;
35+
import org.apache.maven.api.toolchain.InputSource;
3536
import org.apache.maven.api.toolchain.PersistedToolchains;
3637
import org.apache.maven.toolchain.v4.MavenToolchainsStaxReader;
3738
import org.apache.maven.toolchain.v4.MavenToolchainsStaxWriter;
@@ -52,12 +53,16 @@ public PersistedToolchains read(@Nonnull XmlReaderRequest request) throws XmlRea
5253
throw new IllegalArgumentException("reader or inputStream must be non null");
5354
}
5455
try {
56+
InputSource source = null;
57+
if (request.getModelId() != null || request.getLocation() != null) {
58+
source = new InputSource(request.getLocation());
59+
}
5560
MavenToolchainsStaxReader xml = new MavenToolchainsStaxReader();
5661
xml.setAddDefaultEntities(request.isAddDefaultEntities());
5762
if (reader != null) {
58-
return xml.read(reader, request.isStrict());
63+
return xml.read(reader, request.isStrict(), source);
5964
} else {
60-
return xml.read(inputStream, request.isStrict());
65+
return xml.read(inputStream, request.isStrict(), source);
6166
}
6267
} catch (Exception e) {
6368
throw new XmlReaderException("Unable to read toolchains: " + getMessage(e), getLocation(e), e);

maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.Map;
3131
import java.util.Objects;
3232

33+
import org.apache.maven.api.toolchain.InputSource;
3334
import org.apache.maven.toolchain.model.PersistedToolchains;
3435
import org.apache.maven.toolchain.v4.MavenToolchainsStaxReader;
3536

@@ -47,7 +48,8 @@ public PersistedToolchains read(File input, Map<String, ?> options) throws IOExc
4748
Objects.requireNonNull(input, "input cannot be null");
4849

4950
try (InputStream in = Files.newInputStream(input.toPath())) {
50-
return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options)));
51+
InputSource source = new InputSource(input.toString());
52+
return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options), source));
5153
} catch (XMLStreamException e) {
5254
throw new ToolchainsParseException(
5355
e.getMessage(),
@@ -62,7 +64,8 @@ public PersistedToolchains read(Reader input, Map<String, ?> options) throws IOE
6264
Objects.requireNonNull(input, "input cannot be null");
6365

6466
try (Reader in = input) {
65-
return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options)));
67+
InputSource source = (InputSource) options.get(InputSource.class.getName());
68+
return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options), source));
6669
} catch (XMLStreamException e) {
6770
throw new ToolchainsParseException(
6871
e.getMessage(),
@@ -77,7 +80,8 @@ public PersistedToolchains read(InputStream input, Map<String, ?> options) throw
7780
Objects.requireNonNull(input, "input cannot be null");
7881

7982
try (InputStream in = input) {
80-
return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options)));
83+
InputSource source = (InputSource) options.get(InputSource.class.getName());
84+
return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options), source));
8185
} catch (XMLStreamException e) {
8286
throw new ToolchainsParseException(
8387
e.getMessage(),

src/mdo/reader-stax.vm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,13 @@ public class ${className} {
662662
#end
663663
break;
664664
#elseif ( $field.to && $field.multiplicity == "*" && $Helper.isFlatItems( $field ) )
665+
#if ( $locationTracking )
666+
${field.name}.add(parse${field.toClass.name}(parser, strict, source));
667+
#elseif ( $needXmlContext )
668+
${field.name}.add(parse${field.toClass.name}(parser, strict, context));
669+
#else
665670
${field.name}.add(parse${field.toClass.name}(parser, strict));
671+
#end
666672
break;
667673
#elseif ( $field.to && $field.multiplicity == "*" )
668674
List<$field.to> ${field.name} = new ArrayList<>();

0 commit comments

Comments
 (0)