Repository: maven
Updated Branches:
  refs/heads/master 024a705d4 -> 508e16e23


[MNG-5971] Imported dependencies should be available to inheritance processing

o Updated to stop reporting model problems for intermediate models. For building
  the final model, inheritance and interpolation needs to be performed multiple
  times. Reporting any intermediate model problems is misleading and also leads
  to redundant messages getting reported.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/508e16e2
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/508e16e2
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/508e16e2

Branch: refs/heads/master
Commit: 508e16e23d66de09893d1eb52dff6a1c5ca019b3
Parents: 024a705
Author: Christian Schulte <schu...@apache.org>
Authored: Mon Feb 22 17:08:14 2016 +0100
Committer: Christian Schulte <schu...@apache.org>
Committed: Mon Feb 22 19:50:44 2016 +0100

----------------------------------------------------------------------
 .../model/building/DefaultModelBuilder.java     | 400 ++++++++++---------
 .../building/DefaultModelProblemCollector.java  |  18 +-
 2 files changed, 214 insertions(+), 204 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/508e16e2/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
----------------------------------------------------------------------
diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 4471f7d..00ee475 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -384,15 +384,16 @@ public class DefaultModelBuilder
         // interpolation needs to be performed. A temporary model is built in 
phase 1 applying inheritance and
         // interpolation to fill in those values but is not returned. The rest 
of the model building takes place in
         // phase 2.
+        final DefaultModelProblemCollector intermediateProblems = new 
DefaultModelProblemCollector( result );
         final List<Model> intermediateLineage = new ArrayList<>( 
lineage.size() );
         for ( final ModelData modelData : lineage )
         {
             intermediateLineage.add( modelData.getModel().clone() );
         }
-        assembleInheritance( intermediateLineage, request, problems );
+        assembleInheritance( intermediateLineage, request, 
intermediateProblems );
 
         Model intermediateModel = intermediateLineage.get( 0 );
-        intermediateModel = interpolateModel( intermediateModel, request, 
problems );
+        intermediateModel = interpolateModel( intermediateModel, request, 
intermediateProblems );
 
         Model resultModel = resultData.getModel();
 
@@ -434,6 +435,11 @@ public class DefaultModelBuilder
         // phase 2
         Model resultModel = result.getEffectiveModel();
 
+        // Reset to on-disk values to not suppress any warnings from phase 1.
+        resultModel.setGroupId( result.getRawModel().getGroupId() );
+        resultModel.setArtifactId( result.getRawModel().getArtifactId() );
+        resultModel.setVersion( result.getRawModel().getVersion() );
+
         DefaultModelProblemCollector problems = new 
DefaultModelProblemCollector( result );
         problems.setSource( resultModel );
         problems.setRootModel( resultModel );
@@ -447,6 +453,7 @@ public class DefaultModelBuilder
 
         // [MNG-5971] Imported dependencies should be available to inheritance 
processing
         processImports( lineage, request, problems );
+        problems.setSource( resultModel );
 
         // inheritance assembly
         assembleInheritance( lineage, request, problems );
@@ -667,28 +674,26 @@ public class DefaultModelBuilder
     private void configureResolver( ModelResolver modelResolver, Model model, 
DefaultModelProblemCollector problems,
                                     boolean replaceRepositories )
     {
-        if ( modelResolver == null )
+        if ( modelResolver != null )
         {
-            return;
-        }
-
-        problems.setSource( model );
+            problems.setSource( model );
 
-        List<Repository> repositories = model.getRepositories();
+            List<Repository> repositories = model.getRepositories();
 
-        for ( Repository repository : repositories )
-        {
-            try
-            {
-                modelResolver.addRepository( repository, replaceRepositories );
-            }
-            catch ( InvalidRepositoryException e )
+            for ( Repository repository : repositories )
             {
-                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
-                    setMessage( "Invalid repository " + repository.getId() + 
": " + e.getMessage() ).
-                    setLocation( repository.getLocation( "" ) ).
-                    setException( e ) );
+                try
+                {
+                    modelResolver.addRepository( repository, 
replaceRepositories );
+                }
+                catch ( InvalidRepositoryException e )
+                {
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
+                        setMessage( "Invalid repository " + repository.getId() 
+ ": " + e.getMessage() ).
+                        setLocation( repository.getLocation( "" ) ).
+                        setException( e ) );
 
+                }
             }
         }
     }
