You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/11/23 07:07:02 UTC
svn commit: r719952 - in /geronimo/gshell/trunk:
gshell-application/src/main/java/org/apache/geronimo/gshell/application/
gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/
gshell-assembly/ gshell-assembly/src/main/underlay/...
Author: jdillon
Date: Sat Nov 22 22:07:00 2008
New Revision: 719952
URL: http://svn.apache.org/viewvc?rev=719952&view=rev
Log:
Adding ArtifactResolver abstraction to allow ivy,maven,mercury,whatever to be used to resolve artifacts
Added:
geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java (with props)
geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/
geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/
geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/
geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml (with props)
geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java (with props)
geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/resources/META-INF/gshell/
- copied from r719823, geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/resources/META-INF/spring/
geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/resources/META-INF/gshell/components.xml
- copied unchanged from r719824, geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/resources/META-INF/spring/components.xml
geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java (with props)
geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/
geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/
geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml (with props)
geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java (contents, props changed)
- copied, changed from r719823, geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java
Removed:
geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/resources/META-INF/spring/
Modified:
geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/Application.java
geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java
geronimo/gshell/trunk/gshell-assembly/pom.xml
geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml
geronimo/gshell/trunk/gshell-commands/gshell-admin/src/main/java/org/apache/geronimo/gshell/commands/admin/InstallPluginAction.java
geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/pom.xml
geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/pom.xml
geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/pom.xml
geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/Artifact.java
geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/pom.xml
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationArtifactFilter.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationImpl.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/resources/META-INF/gshell/components.xml
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/pom.xml
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginArtifactFilter.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginManagerImpl.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml
Modified: geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/Application.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/Application.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/Application.java (original)
+++ geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/Application.java Sat Nov 22 22:07:00 2008
@@ -22,6 +22,7 @@
import org.apache.geronimo.gshell.command.Variables;
import org.apache.geronimo.gshell.io.IO;
import org.apache.geronimo.gshell.application.model.ApplicationModel;
+import org.apache.geronimo.gshell.artifact.Artifact;
import java.io.File;
import java.net.InetAddress;
@@ -34,6 +35,8 @@
public interface Application
{
String getId();
+
+ Artifact getArtifact();
IO getIo();
Modified: geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java (original)
+++ geronimo/gshell/trunk/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java Sat Nov 22 22:07:00 2008
@@ -91,6 +91,16 @@
this.name = name;
}
+ public Artifact getArtifact() {
+ Artifact artifact = new Artifact();
+
+ artifact.setGroup(getGroupId());
+ artifact.setName(getArtifactId());
+ artifact.setVersion(getVersion());
+
+ return artifact;
+ }
+
public String getDescription() {
return description;
}
Modified: geronimo/gshell/trunk/gshell-assembly/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-assembly/pom.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-assembly/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-assembly/pom.xml Sat Nov 22 22:07:00 2008
@@ -43,13 +43,18 @@
<groupId>org.apache.geronimo.gshell</groupId>
<artifactId>gshell-bootstrap</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.apache.geronimo.gshell</groupId>
<artifactId>gshell-cli</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.gshell.support</groupId>
+ <artifactId>gshell-artifact-ivy</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
Modified: geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml (original)
+++ geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml Sat Nov 22 22:07:00 2008
@@ -42,14 +42,14 @@
<list>
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.wisdom"/>
- <property name="artifact" value="gshell-wisdom-core"/>
+ <property name="name" value="gshell-wisdom-core"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
<!--
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.support"/>
- <property name="artifact" value="gshell-vfs-truezip"/>
+ <property name="name" value="gshell-vfs-truezip"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
-->
@@ -60,45 +60,45 @@
<list>
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-builtins"/>
+ <property name="name" value="gshell-builtins"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-vfs"/>
+ <property name="name" value="gshell-vfs"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-admin"/>
+ <property name="name" value="gshell-admin"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
<!--
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-optional"/>
+ <property name="name" value="gshell-optional"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-log4j"/>
+ <property name="name" value="gshell-log4j"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-bsf"/>
+ <property name="name" value="gshell-bsf"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
-->
<bean class="org.apache.geronimo.gshell.artifact.Artifact">
<property name="group" value="org.apache.geronimo.gshell.commands"/>
- <property name="artifact" value="gshell-ssh"/>
+ <property name="name" value="gshell-ssh"/>
<property name="version" value="1.0-alpha-2-SNAPSHOT"/>
</bean>
</list>
Modified: geronimo/gshell/trunk/gshell-commands/gshell-admin/src/main/java/org/apache/geronimo/gshell/commands/admin/InstallPluginAction.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-admin/src/main/java/org/apache/geronimo/gshell/commands/admin/InstallPluginAction.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-admin/src/main/java/org/apache/geronimo/gshell/commands/admin/InstallPluginAction.java (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-admin/src/main/java/org/apache/geronimo/gshell/commands/admin/InstallPluginAction.java Sat Nov 22 22:07:00 2008
@@ -60,7 +60,7 @@
Artifact artifact = new Artifact();
artifact.setGroup(groupId);
- artifact.setArtifact(artifactId);
+ artifact.setName(artifactId);
artifact.setVersion(version);
io.info("Loading plugin: {}", artifact.getId());
Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/pom.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/pom.xml Sat Nov 22 22:07:00 2008
@@ -51,7 +51,12 @@
<groupId>org.apache.geronimo.gshell.support</groupId>
<artifactId>gshell-spring</artifactId>
</dependency>
-
+
+ <dependency>
+ <groupId>org.apache.geronimo.gshell.support</groupId>
+ <artifactId>gshell-artifact</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
Added: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java?rev=719952&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java (added)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java Sat Nov 22 22:07:00 2008
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+
+package org.apache.geronimo.gshell.artifact.ivy;
+
+import org.apache.geronimo.gshell.artifact.ArtifactResolver;
+import org.apache.geronimo.gshell.artifact.Artifact;
+import org.apache.ivy.Ivy;
+import org.apache.ivy.util.filter.Filter;
+import org.apache.ivy.core.resolve.ResolveOptions;
+import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
+import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
+import org.apache.ivy.core.module.descriptor.Configuration;
+import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.report.ResolveReport;
+import org.apache.ivy.core.report.ArtifactDownloadReport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.LinkedHashSet;
+
+/**
+ * <a href="http://ant.apache.org/ivy">Apache Ivy</a> based {@link ArtifactResolver}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ArtifactResolverImpl
+ implements ArtifactResolver
+{
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ private final Ivy ivy;
+
+ public ArtifactResolverImpl(final Ivy ivy) {
+ assert ivy != null;
+
+ this.ivy = ivy;
+ }
+
+ public Result resolve(final Request request) throws Failure {
+ assert request != null;
+
+ ResolveOptions options = new ResolveOptions();
+ options.setOutputReport(true);
+ options.setTransitive(true);
+
+ if (request.filter != null) {
+ options.setArtifactFilter(new Filter() {
+ public boolean accept(final Object obj) {
+ if (!(obj instanceof org.apache.ivy.core.module.descriptor.Artifact)) {
+ return false;
+ }
+
+ Artifact artifact = createArtifact((org.apache.ivy.core.module.descriptor.Artifact)obj);
+ return request.filter.accept(artifact);
+ }
+ });
+ }
+
+ ModuleDescriptor md = createModuleDescriptor(request);
+
+ Result result = new Result();
+
+ try {
+ ResolveReport resolveReport = ivy.resolve(md, options);
+
+ result.artifacts = new LinkedHashSet<Artifact>();
+
+ for (ArtifactDownloadReport downloadReport : resolveReport.getAllArtifactsReports()) {
+ Artifact resolved = createArtifact(downloadReport.getArtifact());
+ resolved.setFile(downloadReport.getLocalFile());
+ result.artifacts.add(resolved);
+
+ log.debug(" {}", resolved.getId());
+ }
+ }
+ catch (Exception e) {
+ throw new Failure(e);
+ }
+
+ return result;
+ }
+
+ private Artifact createArtifact(final org.apache.ivy.core.module.descriptor.Artifact source) {
+ assert source != null;
+
+ ModuleRevisionId sourceId = source.getModuleRevisionId();
+
+ Artifact artifact = new Artifact();
+ artifact.setGroup(sourceId.getOrganisation());
+ artifact.setName(source.getName());
+ artifact.setVersion(sourceId.getRevision());
+ artifact.setType(source.getType());
+
+ return artifact;
+ }
+
+ private ModuleDescriptor createModuleDescriptor(final Request request) {
+ assert request != null;
+
+ ModuleRevisionId id = ModuleRevisionId.newInstance(request.artifact.getGroup(), request.artifact.getName(), request.artifact.getVersion());
+ DefaultModuleDescriptor md = new DefaultModuleDescriptor(id, "integration", null, true);
+ md.addConfiguration(new Configuration("default"));
+ md.setLastModified(System.currentTimeMillis());
+
+ if (request.artifacts != null) {
+ for (Artifact artifact : request.artifacts) {
+ ModuleRevisionId depId = ModuleRevisionId.newInstance(artifact.getGroup(), artifact.getName(), artifact.getVersion());
+ DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(md, depId, false, false, true);
+ dd.addDependencyConfiguration("default", "default");
+ md.addDependency(dd);
+ }
+ }
+
+ return md;
+ }
+}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/java/org/apache/geronimo/gshell/artifact/ivy/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml?rev=719952&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml (added)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml Sat Nov 22 22:07:00 2008
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!-- $Rev$ $Date$ -->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
+ default-autowire="no"
+ default-dependency-check="none"
+ default-init-method="init"
+ default-destroy-method="destroy">
+
+ <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
+
+ <bean id="ivy" class="org.apache.geronimo.gshell.artifact.ivy.IvyFactoryBean" lazy-init="true">
+ <property name="settingsUrl" value="file:${gshell.home}/etc/ivysettings.xml"/>
+ </bean>
+
+ <bean id="artifactResolver" class="org.apache.geronimo.gshell.artifact.ivy.ArtifactResolverImpl" lazy-init="true">
+ <constructor-arg ref="ivy"/>
+ </bean>
+
+</beans>
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-ivy/src/main/resources/META-INF/gshell/components.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/pom.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/pom.xml Sat Nov 22 22:07:00 2008
@@ -70,6 +70,11 @@
<dependency>
<groupId>org.apache.geronimo.gshell.support</groupId>
+ <artifactId>gshell-artifact</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.gshell.support</groupId>
<artifactId>gshell-plexus</artifactId>
</dependency>
@@ -82,7 +87,7 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
- <version>2.1.0-SNAPSHOT</version>
+ <version>2.1.0-M2-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.apache.maven</groupId>
Added: geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java?rev=719952&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java (added)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java Sat Nov 22 22:07:00 2008
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+
+package org.apache.geronimo.gshell.artifact.maven;
+
+import org.apache.geronimo.gshell.artifact.ArtifactResolver;
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class ArtifactResolverImpl
+ implements ArtifactResolver
+{
+ public Result resolve(final Request request) throws Failure {
+ assert request != null;
+
+ return null;
+ }
+}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/pom.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/pom.xml Sat Nov 22 22:07:00 2008
@@ -42,6 +42,17 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.gshell.support</groupId>
+ <artifactId>gshell-artifact</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-md-sat</artifactId>
+ <version>1.0.0-alpha-2-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Added: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java?rev=719952&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java (added)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java Sat Nov 22 22:07:00 2008
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+package org.apache.geronimo.gshell.artifact.mercury;
+
+import org.apache.geronimo.gshell.artifact.ArtifactResolver;
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class ArtifactResolverImpl
+ implements ArtifactResolver
+{
+ public Result resolve(final Request request) throws Failure {
+ assert request != null;
+
+
+ return null;
+ }
+}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/java/org/apache/geronimo/gshell/artifact/mercury/ArtifactResolverImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml?rev=719952&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml (added)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml Sat Nov 22 22:07:00 2008
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!-- $Rev$ $Date$ -->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="artifactManager" class="org.apache.geronimo.gshell.artifact.maven.ArtifactManagerFactory"/>
+
+</beans>
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact-mercury/src/main/resources/META-INF/gshell/components.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/Artifact.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/Artifact.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/Artifact.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/Artifact.java Sat Nov 22 22:07:00 2008
@@ -28,7 +28,7 @@
* @version $Rev$ $Date$
*/
public class Artifact
- implements Serializable
+ implements Serializable, Cloneable
{
private static final long serialVersionUID = 1;
@@ -36,7 +36,7 @@
private String group;
- private String artifact;
+ private String name;
private String classifier;
@@ -58,12 +58,12 @@
this.group = group;
}
- public String getArtifact() {
- return artifact;
+ public String getName() {
+ return name;
}
- public void setArtifact(final String artifact) {
- this.artifact = artifact;
+ public void setName(final String name) {
+ this.name = name;
}
public String getClassifier() {
@@ -102,6 +102,21 @@
}
public String getId() {
- return getGroup() + ":" + getArtifact() + ":" + getVersion() + ":" + getType();
+ if (getClassifier() != null) {
+ return getGroup() + ":" + getName() + ":" + getClassifier() + ":" + getVersion() + ":" + getType();
+ }
+ else {
+ return getGroup() + ":" + getName() + ":" + getVersion() + ":" + getType();
+ }
+ }
+
+ @Override
+ protected Object clone() {
+ try {
+ return super.clone();
+ }
+ catch (CloneNotSupportedException e) {
+ throw new InternalError();
+ }
}
}
Copied: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java (from r719823, geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java?p2=geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java&p1=geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java&r1=719823&r2=719952&rev=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java Sat Nov 22 22:07:00 2008
@@ -24,7 +24,7 @@
*
* @version $Rev$ $Date$
*/
-public interface ArtifactResolver
+public interface ArtifactFilter
{
-
+ boolean accept(Artifact artifact);
}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java
------------------------------------------------------------------------------
svn:mergeinfo =
Propchange: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactFilter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactResolver.java Sat Nov 22 22:07:00 2008
@@ -19,6 +19,8 @@
package org.apache.geronimo.gshell.artifact;
+import java.util.Collection;
+
/**
* ???
*
@@ -26,5 +28,53 @@
*/
public interface ArtifactResolver
{
-
+ Result resolve(Request request) throws Failure;
+
+ //
+ // Request
+ //
+
+ class Request
+ {
+ public ArtifactFilter filter;
+
+ public Artifact artifact;
+
+ public Collection<Artifact> artifacts;
+ }
+
+ //
+ // Result
+ //
+
+ class Result
+ {
+ public Collection<Artifact> artifacts;
+ }
+
+ //
+ // Failure
+ //
+
+ class Failure
+ extends Exception
+ {
+ private static final long serialVersionUID = 1;
+
+ public Failure(final String msg) {
+ super(msg);
+ }
+
+ public Failure(final String msg, final Throwable cause) {
+ super(msg, cause);
+ }
+
+ public Failure(final Throwable cause) {
+ super(cause);
+ }
+
+ public Failure() {
+ super();
+ }
+ }
}
\ No newline at end of file
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/pom.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/pom.xml Sat Nov 22 22:07:00 2008
@@ -55,11 +55,6 @@
<dependency>
<groupId>org.apache.geronimo.gshell.support</groupId>
- <artifactId>gshell-artifact-ivy</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.gshell.support</groupId>
<artifactId>gshell-chronos</artifactId>
</dependency>
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationArtifactFilter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationArtifactFilter.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationArtifactFilter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationArtifactFilter.java Sat Nov 22 22:07:00 2008
@@ -19,8 +19,8 @@
package org.apache.geronimo.gshell.wisdom.application;
-import org.apache.ivy.core.module.descriptor.Artifact;
-import org.apache.ivy.util.filter.Filter;
+import org.apache.geronimo.gshell.artifact.ArtifactFilter;
+import org.apache.geronimo.gshell.artifact.Artifact;
import java.util.Arrays;
import java.util.HashSet;
@@ -32,7 +32,7 @@
* @version $Rev$ $Date$
*/
public class ApplicationArtifactFilter
- implements Filter
+ implements ArtifactFilter
{
private static final String[] EXCLUDES = {
"gshell-artifact",
@@ -70,12 +70,9 @@
}
- public boolean accept(final Object target) {
- if (!(target instanceof Artifact)) {
- return false;
- }
+ public boolean accept(final Artifact artifact) {
+ assert artifact != null;
- Artifact artifact = (Artifact)target;
String name = artifact.getName();
return !excludes.contains(name);
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationImpl.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationImpl.java Sat Nov 22 22:07:00 2008
@@ -25,6 +25,7 @@
import org.apache.geronimo.gshell.application.model.ApplicationModel;
import org.apache.geronimo.gshell.command.Variables;
import org.apache.geronimo.gshell.io.IO;
+import org.apache.geronimo.gshell.artifact.Artifact;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,6 +63,10 @@
return config.getModel().getId();
}
+ public Artifact getArtifact() {
+ return config.getModel().getArtifact();
+ }
+
public IO getIo() {
return config.getIo();
}
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java Sat Nov 22 22:07:00 2008
@@ -22,11 +22,11 @@
import org.apache.geronimo.gshell.application.Application;
import org.apache.geronimo.gshell.application.ApplicationConfiguration;
import org.apache.geronimo.gshell.application.ApplicationManager;
-import org.apache.geronimo.gshell.wisdom.application.ApplicationSecurityManager;
import org.apache.geronimo.gshell.application.ClassPath;
import org.apache.geronimo.gshell.application.model.ApplicationModel;
-import org.apache.geronimo.gshell.artifact.Artifact;
import org.apache.geronimo.gshell.application.plugin.PluginManager;
+import org.apache.geronimo.gshell.artifact.Artifact;
+import org.apache.geronimo.gshell.artifact.ArtifactResolver;
import org.apache.geronimo.gshell.chronos.StopWatch;
import org.apache.geronimo.gshell.event.EventPublisher;
import org.apache.geronimo.gshell.shell.Shell;
@@ -34,15 +34,6 @@
import org.apache.geronimo.gshell.shell.ShellContextHolder;
import org.apache.geronimo.gshell.spring.BeanContainer;
import org.apache.geronimo.gshell.spring.BeanContainerAware;
-import org.apache.ivy.Ivy;
-import org.apache.ivy.core.module.descriptor.Configuration;
-import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
-import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
-import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
-import org.apache.ivy.core.module.id.ModuleRevisionId;
-import org.apache.ivy.core.report.ArtifactDownloadReport;
-import org.apache.ivy.core.report.ResolveReport;
-import org.apache.ivy.core.resolve.ResolveOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,9 +43,7 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.URL;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.Collection;
/**
* Default implementation of the {@link ApplicationManager} component.
@@ -68,15 +57,20 @@
private final EventPublisher eventPublisher;
+ private ArtifactResolver artifactResolver;
+
private BeanContainer container;
private BeanContainer applicationContainer;
private Application application;
- public ApplicationManagerImpl(final EventPublisher eventPublisher) {
+ public ApplicationManagerImpl(final EventPublisher eventPublisher, final ArtifactResolver artifactResolver) {
assert eventPublisher != null;
this.eventPublisher = eventPublisher;
+
+ assert artifactResolver != null;
+ this.artifactResolver = artifactResolver;
}
public void setBeanContainer(final BeanContainer container) {
@@ -147,7 +141,7 @@
ClassPath classPath = cache.get();
if (classPath == null) {
- Set<Artifact> artifacts = resolveArtifacts(model);
+ Collection<Artifact> artifacts = resolveArtifacts(model);
classPath = new ClassPathImpl(artifacts);
cache.set(classPath);
}
@@ -163,72 +157,20 @@
return classPath;
}
- private Set<Artifact> resolveArtifacts(final ApplicationModel model) throws Exception {
+ private Collection<Artifact> resolveArtifacts(final ApplicationModel model) throws Exception {
assert model != null;
log.debug("Resolving application artifacts");
- Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
-
- ResolveOptions options = new ResolveOptions();
- options.setOutputReport(true);
- options.setTransitive(true);
- options.setArtifactFilter(new ApplicationArtifactFilter());
+ ArtifactResolver.Request request = new ArtifactResolver.Request();
- ModuleDescriptor md = createApplicationModuleDescriptor(model);
+ request.filter = new ApplicationArtifactFilter();
+ request.artifact = model.getArtifact();
+ request.artifacts = model.getDependencies();
- StopWatch watch = new StopWatch(true);
-
- Ivy ivy = container.getBean("ivy", Ivy.class);
-
- ResolveReport resolveReport = ivy.resolve(md, options);
-
- log.debug("Resolve completed in: {}", watch);
-
- if (resolveReport.hasError()) {
- log.error("Report has errors:");
- // noinspection unchecked
- List<String> problems = resolveReport.getAllProblemMessages();
- for (String problem : problems) {
- log.error(" {}", problem);
- }
- }
-
- log.debug("Application artifacts:");
- for (ArtifactDownloadReport downloadReport : resolveReport.getAllArtifactsReports()) {
- org.apache.ivy.core.module.descriptor.Artifact downloadedArtifact = downloadReport.getArtifact();
- ModuleRevisionId id = downloadedArtifact.getModuleRevisionId();
-
- Artifact resolved = new Artifact();
- resolved.setGroup(id.getOrganisation());
- resolved.setArtifact(id.getName());
- resolved.setVersion(id.getRevision());
- resolved.setType(downloadedArtifact.getType());
- resolved.setFile(downloadReport.getLocalFile());
- artifacts.add(resolved);
-
- log.debug(" {}", resolved.getId());
- }
-
- return artifacts;
- }
-
- private ModuleDescriptor createApplicationModuleDescriptor(final ApplicationModel model) {
- assert model != null;
-
- ModuleRevisionId appId = ModuleRevisionId.newInstance("gshell.application-" + model.getGroupId(), model.getArtifactId(), model.getVersion());
- DefaultModuleDescriptor md = new DefaultModuleDescriptor(appId, "integration", null, true);
- md.addConfiguration(new Configuration("default"));
- md.setLastModified(System.currentTimeMillis());
-
- for (Artifact dep : model.getDependencies()) {
- ModuleRevisionId depId = ModuleRevisionId.newInstance(dep.getGroup(), dep.getArtifact(), dep.getVersion());
- DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(md, depId, /* force */ false, /* changing*/ false, /* transitive */ true);
- dd.addDependencyConfiguration("default", "default");
- md.addDependency(dd);
- }
+ ArtifactResolver.Result result = artifactResolver.resolve(request);
- return md;
+ return result.artifacts;
}
//
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/resources/META-INF/gshell/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/resources/META-INF/gshell/components.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/resources/META-INF/gshell/components.xml (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-bootstrap/src/main/resources/META-INF/gshell/components.xml Sat Nov 22 22:07:00 2008
@@ -28,16 +28,11 @@
default-init-method="init"
default-destroy-method="destroy">
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
-
- <bean id="ivy" class="org.apache.geronimo.gshell.artifact.ivy.IvyFactoryBean" lazy-init="true">
- <property name="settingsUrl" value="file:${gshell.home}/etc/ivysettings.xml"/>
- </bean>
-
<bean id="eventManager" class="org.apache.geronimo.gshell.event.EventManagerImpl"/>
<bean id="applicationManager" class="org.apache.geronimo.gshell.wisdom.application.ApplicationManagerImpl">
<constructor-arg ref="eventManager"/>
+ <constructor-arg ref="artifactResolver"/>
</bean>
<bean id="application" class="org.apache.geronimo.gshell.wisdom.application.ApplicationFactoryBean" lazy-init="true">
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/pom.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/pom.xml Sat Nov 22 22:07:00 2008
@@ -85,6 +85,12 @@
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.gshell.support</groupId>
+ <artifactId>gshell-artifact-ivy</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginArtifactFilter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginArtifactFilter.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginArtifactFilter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginArtifactFilter.java Sat Nov 22 22:07:00 2008
@@ -21,7 +21,7 @@
import org.apache.geronimo.gshell.application.Application;
import org.apache.geronimo.gshell.wisdom.application.ApplicationArtifactFilter;
-import org.apache.ivy.core.module.descriptor.Artifact;
+import org.apache.geronimo.gshell.artifact.Artifact;
import java.util.HashSet;
import java.util.Set;
@@ -40,18 +40,18 @@
assert application != null;
// Filter out application artifacts, need to use gid:aid to make sure we don't clober anything which has the same artifactId, but different groupId
- for (org.apache.geronimo.gshell.artifact.Artifact artifact : application.getClassPath().getArtifacts()) {
- String id = artifact.getGroup() + ":" + artifact.getArtifact();
+ for (Artifact artifact : application.getClassPath().getArtifacts()) {
+ String id = artifact.getGroup() + ":" + artifact.getName();
excludes.add(id);
}
}
- public boolean accept(final Object target) {
- if (super.accept(target)) {
- Artifact artifact = (Artifact)target;
- String id = artifact.getModuleRevisionId().getOrganisation() + ":" + artifact.getName();
- return !excludes.contains(id);
+ @Override
+ public boolean accept(final Artifact artifact) {
+ if (super.accept(artifact)) {
+ return !excludes.contains(artifact.getId());
}
+
return false;
}
}
\ No newline at end of file
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginManagerImpl.java?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginManagerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/PluginManagerImpl.java Sat Nov 22 22:07:00 2008
@@ -23,6 +23,7 @@
import org.apache.geronimo.gshell.application.ApplicationManager;
import org.apache.geronimo.gshell.application.ClassPath;
import org.apache.geronimo.gshell.artifact.Artifact;
+import org.apache.geronimo.gshell.artifact.ArtifactResolver;
import org.apache.geronimo.gshell.application.plugin.Plugin;
import org.apache.geronimo.gshell.application.plugin.PluginManager;
import org.apache.geronimo.gshell.chronos.StopWatch;
@@ -34,23 +35,13 @@
import org.apache.geronimo.gshell.wisdom.application.ApplicationConfiguredEvent;
import org.apache.geronimo.gshell.wisdom.application.ClassPathCache;
import org.apache.geronimo.gshell.wisdom.application.ClassPathImpl;
-import org.apache.ivy.Ivy;
-import org.apache.ivy.core.module.descriptor.Configuration;
-import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
-import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
-import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
-import org.apache.ivy.core.module.id.ModuleRevisionId;
-import org.apache.ivy.core.report.ArtifactDownloadReport;
-import org.apache.ivy.core.report.ResolveReport;
-import org.apache.ivy.core.resolve.ResolveOptions;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.net.URL;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
/**
* Default implementation of the {@link PluginManager} component.
@@ -66,16 +57,21 @@
private final EventManager eventManager;
+ private ArtifactResolver artifactResolver;
+
private BeanContainer container;
private Set<Plugin> plugins = new LinkedHashSet<Plugin>();
- public PluginManagerImpl(final ApplicationManager applicationManager, final EventManager eventManager) {
+ public PluginManagerImpl(final ApplicationManager applicationManager, final EventManager eventManager, final ArtifactResolver artifactResolver) {
assert applicationManager != null;
this.applicationManager = applicationManager;
assert eventManager != null;
this.eventManager = eventManager;
+
+ assert artifactResolver != null;
+ this.artifactResolver = artifactResolver;
}
public void setBeanContainer(final BeanContainer container) {
@@ -160,11 +156,11 @@
assert artifact != null;
// FIXME: Get basedir from application
- ClassPathCache cache = new ClassPathCache(new File(new File(System.getProperty("gshell.home")), "var/" + artifact.getGroup() + "/" + artifact.getArtifact() + "/classpath.ser"));
+ ClassPathCache cache = new ClassPathCache(new File(new File(System.getProperty("gshell.home")), "var/" + artifact.getGroup() + "/" + artifact.getName() + "/classpath.ser"));
ClassPath classPath = cache.get();
if (classPath == null) {
- Set<Artifact> artifacts = resolveArtifacts(application, artifact);
+ Collection<Artifact> artifacts = resolveArtifacts(application, artifact);
classPath = new ClassPathImpl(artifacts);
cache.set(classPath);
}
@@ -185,70 +181,20 @@
loadPlugin(applicationManager.getApplication(), artifact);
}
- private Set<Artifact> resolveArtifacts(final Application application, final Artifact artifact) throws Exception {
+ private Collection<Artifact> resolveArtifacts(final Application application, final Artifact artifact) throws Exception {
assert application != null;
assert artifact != null;
log.debug("Resolving plugin artifacts");
- Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
-
- ResolveOptions options = new ResolveOptions();
- options.setOutputReport(true);
- options.setTransitive(true);
- options.setArtifactFilter(new PluginArtifactFilter(application));
-
- ModuleDescriptor md = createPluginModuleDescriptor(artifact);
-
- StopWatch watch = new StopWatch(true);
-
- Ivy ivy = container.getBean("ivy", Ivy.class);
-
- ResolveReport resolveReport = ivy.resolve(md, options);
-
- log.debug("Resolve completed in: {}", watch);
+ ArtifactResolver.Request request = new ArtifactResolver.Request();
- if (resolveReport.hasError()) {
- log.error("Report has errors:");
- // noinspection unchecked
- List<String> problems = resolveReport.getAllProblemMessages();
- for (String problem : problems) {
- log.error(" {}", problem);
- }
- }
-
- log.debug("Plugin artifacts:");
- for (ArtifactDownloadReport downloadReport : resolveReport.getAllArtifactsReports()) {
- org.apache.ivy.core.module.descriptor.Artifact downloadedArtifact = downloadReport.getArtifact();
- ModuleRevisionId id = downloadedArtifact.getModuleRevisionId();
-
- Artifact resolved = new Artifact();
- resolved.setGroup(id.getOrganisation());
- resolved.setArtifact(id.getName());
- resolved.setVersion(id.getRevision());
- resolved.setType(downloadedArtifact.getType());
- resolved.setFile(downloadReport.getLocalFile());
- artifacts.add(resolved);
-
- log.debug(" {}", resolved.getId());
- }
-
- return artifacts;
- }
-
- private ModuleDescriptor createPluginModuleDescriptor(final Artifact artifact) {
- assert artifact != null;
+ request.filter = new PluginArtifactFilter(application);
+ request.artifact = application.getArtifact();
+ request.artifacts = Collections.singletonList(artifact);
- ModuleRevisionId pluginId = ModuleRevisionId.newInstance("gshell.plugin-" + artifact.getGroup(), artifact.getArtifact(), artifact.getVersion());
- DefaultModuleDescriptor md = new DefaultModuleDescriptor(pluginId, "integration", null, true);
- md.addConfiguration(new Configuration("default"));
- md.setLastModified(System.currentTimeMillis());
-
- ModuleRevisionId depId = ModuleRevisionId.newInstance(artifact.getGroup(), artifact.getArtifact(), artifact.getVersion());
- DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(md, depId, /* force */ false, /* changing*/ false, /* transitive */ true);
- dd.addDependencyConfiguration("default", "default");
- md.addDependency(dd);
+ ArtifactResolver.Result result = artifactResolver.resolve(request);
- return md;
+ return result.artifacts;
}
}
\ No newline at end of file
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml?rev=719952&r1=719951&r2=719952&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/gshell/components.xml Sat Nov 22 22:07:00 2008
@@ -162,6 +162,7 @@
<bean id="pluginManager" class="org.apache.geronimo.gshell.wisdom.plugin.PluginManagerImpl">
<constructor-arg ref="applicationManager"/>
<constructor-arg ref="eventManager"/>
+ <constructor-arg ref="artifactResolver"/>
</bean>
<bean id="pluginMetaMapper" class="org.apache.geronimo.gshell.wisdom.plugin.PluginMetaMapper">