From d08cb28d5353b1dc71ffd314b23c08a7fefec484 Mon Sep 17 00:00:00 2001 From: Christian Schulte Date: Mon, 14 Dec 2015 04:57:47 +0100 Subject: [PATCH] [MNG-6164] Collections inconsistently immutable. --- .../maven/artifact/DefaultArtifact.java | 2 +- .../artifact/versioning/VersionRange.java | 2 +- .../repository/DefaultArtifactRepository.java | 2 +- .../repository/MetadataResolutionResult.java | 27 +++++++++++++------ .../repository/MavenArtifactRepository.java | 2 +- .../resolver/ArtifactResolutionResult.java | 27 +++++++++++++------ .../artifact/resolver/ResolutionNode.java | 1 + .../maven/exception/ExceptionSummary.java | 5 +++- .../DefaultMavenExecutionResult.java | 6 +++-- .../lifecycle/internal/MojoExecutor.java | 18 +++++++------ .../internal/DefaultMavenPluginManager.java | 2 +- .../prefix/DefaultPluginPrefixRequest.java | 4 +-- .../version/DefaultPluginVersionRequest.java | 2 +- .../DefaultDependencyResolutionResult.java | 5 +++- .../maven/project/DefaultProjectBuilder.java | 3 ++- .../project/DefaultProjectRealmCache.java | 4 ++- .../apache/maven/project/MavenProject.java | 19 +++++++------ .../project/artifact/ProjectArtifact.java | 7 +++-- .../java/org/apache/maven/cli/MavenCli.java | 4 ++- .../building/ModelBuildingException.java | 2 +- 20 files changed, 92 insertions(+), 52 deletions(-) diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java index bd2e8ed1acda..a6d136752b36 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java @@ -272,7 +272,7 @@ public Collection getMetadataList() return Collections.emptyList(); } - return metadataMap.values(); + return Collections.unmodifiableCollection( metadataMap.values() ); } // ---------------------------------------------------------------------- diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java index 56343b2f6dfb..e9196213fb9d 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java @@ -262,7 +262,7 @@ public VersionRange restrict( VersionRange restriction ) } else { - restrictions = intersection( r1, r2 ); + restrictions = Collections.unmodifiableList( intersection( r1, r2 ) ); } ArtifactVersion version = null; diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java b/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java index f5db5ef63496..16b82c507005 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java @@ -256,7 +256,7 @@ public void setMirroredRepositories( List mirroredRepositori { if ( mirroredRepositories != null ) { - this.mirroredRepositories = mirroredRepositories; + this.mirroredRepositories = Collections.unmodifiableList( mirroredRepositories ); } else { diff --git a/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionResult.java b/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionResult.java index 28fb723e064f..8abaab35ff75 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionResult.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionResult.java @@ -118,7 +118,10 @@ public boolean hasMissingArtifacts() public List getMissingArtifacts() { - return missingArtifacts == null ? Collections.emptyList() : missingArtifacts; + return missingArtifacts == null + ? Collections.emptyList() + : Collections.unmodifiableList( missingArtifacts ); + } public MetadataResolutionResult addMissingArtifact( Artifact artifact ) @@ -148,7 +151,10 @@ public boolean hasExceptions() public List getExceptions() { - return exceptions == null ? Collections.emptyList() : exceptions; + return exceptions == null + ? Collections.emptyList() + : Collections.unmodifiableList( exceptions ); + } // ------------------------------------------------------------------------ @@ -185,7 +191,10 @@ public OverConstrainedVersionException getVersionRangeViolation( int i ) public List getVersionRangeViolations() { - return versionRangeViolations == null ? Collections.emptyList() : versionRangeViolations; + return versionRangeViolations == null + ? Collections.emptyList() + : Collections.unmodifiableList( versionRangeViolations ); + } // ------------------------------------------------------------------------ @@ -217,8 +226,10 @@ public ArtifactResolutionException getMetadataResolutionException( int i ) public List getMetadataResolutionExceptions() { - return metadataResolutionExceptions == null ? Collections.emptyList() - : metadataResolutionExceptions; + return metadataResolutionExceptions == null + ? Collections.emptyList() + : Collections.unmodifiableList( metadataResolutionExceptions ); + } // ------------------------------------------------------------------------ @@ -246,7 +257,7 @@ public List getErrorArtifactExceptions() return Collections.emptyList(); } - return errorArtifactExceptions; + return Collections.unmodifiableList( errorArtifactExceptions ); } // ------------------------------------------------------------------------ @@ -283,7 +294,7 @@ public List getCircularDependencyExceptions() return Collections.emptyList(); } - return circularDependencyExceptions; + return Collections.unmodifiableList( circularDependencyExceptions ); } // ------------------------------------------------------------------------ @@ -297,7 +308,7 @@ public List getRepositories() return Collections.emptyList(); } - return repositories; + return Collections.unmodifiableList( repositories ); } public MetadataResolutionResult setRepositories( final List repositories ) diff --git a/maven-core/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java b/maven-core/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java index 9765c733658b..8c21d65818aa 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java @@ -401,7 +401,7 @@ public void setMirroredRepositories( List mirroredRepositori { if ( mirroredRepositories != null ) { - this.mirroredRepositories = mirroredRepositories; + this.mirroredRepositories = Collections.unmodifiableList( mirroredRepositories ); } else { diff --git a/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java b/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java index 6de04f3cbdaa..ffae1d35601b 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java @@ -130,7 +130,10 @@ public boolean hasMissingArtifacts() public List getMissingArtifacts() { - return missingArtifacts == null ? Collections.emptyList() : missingArtifacts; + return missingArtifacts == null + ? Collections.emptyList() + : Collections.unmodifiableList( missingArtifacts ); + } public ArtifactResolutionResult addMissingArtifact( Artifact artifact ) @@ -165,7 +168,10 @@ public boolean hasExceptions() public List getExceptions() { - return exceptions == null ? Collections.emptyList() : exceptions; + return exceptions == null + ? Collections.emptyList() + : Collections.unmodifiableList( exceptions ); + } // ------------------------------------------------------------------------ @@ -202,7 +208,10 @@ public OverConstrainedVersionException getVersionRangeViolation( int i ) public List getVersionRangeViolations() { - return versionRangeViolations == null ? Collections.emptyList() : versionRangeViolations; + return versionRangeViolations == null + ? Collections.emptyList() + : Collections.unmodifiableList( versionRangeViolations ); + } // ------------------------------------------------------------------------ @@ -234,8 +243,10 @@ public ArtifactResolutionException getMetadataResolutionException( int i ) public List getMetadataResolutionExceptions() { - return metadataResolutionExceptions == null ? Collections.emptyList() - : metadataResolutionExceptions; + return metadataResolutionExceptions == null + ? Collections.emptyList() + : Collections.unmodifiableList( metadataResolutionExceptions ); + } // ------------------------------------------------------------------------ @@ -267,7 +278,7 @@ public List getErrorArtifactExceptions() return Collections.emptyList(); } - return errorArtifactExceptions; + return Collections.unmodifiableList( errorArtifactExceptions ); } // ------------------------------------------------------------------------ @@ -304,7 +315,7 @@ public List getCircularDependencyExceptions() return Collections.emptyList(); } - return circularDependencyExceptions; + return Collections.unmodifiableList( circularDependencyExceptions ); } // ------------------------------------------------------------------------ @@ -318,7 +329,7 @@ public List getRepositories() return Collections.emptyList(); } - return repositories; + return Collections.unmodifiableList( repositories ); } public ArtifactResolutionResult setRepositories( final List repositories ) diff --git a/maven-core/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java b/maven-core/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java index cd824c4fafcd..37ec35b28587 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java @@ -99,6 +99,7 @@ public void addDependencies( Set artifacts, List r children.add( new ResolutionNode( a, remoteRepositories, this ) ); } + children = Collections.unmodifiableList( children ); } else { diff --git a/maven-core/src/main/java/org/apache/maven/exception/ExceptionSummary.java b/maven-core/src/main/java/org/apache/maven/exception/ExceptionSummary.java index dcc376a4b9f2..6615af61ceee 100644 --- a/maven-core/src/main/java/org/apache/maven/exception/ExceptionSummary.java +++ b/maven-core/src/main/java/org/apache/maven/exception/ExceptionSummary.java @@ -53,7 +53,10 @@ public ExceptionSummary( Throwable exception, String message, String reference, this.exception = exception; this.message = ( message != null ) ? message : ""; this.reference = ( reference != null ) ? reference : ""; - this.children = ( children != null ) ? children : Collections.emptyList(); + this.children = ( children != null ) + ? Collections.unmodifiableList( children ) + : Collections.emptyList(); + } public Throwable getException() diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java index 87d86766271d..112a064923a2 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java +++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java @@ -64,8 +64,10 @@ public MavenExecutionResult setTopologicallySortedProjects( List t public List getTopologicallySortedProjects() { - return null == topologicallySortedProjects ? Collections.emptyList() - : topologicallySortedProjects; + return null == topologicallySortedProjects + ? Collections.emptyList() + : Collections.unmodifiableList( topologicallySortedProjects ); + } public DependencyResolutionResult getDependencyResolutionResult() diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java index 766aed146914..b78f54dc42f3 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java @@ -105,32 +105,34 @@ private void collectDependencyRequirements( Set scopesToResolve, Set toScopes( String classpath ) { + Collection scopes = Collections.emptyList(); + if ( StringUtils.isNotEmpty( classpath ) ) { if ( Artifact.SCOPE_COMPILE.equals( classpath ) ) { - return Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED ); + scopes = Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED ); } else if ( Artifact.SCOPE_RUNTIME.equals( classpath ) ) { - return Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_RUNTIME ); + scopes = Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_RUNTIME ); } else if ( Artifact.SCOPE_COMPILE_PLUS_RUNTIME.equals( classpath ) ) { - return Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED, - Artifact.SCOPE_RUNTIME ); + scopes = Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED, + Artifact.SCOPE_RUNTIME ); } else if ( Artifact.SCOPE_RUNTIME_PLUS_SYSTEM.equals( classpath ) ) { - return Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_RUNTIME ); + scopes = Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_RUNTIME ); } else if ( Artifact.SCOPE_TEST.equals( classpath ) ) { - return Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED, - Artifact.SCOPE_RUNTIME, Artifact.SCOPE_TEST ); + scopes = Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED, + Artifact.SCOPE_RUNTIME, Artifact.SCOPE_TEST ); } } - return Collections.emptyList(); + return Collections.unmodifiableCollection( scopes ); } public void execute( MavenSession session, List mojoExecutions, ProjectIndex projectIndex ) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java index 612684ba4815..b2537c32c232 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java @@ -460,7 +460,7 @@ private List toMavenArtifacts( DependencyNode root, PreorderNodeListGe it.remove(); } } - return artifacts; + return Collections.unmodifiableList( artifacts ); } private Map calcImports( MavenProject project, ClassLoader parent, List imports ) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/prefix/DefaultPluginPrefixRequest.java b/maven-core/src/main/java/org/apache/maven/plugin/prefix/DefaultPluginPrefixRequest.java index 7ab86cfd1643..01194c866da3 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/prefix/DefaultPluginPrefixRequest.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/prefix/DefaultPluginPrefixRequest.java @@ -100,7 +100,7 @@ public DefaultPluginPrefixRequest setPluginGroups( List pluginGroups ) { if ( pluginGroups != null ) { - this.pluginGroups = pluginGroups; + this.pluginGroups = Collections.unmodifiableList( pluginGroups ); } else { @@ -131,7 +131,7 @@ public DefaultPluginPrefixRequest setRepositories( List reposi { if ( repositories != null ) { - this.repositories = repositories; + this.repositories = Collections.unmodifiableList( repositories ); } else { diff --git a/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java b/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java index 9907066b9d93..57f4250c631d 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java @@ -140,7 +140,7 @@ public DefaultPluginVersionRequest setRepositories( List repos { if ( repositories != null ) { - this.repositories = repositories; + this.repositories = Collections.unmodifiableList( repositories ); } else { diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultDependencyResolutionResult.java b/maven-core/src/main/java/org/apache/maven/project/DefaultDependencyResolutionResult.java index dbdf25261d65..509e8b48d9cd 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultDependencyResolutionResult.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultDependencyResolutionResult.java @@ -98,7 +98,10 @@ public void setCollectionErrors( List exceptions ) public List getResolutionErrors( Dependency dependency ) { List errors = resolutionErrors.get( dependency ); - return ( errors != null ) ? errors : Collections.emptyList(); + return ( errors != null ) + ? Collections.unmodifiableList( errors ) + : Collections.emptyList(); + } public void setResolutionErrors( Dependency dependency, List errors ) diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java index ac38f5dbf183..4f3e679a4555 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java @@ -794,7 +794,7 @@ private void initProject( MavenProject project, Map projec List deps; DependencyManagement dependencyManagement = project.getDependencyManagement(); if ( ( dependencyManagement != null ) && ( ( deps = dependencyManagement.getDependencies() ) != null ) - && ( deps.size() > 0 ) ) + && ( deps.size() > 0 ) ) { map = new HashMap<>(); for ( Dependency d : dependencyManagement.getDependencies() ) @@ -806,6 +806,7 @@ private void initProject( MavenProject project, Map projec map.put( d.getManagementKey(), artifact ); } } + map = Collections.unmodifiableMap( map ); } else { diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java index 9d66eb0eeded..85bd001a8f7b 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java @@ -49,7 +49,9 @@ protected static class CacheKey public CacheKey( List extensionRealms ) { - this.extensionRealms = ( extensionRealms != null ) ? extensionRealms : Collections.emptyList(); + this.extensionRealms = ( extensionRealms != null ) + ? Collections.unmodifiableList( extensionRealms ) + : Collections.emptyList(); this.hashCode = this.extensionRealms.hashCode(); } diff --git a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java index 80a51935ea5b..7b9aead25cbe 100644 --- a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java +++ b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java @@ -778,7 +778,7 @@ public List getBuildPlugins() { return Collections.emptyList(); } - return getModel().getBuild().getPlugins(); + return Collections.unmodifiableList( getModel().getBuild().getPlugins() ); } public List getModules() @@ -1079,7 +1079,7 @@ public List getBuildExtensions() } else { - return build.getExtensions(); + return Collections.unmodifiableList( build.getExtensions() ); } } @@ -1604,7 +1604,7 @@ public List getCompileDependencies() { // TODO let the scope handler deal with this if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) - || Artifact.SCOPE_SYSTEM.equals( a.getScope() ) ) + || Artifact.SCOPE_SYSTEM.equals( a.getScope() ) ) { Dependency dependency = new Dependency(); @@ -1618,7 +1618,7 @@ public List getCompileDependencies() list.add( dependency ); } } - return list; + return Collections.unmodifiableList( list ); } @Deprecated @@ -1662,7 +1662,7 @@ public List getTestDependencies() list.add( dependency ); } - return list; + return Collections.unmodifiableList( list ); } @Deprecated // used by the Maven ITs @@ -1677,7 +1677,7 @@ public List getRuntimeDependencies() List list = new ArrayList<>( artifacts.size() ); - for ( Artifact a : getArtifacts() ) + for ( Artifact a : getArtifacts() ) { // TODO let the scope handler deal with this if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_RUNTIME.equals( a.getScope() ) ) @@ -1694,7 +1694,7 @@ public List getRuntimeDependencies() list.add( dependency ); } } - return list; + return Collections.unmodifiableList( list ); } @Deprecated @@ -1790,7 +1790,7 @@ public List getSystemDependencies() list.add( dependency ); } } - return list; + return Collections.unmodifiableList( list ); } @Deprecated @@ -1862,8 +1862,7 @@ public List getReportPlugins() { return Collections.emptyList(); } - return getModel().getReporting().getPlugins(); - + return Collections.unmodifiableList( getModel().getReporting().getPlugins() ); } @Deprecated diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java b/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java index 924523f985be..7113dd31e202 100644 --- a/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java +++ b/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java @@ -55,8 +55,11 @@ public List getDependencies() public List getManagedDependencies() { - DependencyManagement depMgmt = project.getDependencyManagement(); - return ( depMgmt != null ) ? depMgmt.getDependencies() : Collections.emptyList(); + DependencyManagement depMngt = project.getDependencyManagement(); + return ( depMngt != null ) + ? Collections.unmodifiableList( depMngt.getDependencies() ) + : Collections.emptyList(); + } static class PomArtifactHandler diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java index 977f174934eb..152836c8edfa 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java @@ -751,7 +751,9 @@ protected void configure() BootstrapCoreExtensionManager resolver = container.lookup( BootstrapCoreExtensionManager.class ); - return resolver.loadCoreExtensions( request, providedArtifacts, extensions ); + return Collections.unmodifiableList( resolver.loadCoreExtensions( request, providedArtifacts, + extensions ) ); + } finally { diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java index 434cb591a27d..b5274382be50 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java @@ -136,7 +136,7 @@ public List getProblems() { return Collections.emptyList(); } - return result.getProblems(); + return Collections.unmodifiableList( result.getProblems() ); } private static String toMessage( ModelBuildingResult result )