@@ -696,54 +701,52 @@ public class DefaultModelBuilder
     private void checkPluginVersions( List<ModelData> lineage, 
ModelBuildingRequest request,
                                       ModelProblemCollector problems )
     {
-        if ( request.getValidationLevel() < 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
+        if ( request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
         {
-            return;
-        }
-
-        Map<String, Plugin> plugins = new HashMap<>();
-        Map<String, String> versions = new HashMap<>();
-        Map<String, String> managedVersions = new HashMap<>();
+            Map<String, Plugin> plugins = new HashMap<>();
+            Map<String, String> versions = new HashMap<>();
+            Map<String, String> managedVersions = new HashMap<>();
 
-        for ( int i = lineage.size() - 1; i >= 0; i-- )
-        {
-            Model model = lineage.get( i ).getModel();
-            Build build = model.getBuild();
-            if ( build != null )
+            for ( int i = lineage.size() - 1; i >= 0; i-- )
             {
-                for ( Plugin plugin : build.getPlugins() )
+                Model model = lineage.get( i ).getModel();
+                Build build = model.getBuild();
+                if ( build != null )
                 {
-                    String key = plugin.getKey();
-                    if ( versions.get( key ) == null )
+                    for ( Plugin plugin : build.getPlugins() )
                     {
-                        versions.put( key, plugin.getVersion() );
-                        plugins.put( key, plugin );
+                        String key = plugin.getKey();
+                        if ( versions.get( key ) == null )
+                        {
+                            versions.put( key, plugin.getVersion() );
+                            plugins.put( key, plugin );
+                        }
                     }
-                }
-                PluginManagement mngt = build.getPluginManagement();
-                if ( mngt != null )
-                {
-                    for ( Plugin plugin : mngt.getPlugins() )
+                    PluginManagement mngt = build.getPluginManagement();
+                    if ( mngt != null )
                     {
-                        String key = plugin.getKey();
-                        if ( managedVersions.get( key ) == null )
+                        for ( Plugin plugin : mngt.getPlugins() )
                         {
-                            managedVersions.put( key, plugin.getVersion() );
+                            String key = plugin.getKey();
+                            if ( managedVersions.get( key ) == null )
+                            {
+                                managedVersions.put( key, plugin.getVersion() 
);
+                            }
                         }
                     }
                 }
             }
-        }
 
-        for ( String key : versions.keySet() )
-        {
-            if ( versions.get( key ) == null && managedVersions.get( key ) == 
null )
+            for ( String key : versions.keySet() )
             {
-                InputLocation location = plugins.get( key ).getLocation( "" );
-                problems.add( new ModelProblemCollectorRequest( 
Severity.WARNING, Version.V20 ).
-                    setMessage( "'build.plugins.plugin.version' for " + key + 
" is missing." ).
-                    setLocation( location ) );
+                if ( versions.get( key ) == null && managedVersions.get( key ) 
== null )
+                {
+                    InputLocation location = plugins.get( key ).getLocation( 
"" );
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.WARNING, Version.V20 ).
+                        setMessage( "'build.plugins.plugin.version' for " + 
key + " is missing." ).
+                        setLocation( location ) );
 
+                }
             }
         }
     }
@@ -785,12 +788,15 @@ public class DefaultModelBuilder
             child.setRepositories( repositories );
         }
 
+        final DefaultModelProblemCollector intermediateProblems =
+            new DefaultModelProblemCollector( new DefaultModelBuildingResult() 
);
+
         // Interpolates the intermediate model.
         for ( int i = 0, s0 = intermediateLineage.size(); i < s0; i++ )
         {
             final Model model = intermediateLineage.get( i );
-            problems.setSource( model );
-            this.interpolateModel( model, request, problems );
+            intermediateProblems.setSource( model );
+            this.interpolateModel( model, request, intermediateProblems );
         }
 
         // Exchanges 'import' scope dependencies in the original lineage with 
