You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/11/17 23:05:29 UTC
svn commit: r881563 - in /maven/maven-3/trunk:
maven-compat/src/main/java/org/apache/maven/project/
maven-core/src/main/java/org/apache/maven/project/
maven-core/src/test/java/org/apache/maven/project/
maven-core/src/test/java/org/apache/maven/reposito...
Author: bentmann
Date: Tue Nov 17 22:05:28 2009
New Revision: 881563
URL: http://svn.apache.org/viewvc?rev=881563&view=rev
Log:
[MNG-4450] [regression] Stub project for missing dependency POMs is not properly created
Added:
maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml (with props)
maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml (with props)
maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/ (with props)
maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml (with props)
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java (with props)
Modified:
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Nov 17 22:05:28 2009
@@ -23,10 +23,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
import org.apache.maven.execution.MavenSession;
-import org.apache.maven.model.DistributionManagement;
-import org.apache.maven.model.Model;
import org.apache.maven.model.Repository;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelBuildingRequest;
@@ -64,12 +61,12 @@
return projectBuilder.build( pomFile, configuration ).getProject();
}
- public MavenProject buildFromRepository( Artifact artifact, ProjectBuilderConfiguration configuration )
+ public MavenProject buildFromRepository( Artifact artifact, ProjectBuilderConfiguration configuration, boolean allowStubModel )
throws ProjectBuildingException
{
normalizeToArtifactRepositories( configuration );
- return projectBuilder.build( artifact, configuration ).getProject();
+ return projectBuilder.build( artifact, allowStubModel, configuration ).getProject();
}
private void normalizeToArtifactRepositories( ProjectBuilderConfiguration configuration )
@@ -152,7 +149,7 @@
try
{
- return buildFromRepository( artifact, configuration );
+ return buildFromRepository( artifact, configuration, allowStubModel );
}
catch ( ProjectBuildingException e )
{
@@ -160,42 +157,11 @@
{
throw new InvalidProjectModelException( e.getProjectId(), e.getMessage(), e.getPomFile() );
}
- else if ( e.getCause() instanceof MultipleArtifactsNotFoundException )
- {
- if ( allowStubModel )
- {
- MavenProject stubProject = new MavenProject( createStubModel( artifact ) );
- stubProject.setParent( buildStandaloneSuperProject( configuration ) );
- return stubProject;
- }
- }
throw e;
}
}
- private Model createStubModel( Artifact projectArtifact )
- {
- Model model = new Model();
-
- model.setModelVersion( "4.0.0" );
-
- model.setArtifactId( projectArtifact.getArtifactId() );
-
- model.setGroupId( projectArtifact.getGroupId() );
-
- model.setVersion( projectArtifact.getVersion() );
-
- // TODO: not correct in some instances
- model.setPackaging( projectArtifact.getType() );
-
- model.setDistributionManagement( new DistributionManagement() );
-
- model.getDistributionManagement().setStatus( "generated" );
-
- return model;
- }
-
public MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ProjectBuildingException
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/MavenProjectBuilder.java Tue Nov 17 22:05:28 2009
@@ -38,7 +38,7 @@
throws ProjectBuildingException;
//TODO remote-resources-plugin
- MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, boolean force )
+ MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, boolean allowStubModel )
throws ProjectBuildingException;
// TODO: this is only to provide a project for plugins that don't need a project to execute but need some
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Tue Nov 17 22:05:28 2009
@@ -38,6 +38,8 @@
import org.apache.maven.model.building.ModelBuildingResult;
import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.model.building.ModelProcessor;
+import org.apache.maven.model.building.ModelSource;
+import org.apache.maven.model.building.StringModelSource;
import org.apache.maven.model.building.UrlModelSource;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.project.artifact.ProjectArtifact;
@@ -77,13 +79,12 @@
public ProjectBuildingResult build( File pomFile, ProjectBuildingRequest configuration )
throws ProjectBuildingException
{
- return build( pomFile, true, configuration );
+ return build( pomFile, new FileModelSource( pomFile ), configuration );
}
- private ProjectBuildingResult build( File pomFile, boolean localProject, ProjectBuildingRequest configuration )
+ private ProjectBuildingResult build( File pomFile, ModelSource modelSource, ProjectBuildingRequest configuration )
throws ProjectBuildingException
{
-
ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
try
@@ -102,14 +103,8 @@
new DefaultModelBuildingListener( project, projectBuildingHelper, configuration );
request.setModelBuildingListener( listener );
- if ( localProject )
- {
- request.setPomFile( pomFile );
- }
- else
- {
- request.setModelSource( new FileModelSource( pomFile ) );
- }
+ request.setPomFile( pomFile );
+ request.setModelSource( modelSource );
ModelBuildingResult result;
try
@@ -193,6 +188,12 @@
public ProjectBuildingResult build( Artifact artifact, ProjectBuildingRequest configuration )
throws ProjectBuildingException
{
+ return build( artifact, false, configuration );
+ }
+
+ public ProjectBuildingResult build( Artifact artifact, boolean allowStubModel, ProjectBuildingRequest configuration )
+ throws ProjectBuildingException
+ {
if ( !artifact.getType().equals( "pom" ) )
{
artifact = repositorySystem.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
@@ -209,6 +210,11 @@
ArtifactResolutionResult result = repositorySystem.resolve( request );
+ if ( result.hasMissingArtifacts() && allowStubModel )
+ {
+ return build( null, createStubModelSource( artifact ), configuration );
+ }
+
try
{
resolutionErrorHandler.throwErrors( request, result );
@@ -221,7 +227,25 @@
boolean localProject = artifact.getRepository() != null && "reactor".equals( artifact.getRepository().getId() );
- return build( artifact.getFile(), localProject, configuration );
+ File pomFile = artifact.getFile();
+
+ return build( localProject ? pomFile : null, new FileModelSource( pomFile ), configuration );
+ }
+
+ private ModelSource createStubModelSource( Artifact artifact )
+ {
+ StringBuilder buffer = new StringBuilder( 1024 );
+
+ buffer.append( "<?xml version='1.0'?>" );
+ buffer.append( "<project>" );
+ buffer.append( "<modelVersion>4.0.0</modelVersion>" );
+ buffer.append( "<groupId>" ).append( artifact.getGroupId() ).append( "</groupId>" );
+ buffer.append( "<artifactId>" ).append( artifact.getArtifactId() ).append( "</artifactId>" );
+ buffer.append( "<version>" ).append( artifact.getBaseVersion() ).append( "</version>" );
+ buffer.append( "<packaging>" ).append( artifact.getType() ).append( "</packaging>" );
+ buffer.append( "</project>" );
+
+ return new StringModelSource( buffer, artifact.getId() );
}
/**
@@ -233,35 +257,10 @@
public ProjectBuildingResult buildStandaloneSuperProject( ProjectBuildingRequest config )
throws ProjectBuildingException
{
- ModelBuildingRequest request = getModelBuildingRequest( config, null );
-
- MavenProject standaloneProject = new MavenProject( repositorySystem, this, config );
-
- DefaultModelBuildingListener listener =
- new DefaultModelBuildingListener( standaloneProject, projectBuildingHelper, config );
- request.setModelBuildingListener( listener );
-
- request.setModelSource( new UrlModelSource( getClass().getResource( "standalone.xml" ) ) );
-
- ModelBuildingResult result;
- try
- {
- result = modelBuilder.build( request );
- }
- catch ( ModelBuildingException e )
- {
- throw new ProjectBuildingException( "[standalone]", "Failed to build standalone project", e );
- }
-
- standaloneProject.setModel( result.getEffectiveModel() );
- standaloneProject.setOriginalModel( result.getRawModel() );
-
- standaloneProject.setActiveProfiles( result.getActiveExternalProfiles() );
- standaloneProject.setInjectedProfileIds( "external", getProfileIds( result.getActiveExternalProfiles() ) );
-
- standaloneProject.setExecutionRoot( true );
-
- return new DefaultProjectBuildingResult( standaloneProject, result.getProblems(), null );
+ ProjectBuildingResult result =
+ build( null, new UrlModelSource( getClass().getResource( "standalone.xml" ) ), config );
+ result.getProject().setExecutionRoot( true );
+ return result;
}
public List<ProjectBuildingResult> build( List<File> pomFiles, boolean recursive, ProjectBuildingRequest config )
@@ -493,10 +492,13 @@
project.getPackaging() );
project.setArtifact( projectArtifact );
- Build build = project.getBuild();
- project.addScriptSourceRoot( build.getScriptSourceDirectory() );
- project.addCompileSourceRoot( build.getSourceDirectory() );
- project.addTestCompileSourceRoot( build.getTestSourceDirectory() );
+ if ( project.getFile() != null )
+ {
+ Build build = project.getBuild();
+ project.addScriptSourceRoot( build.getScriptSourceDirectory() );
+ project.addCompileSourceRoot( build.getSourceDirectory() );
+ project.addTestCompileSourceRoot( build.getTestSourceDirectory() );
+ }
List<Profile> activeProfiles = new ArrayList<Profile>();
activeProfiles.addAll( result.getActivePomProfiles( result.getModelIds().get( 0 ) ) );
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java Tue Nov 17 22:05:28 2009
@@ -29,6 +29,9 @@
ProjectBuildingResult build( Artifact projectArtifact, ProjectBuildingRequest request )
throws ProjectBuildingException;
+ ProjectBuildingResult build( Artifact projectArtifact, boolean allowStubModel, ProjectBuildingRequest request )
+ throws ProjectBuildingException;
+
// TODO: this is only to provide a project for plugins that don't need a project to execute but need some
// of the values from a MavenProject. Ideally this should be something internal and nothing outside Maven
// would ever need this so it should not be exposed in a public API
Modified: maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java (original)
+++ maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java Tue Nov 17 22:05:28 2009
@@ -24,6 +24,7 @@
import java.util.Iterator;
import java.util.List;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.codehaus.plexus.util.FileUtils;
@@ -77,6 +78,15 @@
}
}
+ protected MavenProject getProject( Artifact pom, boolean allowStub )
+ throws Exception
+ {
+ ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
+ configuration.setLocalRepository( getLocalRepository() );
+
+ return projectBuilder.build( pom, allowStub, configuration ).getProject();
+ }
+
/**
* Check that we can build ok from the middle pom of a (parent,child,grandchild) heirarchy
* @throws Exception
@@ -104,6 +114,25 @@
assertEquals( "first", project.getBuildPlugins().get( 0 ).getExecutions().get( 0 ).getId() );
}
+ public void testBuildStubModelForMissingRemotePom()
+ throws Exception
+ {
+ Artifact pom = repositorySystem.createProjectArtifact( "org.apache.maven.its", "missing", "0.1" );
+ MavenProject project = getProject( pom, true );
+
+ assertNotNull( project.getArtifactId() );
+
+ assertNotNull( project.getRemoteArtifactRepositories() );
+ assertFalse( project.getRemoteArtifactRepositories().isEmpty() );
+
+ assertNotNull( project.getPluginArtifactRepositories() );
+ assertFalse( project.getPluginArtifactRepositories().isEmpty() );
+
+ assertNull( project.getParent() );
+ assertNull( project.getParentArtifact() );
+
+ assertFalse( project.isExecutionRoot() );
+ }
@Override
protected ArtifactRepository getLocalRepository()
Modified: maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java (original)
+++ maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java Tue Nov 17 22:05:28 2009
@@ -26,14 +26,12 @@
import org.apache.maven.artifact.repository.RepositoryRequest;
import org.apache.maven.model.Model;
import org.apache.maven.model.Repository;
-import org.codehaus.plexus.component.annotations.Component;
/**
* A stub implementation to bypass artifact resolution from repositories.
*
* @author Benjamin Bentmann
*/
-@Component( role = ProjectBuildingHelper.class )
public class EmptyProjectBuildingHelper
implements ProjectBuildingHelper
{
Modified: maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java?rev=881563&r1=881562&r2=881563&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java (original)
+++ maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java Tue Nov 17 22:05:28 2009
@@ -269,6 +269,11 @@
if ( !localFile.exists() )
{
+ if ( request.getRemoteRepositories().isEmpty() )
+ {
+ throw new IOException( localFile + " does not exist and no remote repositories are configured" );
+ }
+
ArtifactRepository remoteRepo = request.getRemoteRepositories().get( 0 );
File remoteFile = new File( remoteRepo.getBasedir(), remoteRepo.pathOf( artifact ) );
Added: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml?rev=881563&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml (added)
+++ maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml Tue Nov 17 22:05:28 2009
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plexus>
+ <components>
+ <component>
+ <role>org.apache.maven.project.ProjectBuildingHelper</role>
+ <implementation>org.apache.maven.project.EmptyProjectBuildingHelper</implementation>
+ </component>
+ </components>
+</plexus>
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/MavenLifecycleParticipantTest.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml?rev=881563&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml (added)
+++ maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml Tue Nov 17 22:05:28 2009
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plexus>
+ <components>
+ <component>
+ <role>org.apache.maven.project.ProjectBuildingHelper</role>
+ <implementation>org.apache.maven.project.EmptyProjectBuildingHelper</implementation>
+ </component>
+ </components>
+</plexus>
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/lifecycle/LifecycleExecutorTest.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/
------------------------------------------------------------------------------
bugtraq:label = Enter issue ID:
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/
------------------------------------------------------------------------------
bugtraq:message = Issue id: %BUGID%
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/
------------------------------------------------------------------------------
bugtraq:number = false
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/
------------------------------------------------------------------------------
bugtraq:url = http://jira.codehaus.org/browse/%BUGID%
Added: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml?rev=881563&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml (added)
+++ maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml Tue Nov 17 22:05:28 2009
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plexus>
+ <components>
+ <component>
+ <role>org.apache.maven.project.ProjectBuildingHelper</role>
+ <implementation>org.apache.maven.project.EmptyProjectBuildingHelper</implementation>
+ </component>
+ </components>
+</plexus>
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/maven-3/trunk/maven-core/src/test/resources/org/apache/maven/plugin/PluginManagerTest.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java?rev=881563&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java (added)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java Tue Nov 17 22:05:28 2009
@@ -0,0 +1,88 @@
+package org.apache.maven.model.building;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Wraps an ordinary {@link CharSequence} as a model source.
+ *
+ * @author Benjamin Bentmann
+ */
+public class StringModelSource
+ implements ModelSource
+{
+
+ private String pom;
+
+ private String location;
+
+ /**
+ * Creates a new model source backed by the specified string.
+ *
+ * @param pom The POM's string representation, may be empty or {@code null}.
+ */
+ public StringModelSource( CharSequence pom )
+ {
+ this( pom, null );
+ }
+
+ /**
+ * Creates a new model source backed by the specified string.
+ *
+ * @param pom The POM's string representation, may be empty or {@code null}.
+ * @param location The location to report for this use, may be {@code null}.
+ */
+ public StringModelSource( CharSequence pom, String location )
+ {
+ this.pom = ( pom != null ) ? pom.toString() : "";
+ this.location = ( location != null ) ? location : "(memory)";
+ }
+
+ public InputStream getInputStream()
+ throws IOException
+ {
+ return new ByteArrayInputStream( pom.getBytes( "UTF-8" ) );
+ }
+
+ public String getLocation()
+ {
+ return location;
+ }
+
+ /**
+ * Gets the character sequence of this model source.
+ *
+ * @return The underlying character stream, never {@code null}.
+ */
+ public String getModel()
+ {
+ return pom;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getLocation();
+ }
+
+}
Propchange: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/StringModelSource.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision