You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2006/01/23 18:00:41 UTC
svn commit: r371593 - in /cocoon/trunk:
cocoon-deployer/src/main/java/org/apache/cocoon/deployer/
cocoon-plugins/cocoon-deployer-plugin-demo/
cocoon-plugins/cocoon-deployer-plugin/
cocoon-plugins/cocoon-deployer-plugin/src/main/java/org/apache/cocoon/m...
Author: reinhard
Date: Mon Jan 23 09:00:31 2006
New Revision: 371593
URL: http://svn.apache.org/viewcvs?rev=371593&view=rev
Log:
add implementation for resolving library dependencies using M2 (untested!); some javadocs, addreadme
Added:
cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/README.txt
Modified:
cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/ArtifactProvider.java
cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/BlockDeployer.java
cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin-demo/pom.xml
cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/src/main/java/org/apache/cocoon/maven/deployer/MavenArtifactProvider.java
Modified: cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/ArtifactProvider.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/ArtifactProvider.java?rev=371593&r1=371592&r2=371593&view=diff
==============================================================================
--- cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/ArtifactProvider.java (original)
+++ cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/ArtifactProvider.java Mon Jan 23 09:00:31 2006
@@ -29,6 +29,6 @@
* This method is used to resolve all dependencies of the passed artifact ids. It supports
* transitive dependencies and makes sure that only one version of an artifact is returned.
*/
- public File[] getArtifact(String[] artifactIds);
+ public File[] getArtifact(String mainArtifactId, String[] artifactIds);
}
Modified: cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/BlockDeployer.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/BlockDeployer.java?rev=371593&r1=371592&r2=371593&view=diff
==============================================================================
--- cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/BlockDeployer.java (original)
+++ cocoon/trunk/cocoon-deployer/src/main/java/org/apache/cocoon/deployer/BlockDeployer.java Mon Jan 23 09:00:31 2006
@@ -100,6 +100,7 @@
}
// get all dependant libraries transitivly
+ // TBD artifactProvider.getArtifact()
// deploy the blocks
CocoonServer cocoonServer = CocoonServerFactory.createServer(
Modified: cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin-demo/pom.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin-demo/pom.xml?rev=371593&r1=371592&r2=371593&view=diff
==============================================================================
--- cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin-demo/pom.xml (original)
+++ cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin-demo/pom.xml Mon Jan 23 09:00:31 2006
@@ -41,6 +41,12 @@
<artifactId>cocoon-block-deployer-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
+ <!--plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <classifier>cob</classifier>
+ </configuration>
+ </plugin-->
</plugins>
</build>
Added: cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/README.txt
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/README.txt?rev=371593&view=auto
==============================================================================
--- cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/README.txt (added)
+++ cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/README.txt Mon Jan 23 09:00:31 2006
@@ -0,0 +1,5 @@
+This project is a minimal sample of a web application that hosts Cocoon blocks. It is used by the
+block deployer if no webapp is available.
+
+When the development of the block deployer has stabilized, this block will become an archetype instead.
+
Modified: cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/src/main/java/org/apache/cocoon/maven/deployer/MavenArtifactProvider.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/src/main/java/org/apache/cocoon/maven/deployer/MavenArtifactProvider.java?rev=371593&r1=371592&r2=371593&view=diff
==============================================================================
--- cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/src/main/java/org/apache/cocoon/maven/deployer/MavenArtifactProvider.java (original)
+++ cocoon/trunk/cocoon-plugins/cocoon-deployer-plugin/src/main/java/org/apache/cocoon/maven/deployer/MavenArtifactProvider.java Mon Jan 23 09:00:31 2006
@@ -16,24 +16,27 @@
*/
package org.apache.cocoon.maven.deployer;
-import org.apache.cocoon.deployer.ArtifactProvider;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.cocoon.deployer.ArtifactProvider;
import org.apache.commons.lang.Validate;
-
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
-
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.logging.Log;
-
import org.apache.maven.project.artifact.MavenMetadataSource;
-import java.io.File;
-import java.util.List;
-
/**
* Implementation of a {@link ArtifactProvider} to bridge from Maven 2
@@ -65,12 +68,12 @@
/**
* Creates a new MavenArtifactProvider object.
*
- * @param artifactResolver DOCUMENT ME!
- * @param artifactFactory DOCUMENT ME!
- * @param localRepository DOCUMENT ME!
- * @param remoteArtifactRepositories DOCUMENT ME!
- * @param metadataSource DOCUMENT ME!
- * @param log DOCUMENT ME!
+ * @param artifactResolver - used to get Maven artifacts from the repositories
+ * @param artifactFactory - used to create Maven artifact skeletons
+ * @param localRepository - get access to the user's local repo
+ * @param remoteArtifactRepositories - get access to all configured remote repositories
+ * @param metadataSource - used to resolve transitive dependencies
+ * @param log - get access to the logger
*/
public MavenArtifactProvider(final ArtifactResolver artifactResolver,
final ArtifactFactory artifactFactory,
@@ -93,33 +96,81 @@
* @see org.apache.cocoon.deployer.ArtifactProvider#getArtifact(java.lang.String)
*/
public final File getArtifact(final String artifactId) {
- try {
- final Artifact artifact = getArtifactFor(artifactId);
-
- return artifact.getFile();
- } catch(Exception ex) {
- this.log.error(ex);
- }
-
- return null;
- }
+ try {
+ final ArtifactBean artifactBean = getArtifactBeanFor(artifactId);
+ final Artifact artifact = this.artifactFactory.createBuildArtifact(
+ artifactBean.getGroupId(),
+ artifactBean.getArtifactId(),
+ artifactBean.getVersion(),
+ artifactBean.getType());
+
+ this.artifactResolver.resolve(artifact, this.remoteArtifactRepositories, this.localRepository);
+
+ this.log.debug("[MavenArtifactProvider.getArtifactFor: found "
+ + artifact.getFile().getAbsolutePath());
+
+ return artifact.getFile();
+ } catch (Exception ex) {
+ this.log.error(ex);
+ }
+ return null;
+ }
/**
- * @see org.apache.cocoon.deployer.ArtifactProvider#getArtifact(java.lang.String[])
- */
- public final File[] getArtifact(String[] artifactIds) {
+ * @see org.apache.cocoon.deployer.ArtifactProvider#getArtifact(java.lang.String[])
+ */
+ public final File[] getArtifact(String mainArtifactId, String[] artifactIds) {
- // FIXME (reinhard) this doesn't use transitive dependency resolving!
+ // !!! this method has never been testet !!!
Validate.notNull(artifactIds, "artifactIds mustn't be null");
Validate.noNullElements(artifactIds, "Quering a 'null'-artifact is not possible");
- final File[] files = new File[artifactIds.length];
-
- for(int i = 0; i < artifactIds.length; i++) {
- files[i] = getArtifact(artifactIds[i]);
- }
-
- return files;
+
+ File[] returnFiles = new File[0];
+ List returnFilesList = new ArrayList();
+
+ try {
+ List dependencies = new ArrayList();
+ Set artifacts = null;
+
+ ArtifactBean mainArtifactBean = getArtifactBeanFor(mainArtifactId);
+ Artifact mainArtifact = artifactFactory.createBuildArtifact(
+ mainArtifactBean.getGroupId(),
+ mainArtifactBean.getArtifactId(),
+ mainArtifactBean.getVersion(),
+ mainArtifactBean.getType());
+
+ for(int i = 0; i < artifactIds.length; i++) {
+ ArtifactBean artifactBean = getArtifactBeanFor(artifactIds[i]);
+ Dependency dependency = new Dependency();
+ dependency.setGroupId(artifactBean.getGroupId());
+ dependency.setArtifactId(artifactBean.getArtifactId());
+ dependency.setVersion(artifactBean.getVersion());
+ dependency.setType(artifactBean.getType());
+ dependencies.add(dependencies);
+ }
+
+ artifacts = MavenMetadataSource.createArtifacts( this.artifactFactory, dependencies, null, null, null );
+
+ Map managedDependencies = Collections.EMPTY_MAP;
+ artifacts = MavenMetadataSource.createArtifacts( artifactFactory, dependencies, null, null, null );
+ ArtifactResolutionResult result = artifactResolver.resolveTransitively(
+ artifacts, mainArtifact, managedDependencies, localRepository,
+ remoteArtifactRepositories, metadataSource);
+
+
+ for(Iterator i = result.getArtifacts().iterator(); i.hasNext();) {
+ Artifact artifact = (Artifact) i.next();
+ returnFilesList.add(artifact.getFile());
+ }
+
+ returnFiles = (File[]) returnFilesList.toArray((new File[returnFilesList.size()]));
+
+ } catch (Exception ex) {
+ this.log.error(ex);
+ }
+
+ return returnFiles;
}
/**
@@ -132,7 +183,7 @@
* @throws ArtifactResolutionException The <code>ArtifactResolutionException</code>
* @throws ArtifactNotFoundException The <code>ArtifactNotFoundException</code>
*/
- private Artifact getArtifactFor(final String artifactSpec)
+ private ArtifactBean getArtifactBeanFor(final String artifactSpec)
throws ArtifactResolutionException, ArtifactNotFoundException {
this.log.debug("[MavenArtifactProvider.getArtifactFor: artifactSpec=" + artifactSpec);
@@ -155,15 +206,38 @@
this.log.debug("[MavenArtifactProvider.getArtifactFor: version=" + version);
this.log.debug("[MavenArtifactProvider.getArtifactFor: type=" + type);
- final Artifact artifact =
- this.artifactFactory.createBuildArtifact(groupId, artifactId, version, type);
-
- this.artifactResolver.resolve(artifact, this.remoteArtifactRepositories,
- this.localRepository);
+ return new ArtifactBean(groupId, artifactId, version, type);
+ }
+
+ /**
+ * Used to hold the data of the artifact data parsing process.
+ */
+ static class ArtifactBean {
+ private String groupId;
+ private String artifactId;
+ private String version;
+ private String type;
+
+ public ArtifactBean(String groupId, String artifactId, String version, String type) {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ this.type = type;
+ }
+
+ public String getArtifactId() {
+ return artifactId;
+ }
+ public String getGroupId() {
+ return groupId;
+ }
+ public String getType() {
+ return type;
+ }
+ public String getVersion() {
+ return version;
+ }
- this.log.debug("[MavenArtifactProvider.getArtifactFor: found " +
- artifact.getFile().getAbsolutePath());
-
- return artifact;
}
+
}