possibly interpolated values.
@@ -1250,206 +1256,208 @@ public class DefaultModelBuilder
     {
         DependencyManagement depMngt = model.getDependencyManagement();
 
-        if ( depMngt == null )
+        if ( depMngt != null )
         {
-            return;
-        }
-
-        problems.setSource( model );
-
-        String importing = model.getGroupId() + ':' + model.getArtifactId() + 
':' + model.getVersion();
+            problems.setSource( model );
 
-        importIds.add( importing );
+            String importing = model.getGroupId() + ':' + 
model.getArtifactId() + ':' + model.getVersion();
 
-        final WorkspaceModelResolver workspaceResolver = 
request.getWorkspaceModelResolver();
-        final ModelResolver modelResolver = request.getModelResolver();
+            importIds.add( importing );
 
-        ModelBuildingRequest importRequest = null;
+            final WorkspaceModelResolver workspaceResolver = 
request.getWorkspaceModelResolver();
+            final ModelResolver modelResolver = request.getModelResolver();
 
-        List<DependencyManagement> importMngts = null;
+            ModelBuildingRequest importRequest = null;
 
-        for ( Iterator<Dependency> it = depMngt.getDependencies().iterator(); 
it.hasNext(); )
-        {
-            Dependency dependency = it.next();
+            List<DependencyManagement> importMngts = null;
 
-            if ( !"pom".equals( dependency.getType() ) || !scope.equals( 
dependency.getScope() ) )
+            for ( Iterator<Dependency> it = 
depMngt.getDependencies().iterator(); it.hasNext(); )
             {
-                continue;
-            }
+                Dependency dependency = it.next();
 
-            it.remove();
+                if ( !"pom".equals( dependency.getType() ) || !scope.equals( 
dependency.getScope() ) )
+                {
+                    continue;
+                }
 
-            String groupId = dependency.getGroupId();
-            String artifactId = dependency.getArtifactId();
-            String version = dependency.getVersion();
+                it.remove();
 
-            if ( groupId == null || groupId.length() <= 0 )
-            {
-                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE )
-                    .setMessage( 
"'dependencyManagement.dependencies.dependency.groupId' for "
-                                     + dependency.getManagementKey() + " is 
missing." )
-                    .setLocation( dependency.getLocation( "" ) ) );
-                continue;
-            }
-            if ( artifactId == null || artifactId.length() <= 0 )
-            {
-                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
-                    setMessage( 
"'dependencyManagement.dependencies.dependency.artifactId' for "
-                                    + dependency.getManagementKey() + " is 
missing." ).
-                    setLocation( dependency.getLocation( "" ) ) );
+                String groupId = dependency.getGroupId();
+                String artifactId = dependency.getArtifactId();
+                String version = dependency.getVersion();
 
-                continue;
-            }
-            if ( version == null || version.length() <= 0 )
-            {
-                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
-                    setMessage( 
"'dependencyManagement.dependencies.dependency.version' for "
-                                    + dependency.getManagementKey() + " is 
missing." ).
-                    setLocation( dependency.getLocation( "" ) ) );
-
-                continue;
-            }
+                if ( groupId == null || groupId.length() <= 0 )
+                {
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE )
+                        .setMessage( 
"'dependencyManagement.dependencies.dependency.groupId' for "
+                                         + dependency.getManagementKey() + " 
is missing." )
+                        .setLocation( dependency.getLocation( "" ) ) );
 
-            String imported = groupId + ':' + artifactId + ':' + version;
+                    continue;
+                }
+                if ( artifactId == null || artifactId.length() <= 0 )
+                {
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
+                        setMessage( 
"'dependencyManagement.dependencies.dependency.artifactId' for "
+                                        + dependency.getManagementKey() + " is 
missing." ).
+                        setLocation( dependency.getLocation( "" ) ) );
 
-            if ( importIds.contains( imported ) )
-            {
-                String message = "The dependencies of type=pom and scope=" + 
scope + " form a cycle: ";
-                for ( String modelId : importIds )
+                    continue;
+                }
+                if ( version == null || version.length() <= 0 )
                 {
-                    message += modelId + " -> ";
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
+                        setMessage( 
"'dependencyManagement.dependencies.dependency.version' for "
+                                        + dependency.getManagementKey() + " is 
missing." ).
+                        setLocation( dependency.getLocation( "" ) ) );
+
+                    continue;
                 }
-                message += imported;
-                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).setMessage( message ) );
-                continue;
-            }
 
-            DependencyManagement importMngt = getCache( 
request.getModelCache(), groupId, artifactId, version,
-                                                        ModelCacheTag.IMPORT );
+                String imported = groupId + ':' + artifactId + ':' + version;
 
-            if ( importMngt == null )
-            {
-                if ( workspaceResolver == null && modelResolver == null )
+                if ( importIds.contains( imported ) )
                 {
-                    throw new NullPointerException( String.format(
-                        "request.workspaceModelResolver and 
request.modelResolver cannot be null"
-                            + " (parent POM %s and POM %s)",
-                        ModelProblemUtils.toId( groupId, artifactId, version ),
-                        ModelProblemUtils.toSourceHint( model ) ) );
+                    String message = "The dependencies of type=pom and scope=" 
+ scope + " form a cycle: ";
+                    for ( String modelId : importIds )
+                    {
+                        message += modelId + " -> ";
+                    }
+                    message += imported;
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
+                        setMessage( message ) );
 
+                    continue;
                 }
 
-                Model importModel = null;
-                if ( workspaceResolver != null )
+                DependencyManagement importMngt = getCache( 
request.getModelCache(), groupId, artifactId, version,
+                                                            
ModelCacheTag.IMPORT );
+
+                if ( importMngt == null )
                 {
-                    try
+                    if ( workspaceResolver == null && modelResolver == null )
                     {
-                        importModel = workspaceResolver.resolveEffectiveModel( 
groupId, artifactId, version );
+                        throw new NullPointerException( String.format(
+                            "request.workspaceModelResolver and 
request.modelResolver cannot be null"
+                                + " (parent POM %s and POM %s)",
+                            ModelProblemUtils.toId( groupId, artifactId, 
version ),
+                            ModelProblemUtils.toSourceHint( model ) ) );
+
                     }
-                    catch ( UnresolvableModelException e )
+
+                    Model importModel = null;
+                    if ( workspaceResolver != null )
                     {
-                        problems.add( new ModelProblemCollectorRequest( 
Severity.FATAL, Version.BASE ).
-                            setMessage( e.getMessage().toString() ).
-                            setException( e ) );
+                        try
+                        {
+                            importModel = 
workspaceResolver.resolveEffectiveModel( groupId, artifactId, version );
+                        }
+                        catch ( UnresolvableModelException e )
+                        {
+                            problems.add( new ModelProblemCollectorRequest( 
Severity.FATAL, Version.BASE ).
+                                setMessage( e.getMessage() ).
+                                setException( e ) );
 
-                        continue;
+                            continue;
+                        }
                     }
-                }
 
-                // no workspace resolver or workspace resolver returned null 
(i.e. model not in workspace)
-                if ( importModel == null )
-                {
-                    final ModelSource importSource;
-                    try
+                    // no workspace resolver or workspace resolver returned 
null (i.e. model not in workspace)
+                    if ( importModel == null )
                     {
-                        dependency = dependency.clone();
-                        importSource = modelResolver.resolveModel( dependency 
);
-                        final String resolvedId =
-                            dependency.getGroupId() + ':' + 
dependency.getArtifactId() + ':' + dependency.getVersion();
+                        final ModelSource importSource;
+                        try
+                        {
+                            dependency = dependency.clone();
+                            importSource = modelResolver.resolveModel( 
dependency );
+                            final String resolvedId =
+                                dependency.getGroupId() + ':' + 
dependency.getArtifactId() + ':'
+                                    + dependency.getVersion();
 
-                        if ( !imported.equals( resolvedId ) && 
importIds.contains( resolvedId ) )
+                            if ( !imported.equals( resolvedId ) && 
importIds.contains( resolvedId ) )
+                            {
+                                // A version range has been resolved to a 
cycle.
+                                String message = "The dependencies of type=pom 
and scope=" + scope + " form a cycle: ";
+                                for ( String modelId : importIds )
+                                {
+                                    message += modelId + " -> ";
+                                }
+                                message += resolvedId;
+                                problems.add( new 
ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).
+                                    setMessage( message ) );
+
+                                continue;
+                            }
+                        }
+                        catch ( UnresolvableModelException e )
                         {
-                            // A version range has been resolved to a cycle.
-                            String message = "The dependencies of type=pom and 
scope=" + scope + " form a cycle: ";
-                            for ( String modelId : importIds )
+                            StringBuilder buffer = new StringBuilder( 256 );
+                            buffer.append( "Non-resolvable " + scope + " POM" 
);
+                            if ( !containsCoordinates( e.getMessage(), 
groupId, artifactId, version ) )
                             {
-                                message += modelId + " -> ";
+                                buffer.append( ' ' ).append( 
ModelProblemUtils.toId( groupId, artifactId, version ) );
                             }
-                            message += resolvedId;
+                            buffer.append( ": " ).append( e.getMessage() );
+
                             problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
-                                setMessage( message ) );
+                                setMessage( buffer.toString() ).
+                                setLocation( dependency.getLocation( "" ) ).
+                                setException( e ) );
 
                             continue;
                         }
-                    }
-                    catch ( UnresolvableModelException e )
-                    {
-                        StringBuilder buffer = new StringBuilder( 256 );
-                        buffer.append( "Non-resolvable " + scope + " POM" );
-                        if ( !containsCoordinates( e.getMessage(), groupId, 
artifactId, version ) )
+
+                        if ( importRequest == null )
                         {
-                            buffer.append( ' ' ).append( 
ModelProblemUtils.toId( groupId, artifactId, version ) );
+                            importRequest = new DefaultModelBuildingRequest();
+                            importRequest.setValidationLevel( 
ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
+                            importRequest.setModelCache( 
request.getModelCache() );
+                            importRequest.setSystemProperties( 
request.getSystemProperties() );
+                            importRequest.setUserProperties( 
request.getUserProperties() );
+                            importRequest.setLocationTracking( 
request.isLocationTracking() );
                         }
-                        buffer.append( ": " ).append( e.getMessage() );
 
-                        problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).
-                            setMessage( buffer.toString() ).
-                            setLocation( dependency.getLocation( "" ) ).
-                            setException( e ) );
+                        importRequest.setModelSource( importSource );
+                        importRequest.setModelResolver( 
modelResolver.newCopy() );
 
-                        continue;
-                    }
+                        final ModelBuildingResult importResult;
+                        try
+                        {
+                            importResult = build( importRequest );
+                        }
+                        catch ( ModelBuildingException e )
+                        {
+                            problems.addAll( e.getProblems() );
+                            continue;
+                        }
 
-                    if ( importRequest == null )
-                    {
-                        importRequest = new DefaultModelBuildingRequest();
-                        importRequest.setValidationLevel( 
ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
-                        importRequest.setModelCache( request.getModelCache() );
-                        importRequest.setSystemProperties( 
request.getSystemProperties() );
-                        importRequest.setUserProperties( 
request.getUserProperties() );
-                        importRequest.setLocationTracking( 
request.isLocationTracking() );
+                        problems.addAll( importResult.getProblems() );
+
+                        importModel = importResult.getEffectiveModel();
                     }
 
-                    importRequest.setModelSource( importSource );
-                    importRequest.setModelResolver( modelResolver.newCopy() );
+                    importMngt = importModel.getDependencyManagement();
 
-                    final ModelBuildingResult importResult;
-                    try
+                    if ( importMngt == null )
                     {
-                        importResult = build( importRequest );
+                        importMngt = new DependencyManagement();
                     }
-                    catch ( ModelBuildingException e )
-                    {
-                        problems.addAll( e.getProblems() );
-                        continue;
-                    }
-
-                    problems.addAll( importResult.getProblems() );
 
-                    importModel = importResult.getEffectiveModel();
+                    putCache( request.getModelCache(), groupId, artifactId, 
version, ModelCacheTag.IMPORT, importMngt );
                 }
 
-                importMngt = importModel.getDependencyManagement();
-
-                if ( importMngt == null )
+                if ( importMngts == null )
                 {
-                    importMngt = new DependencyManagement();
+                    importMngts = new ArrayList<>();
                 }
 
-                putCache( request.getModelCache(), groupId, artifactId, 
version, ModelCacheTag.IMPORT, importMngt );
+                importMngts.add( importMngt );
             }
 
-            if ( importMngts == null )
-            {
-                importMngts = new ArrayList<>();
-            }
+            importIds.remove( importing );
 
-            importMngts.add( importMngt );
+            dependencyManagementImporter.importManagement( model, importMngts, 
request, problems );
         }
-
-        importIds.remove( importing );
-
-        dependencyManagementImporter.importManagement( model, importMngts, 
request, problems );
     }
 
     private <T> void putCache( ModelCache modelCache, String groupId, String 
artifactId, String version,

http://git-wip-us.apache.org/repos/asf/maven/blob/508e16e2/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
----------------------------------------------------------------------
diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
index 89d5cb2..16740dc 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
@@ -146,7 +146,7 @@ class DefaultModelProblemCollector
     {
         int line = -1;
         int column = -1;
-        String source = null;
+        String src = null;
         String modelId = null;
 
         if ( req.getLocation() != null )
@@ -156,15 +156,17 @@ class DefaultModelProblemCollector
             if ( req.getLocation().getSource() != null )
             {
                 modelId = req.getLocation().getSource().getModelId();
-                source = req.getLocation().getSource().getLocation();
+                src = req.getLocation().getSource().getLocation();
             }
         }
 
-        if ( modelId == null )
-        {
-            modelId = getModelId();
-            source = getSource();
-        }
+        modelId = modelId != null
+                      ? this.getModelId() + " [" + modelId + "]"
+                      : this.getModelId();
+
+        src = src != null
+                  ? this.getSource() + " [" + src + "]"
+                  : this.getSource();
 
         if ( line <= 0 && column <= 0 && req.getException() instanceof 
ModelParseException )
         {
@@ -174,7 +176,7 @@ class DefaultModelProblemCollector
         }
 
         ModelProblem problem =
-            new DefaultModelProblem( req.getMessage(), req.getSeverity(), 
req.getVersion(), source, line, column,
+            new DefaultModelProblem( req.getMessage(), req.getSeverity(), 
req.getVersion(), src, line, column,
                                      modelId, req.getException() );
 
         add( problem );

Reply via email to