[jboss-cvs] JBossAS SVN: r92958 - in projects/profileservice/trunk: core/src/main/java/org/jboss/profileservice/profile and 41 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 28 10:48:50 EDT 2009
Author: emuckenhuber
Date: 2009-08-28 10:48:49 -0400 (Fri, 28 Aug 2009)
New Revision: 92958
Added:
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileCapability.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileRequirement.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/package-info.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifact.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifactRepository.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/DelegatingArtifactRepository.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/FileArtifact.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/LocalFileArtifactRepository.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/AbstractMavenArtifactRepository.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/LocalMavenArtifactRepository.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifact.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactId.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactReference.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactRepositoryMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/package-info.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionRangeSupport.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionSupport.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualFileArtifact.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/VirtualMavenArtifactMetaData.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/repository/
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/repository/test/
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/repository/test/ArtifactRepositoryUnitTestCase.java
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/profiles.xml
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/repository.xml
projects/profileservice/trunk/core/src/test/resources/repository/
projects/profileservice/trunk/core/src/test/resources/repository/artifacts.xml
projects/profileservice/trunk/core/src/test/resources/repository/org/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/jboss-simple-deployer/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/jboss-simple-deployer/1.0.0.GA/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/jboss-simple-deployer/1.0.0.GA/jboss-simple-deployer-1.0.0.GA.xml
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.0.0.SP1/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.0.0.SP1/test-common-2.0.0.SP1.jar
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.1.0.Alpha1/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.1.0.Alpha1/test-common-2.1.0.Alpha1.jar
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-library/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-library/2.1.2.CR1/
projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-library/2.1.2.CR1/test-library-2.1.2.CR1.jar
projects/profileservice/trunk/core/src/test/resources/repository/profiles.xml
projects/profileservice/trunk/core/src/test/resources/repository/static/
projects/profileservice/trunk/core/src/test/resources/repository/static/simple-deployer-jboss-beans.xml
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/META-INF/
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/META-INF/jboss-beans.xml
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/META-INF/
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/META-INF/jboss-beans.xml
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/test.jar
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/lib/
projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/lib/deployment.jar
projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/
projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/deployer.jar
projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/meta-inf/
projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/meta-inf/test.xml
projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/meta-inf/test1.xml
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactId.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepository.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Identifyable.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualArtifactMetaData.java
Removed:
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractCapability.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractRequirement.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualPath.java
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/simple-deployer-jboss-beans.xml
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/test-deployment/
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/test.deployer/
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualPathMetaData.java
Modified:
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/AbstractVFSProfileSource.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicSubProfileMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/ProfileDeploymentFactory.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/VirtualDeploymentRepositoryBase.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/AbstractVirtualDeploymentAssembly.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/BasicVirtualAssemblyContext.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/ImmutableAssemblyContext.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeployment.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeploymentRequirement.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/ClassPathLocationMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/MetaDataLocationMetaData.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/ProfileServiceTestBase.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/AbstractVirtualAssemblyTestCase.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/StructureMetaDataUnitTestCase.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/VirtualDeploymentAssemblyUnitTestCase.java
projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/repository.xml
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/helpers/AbstractSubProfileKeyMetaData.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/ClassPathLocation.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/MetaDataLocation.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/PathRestriction.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeployment.java
Log:
JBPROFILE-2 more work on virtual repositories
Copied: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileCapability.java (from rev 92576, projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractCapability.java)
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileCapability.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileCapability.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,101 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2007, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.dependency;
+
+import org.jboss.profileservice.spi.dependency.ProfileCapability;
+import org.jboss.profileservice.version.helpers.NameAndVersionSupport;
+
+/**
+ * AbstractCapability.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractProfileCapability extends NameAndVersionSupport implements ProfileCapability
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 5707892139772442117L;
+
+ /**
+ * Create a new AbstractCapability
+ */
+ public AbstractProfileCapability()
+ {
+ }
+
+ /**
+ * Create a new AbstractCapability
+ *
+ * @param name the name
+ * @throws IllegalArgumentException for a null name
+ */
+ public AbstractProfileCapability(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Create a new AbstractCapability.
+ *
+ * @param name the name
+ * @param version the version - pass null for the default version
+ * @throws IllegalArgumentException for a null name
+ */
+ public AbstractProfileCapability(String name, Object version)
+ {
+ super(name, version);
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ return true;
+ if (obj == null || obj instanceof AbstractProfileCapability == false)
+ return false;
+ return super.equals(obj);
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(getClass().getSimpleName());
+ buffer.append("{");
+ toString(buffer);
+ buffer.append("}");
+ return buffer.toString();
+ }
+
+ /**
+ * For subclasses to override toString()
+ *
+ * @param buffer the buffer
+ */
+ protected void toString(StringBuffer buffer)
+ {
+ buffer.append(getName());
+ buffer.append(" ").append(getVersion());
+ }
+}
Copied: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileRequirement.java (from rev 92576, projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractRequirement.java)
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileRequirement.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/AbstractProfileRequirement.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,166 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2007, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.dependency;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.jboss.profileservice.spi.dependency.ProfileRequirement;
+import org.jboss.profileservice.version.VersionRange;
+import org.jboss.profileservice.version.helpers.NameAndVersionRangeSupport;
+
+/**
+ * AbstractRequirement.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision: 1.1 $
+ */
+public class AbstractProfileRequirement extends NameAndVersionRangeSupport implements ProfileRequirement
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -9013971913225421465L;
+
+ /** Whether the requirement is optional */
+ private boolean optional = false;
+
+ /**
+ * Create a new AbstractRequirement
+ */
+ public AbstractProfileRequirement()
+ {
+ }
+
+ /**
+ * Create a new AbstractRequirement
+ *
+ * @param name the name
+ * @throws IllegalArgumentException for a null name
+ */
+ public AbstractProfileRequirement(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Create a new AbstractRequirement.
+ *
+ * @param name the name
+ * @param versionRange the version range - pass null for all versions
+ * @throws IllegalArgumentException for a null name
+ */
+ public AbstractProfileRequirement(String name, VersionRange versionRange)
+ {
+ super(name, versionRange);
+ }
+
+ public boolean isOptional()
+ {
+ return optional;
+ }
+
+ /**
+ * Set the optional.
+ *
+ * @param optional the optional.
+ */
+ @XmlAttribute(name="optional")
+ public void setOptional(boolean optional)
+ {
+ this.optional = optional;
+ }
+
+ public boolean isConsistent(ProfileRequirement other)
+ {
+ return isConsistent(other, null);
+ }
+
+ /**
+ * Check whether the requirements are consistent
+ *
+ * @param other the other requirement
+ * @param requirementType the class to check when looking for inconsistencies (uses getClass() when null)
+ * @return true when consistent, false otherwise
+ */
+ protected boolean isConsistent(ProfileRequirement other, Class<? extends ProfileRequirement> requirementType)
+ {
+ if (other == null)
+ throw new IllegalArgumentException("Null requirement");
+ if (requirementType == null)
+ requirementType = getClass();
+
+ // Not our type
+ if (requirementType.isInstance(other) == false)
+ return true;
+
+ AbstractProfileRequirement otherRequirement = (AbstractProfileRequirement) other;
+ // Not the same name
+ String name = getName();
+ String otherName = otherRequirement.getName();
+ if (name.equals(otherName) == false)
+ return true;
+
+ // Check the version ranges are consistent
+ VersionRange range = getVersionRange();
+ VersionRange otherRange = otherRequirement.getVersionRange();
+ return range.isConsistent(otherRange);
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ return true;
+ if (obj == null || obj instanceof AbstractProfileRequirement == false)
+ return false;
+ if (super.equals(obj) == false)
+ return false;
+ AbstractProfileRequirement other = (AbstractProfileRequirement) obj;
+ if (this.isOptional() != other.isOptional())
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(getClass().getSimpleName());
+ buffer.append("{");
+ toString(buffer);
+ buffer.append("}");
+ return buffer.toString();
+ }
+
+ /**
+ * For subclasses to override toString()
+ *
+ * @param buffer the buffer
+ */
+ protected void toString(StringBuffer buffer)
+ {
+ buffer.append(getName());
+ buffer.append(" ").append(getVersionRange());
+ if (isOptional())
+ buffer.append(" OPTIONAL");
+ }
+}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/AbstractVFSProfileSource.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/AbstractVFSProfileSource.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/AbstractVFSProfileSource.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -73,7 +73,7 @@
protected final Logger log = Logger.getLogger(getClass());
/** The deployment factory. */
- private final static ProfileDeploymentFactory deploymentFacotry = ProfileDeploymentFactory.getInstance();
+ private static ProfileDeploymentFactory deploymentFacotry; // = ProfileDeploymentFactory.getInstance();
public AbstractVFSProfileSource(URI[] uris)
{
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -25,6 +25,7 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
@@ -112,7 +113,11 @@
return super.getKey();
}
- @XmlElement(name = "deployment", type = BasicProfileDeploymentMetaData.class)
+ @XmlElements
+ ({
+ @XmlElement(name = "deployment", type = BasicProfileDeploymentMetaData.class),
+ @XmlElement(name = "virtual-deployment", type = VirtualProfileDeploymentMetaData.class)
+ })
public void setDeployments(List<ProfileDeploymentMetaData> deployments)
{
this.deployments = deployments;
@@ -132,6 +137,14 @@
public void visit(ProfileMetaDataVisitor visitor)
{
super.visit(visitor);
+ List<ProfileDeploymentMetaData> deployments = getDeployments();
+ if(deployments != null && deployments.isEmpty() == false)
+ {
+ for(ProfileDeploymentMetaData deployment : deployments)
+ {
+ visitor.visit(deployment);
+ }
+ }
}
@XmlTransient
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicSubProfileMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicSubProfileMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicSubProfileMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -36,6 +36,9 @@
public class BasicSubProfileMetaData extends AbstractSubProfileKeyMetaData
{
+ /** Is optional. */
+ private boolean optional = false;
+
public BasicSubProfileMetaData()
{
super();
@@ -84,5 +87,17 @@
return super.getKey();
}
+ @Override
+ public boolean isOptional()
+ {
+ return optional;
+ }
+
+ @XmlAttribute(name = "optional")
+ public void setOptional(boolean optional)
+ {
+ this.optional = optional;
+ }
+
}
Deleted: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -1,52 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.profileservice.profile.metadata;
-
-import org.jboss.profileservice.spi.metadata.ProfileDeploymentMetaData;
-import org.jboss.profileservice.spi.metadata.ProfileMetaDataVisitor;
-
-
-/**
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
-public class VirtualProfileDeploymentMetaData implements ProfileDeploymentMetaData
-{
-
-
-
- public String getName()
- {
- // FIXME getName
- return null;
- }
-
- @Override
- public void visit(ProfileMetaDataVisitor visitor)
- {
- // FIXME visit
-
- }
-
-
-}
-
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/VirtualProfileDeploymentMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,67 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.profile.metadata;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.profileservice.dependency.AbstractProfileRequirement;
+import org.jboss.profileservice.spi.metadata.ProfileDeploymentMetaData;
+import org.jboss.profileservice.spi.metadata.ProfileMetaDataVisitor;
+import org.jboss.profileservice.virtual.deployment.AbstractVirtualDeployment;
+
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at XmlType(propOrder = {"name", "path", "metaDataLocations", "classPathLocations",
+ "requires", "children" })
+public class VirtualProfileDeploymentMetaData extends AbstractVirtualDeployment
+ implements ProfileDeploymentMetaData
+{
+
+ @Override
+ public void visit(ProfileMetaDataVisitor visitor)
+ {
+ visitor.addCapability(this);
+ List<AbstractProfileRequirement> requirements = getRequires();
+ if(requirements != null && requirements.isEmpty() == false)
+ {
+ for(AbstractProfileRequirement requirement : requirements)
+ visitor.addRequirement(requirement);
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if(obj == this)
+ return true;
+ if(obj == null || obj instanceof VirtualProfileDeploymentMetaData == false)
+ return false;
+ return super.equals(obj);
+ }
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/package-info.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/package-info.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/package-info.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+ at JBossXmlAdaptedTypes
+({
+ @JBossXmlAdaptedType(type=Version.class, valueAdapter=VersionValueAdapter.class)
+})
+package org.jboss.profileservice.profile.metadata;
+
+import org.jboss.profileservice.version.Version;
+import org.jboss.profileservice.version.helpers.VersionValueAdapter;
+import org.jboss.xb.annotations.JBossXmlAdaptedType;
+import org.jboss.xb.annotations.JBossXmlAdaptedTypes;
+
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/ProfileDeploymentFactory.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/ProfileDeploymentFactory.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/ProfileDeploymentFactory.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -22,6 +22,8 @@
package org.jboss.profileservice.repository;
import org.jboss.profileservice.spi.ProfileDeployment;
+import org.jboss.profileservice.spi.repository.ArtifactId;
+import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.virtual.VirtualDeployment;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.profileservice.virtual.assembly.AbstractVirtualDeploymentAssembly;
@@ -35,13 +37,10 @@
*/
public class ProfileDeploymentFactory extends AbstractVirtualDeploymentAssembly
{
-
- /** The instance. */
- private static final ProfileDeploymentFactory instance = new ProfileDeploymentFactory();
- public static ProfileDeploymentFactory getInstance()
+ public ProfileDeploymentFactory(ArtifactRepository<ArtifactId> repository)
{
- return instance;
+ super(repository);
}
public ProfileDeployment createDeployment(String name)
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifact.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifact.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifact.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact;
+
+import org.jboss.profileservice.spi.repository.ArtifactId;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public abstract class AbstractArtifact implements ArtifactId
+{
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifactRepository.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifactRepository.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,62 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.profileservice.spi.repository.ArtifactId;
+import org.jboss.profileservice.spi.repository.ArtifactRepository;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public abstract class AbstractArtifactRepository<T extends ArtifactId> implements ArtifactRepository<T>
+{
+
+ /** The repository root. */
+ private VirtualFile repositoryRoot;
+
+ public AbstractArtifactRepository(URL root) throws IOException
+ {
+ if(root == null)
+ {
+ throw new IllegalArgumentException("null repository root.");
+ }
+ this.repositoryRoot = VFS.getRoot(root);
+ }
+
+ public VirtualFile getRepositoryRoot()
+ {
+ return this.repositoryRoot;
+ }
+
+ public boolean containsArtifact(T artifact)
+ {
+ return false;
+ };
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/DelegatingArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/DelegatingArtifactRepository.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/DelegatingArtifactRepository.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,68 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.jboss.profileservice.spi.repository.ArtifactId;
+import org.jboss.profileservice.spi.repository.ArtifactRepository;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class DelegatingArtifactRepository implements ArtifactRepository<ArtifactId>
+{
+
+ /** The repositories. */
+ private Map<String, ArtifactRepository<ArtifactId>> repositories = new ConcurrentHashMap<String, ArtifactRepository<ArtifactId>>();
+
+ @Override
+ public boolean containsArtifact(ArtifactId artifact)
+ {
+ return getRepository(artifact).containsArtifact(artifact);
+ }
+
+ @Override
+ public VirtualFile getArtifact(ArtifactId artifact) throws IOException
+ {
+ return getRepository(artifact).getArtifact(artifact);
+ }
+
+ protected ArtifactRepository<ArtifactId> getRepository(ArtifactId artifact)
+ {
+ ArtifactRepository<ArtifactId> repository = this.repositories.get(artifact.getType());
+ if(repository == null)
+ throw new IllegalStateException("failed to find repository for artifact " + artifact);
+ return repository;
+ }
+
+ public void addRepository(String type, ArtifactRepository<ArtifactId> repository)
+ {
+ this.repositories.put(type, repository);
+ }
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/FileArtifact.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/FileArtifact.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/FileArtifact.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,72 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.file;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.jboss.profileservice.repository.artifact.AbstractArtifact;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class FileArtifact extends AbstractArtifact
+{
+
+ /** The type. */
+ public final static String TYPE = FileArtifact.class.getName();
+
+ /** The relative path. */
+ private String path;
+
+ public FileArtifact()
+ {
+ //
+ }
+
+ public FileArtifact(String path)
+ {
+ if(path == null)
+ throw new IllegalArgumentException("null path name");
+
+ this.path = path;
+ }
+
+ @XmlAttribute(name = "path")
+ public String getPath()
+ {
+ return path;
+ }
+
+ public void setPath(String path)
+ {
+ this.path = path;
+ }
+
+ @Override
+ public String getType()
+ {
+ return TYPE;
+ }
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/LocalFileArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/LocalFileArtifactRepository.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/LocalFileArtifactRepository.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,64 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.file;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.profileservice.repository.artifact.AbstractArtifactRepository;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class LocalFileArtifactRepository extends AbstractArtifactRepository<FileArtifact>
+{
+
+ public LocalFileArtifactRepository(URL rootURL) throws IOException
+ {
+ super(rootURL);
+ }
+
+ @Override
+ public VirtualFile getArtifact(FileArtifact artifact) throws IOException
+ {
+ if(artifact == null)
+ {
+ throw new IllegalArgumentException("null artifact");
+ }
+ if(artifact.getPath() == null)
+ {
+ throw new IllegalArgumentException("null artifact path");
+ }
+ VirtualFile vf = getRepositoryRoot().getChild(artifact.getPath());
+ if(vf == null)
+ {
+ URL url = new URL(artifact.getPath());
+ vf = VFS.getRoot(url);
+ }
+ return vf;
+ }
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/AbstractMavenArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/AbstractMavenArtifactRepository.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/AbstractMavenArtifactRepository.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,100 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.maven;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.profileservice.repository.artifact.AbstractArtifactRepository;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * A MVN like artifact repository.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public abstract class AbstractMavenArtifactRepository extends AbstractArtifactRepository<MavenArtifactId>
+{
+
+ public AbstractMavenArtifactRepository(URL root) throws IOException
+ {
+ super(root);
+ }
+
+ protected VirtualFile getGroupRoot(String groupId) throws IOException
+ {
+ String[] groups = groupId.split("\\.");
+ VirtualFile child = getRepositoryRoot();
+ for(String group : groups)
+ {
+ child = child.getChild(group);
+ if(child == null)
+ {
+ throw new FileNotFoundException("failed to get " + group + " for groupId " + groupId);
+ }
+ }
+ return child;
+ }
+
+ protected VirtualFile getArtifactIdRoot(String groupId, String artifactId) throws IOException
+ {
+ VirtualFile artifact = getGroupRoot(groupId).getChild(artifactId);
+ if(artifact == null)
+ {
+ throw new FileNotFoundException("artifact root not found for groupId " + groupId + "-" + artifactId);
+ }
+ return artifact;
+ }
+
+ protected VirtualFile resolveArtifact(MavenArtifact artifact) throws IOException
+ {
+ VirtualFile artifactIdRoot = getArtifactIdRoot(artifact.getGroupId(), artifact.getArtifactId());
+ VirtualFile vf = artifactIdRoot.getChild(artifact.getVersion().toString());
+ if(vf == null)
+ {
+ throw new FileNotFoundException("failed to get artifact " + artifact);
+ }
+ // Build the artifact name
+ String artifactName = createArtifactName(artifact);
+ VirtualFile artifactRoot = vf.getChild(artifactName);
+ if(artifactRoot == null)
+ {
+ throw new FileNotFoundException("failed to get artifact " + createArtifactName(artifact));
+ }
+ return artifactRoot;
+ }
+
+ String createArtifactName(MavenArtifact artifact)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append(artifact.getArtifactId());
+ if(artifact.getClassifier() != null)
+ builder.append("-").append(artifact.getClassifier());
+ builder.append("-").append(artifact.getVersion().toString());
+ builder.append(".").append(artifact.getPackagingType());
+ return builder.toString();
+ }
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/LocalMavenArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/LocalMavenArtifactRepository.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/LocalMavenArtifactRepository.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,60 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.maven;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class LocalMavenArtifactRepository extends AbstractMavenArtifactRepository
+{
+
+ /** The meta data. */
+ private final MavenArtifactRepositoryMetaData metaData;
+
+ public LocalMavenArtifactRepository(MavenArtifactRepositoryMetaData metaData, URL root) throws IOException
+ {
+ super(root);
+ this.metaData = metaData;
+ }
+
+ @Override
+ public VirtualFile getArtifact(MavenArtifactId artifactReference) throws IOException
+ {
+ for(MavenArtifact artifact : metaData.getArtifacts())
+ {
+ if(artifactReference.matches(artifact))
+ {
+ return resolveArtifact(artifact);
+ }
+ }
+ throw new FileNotFoundException("Artifact not found " + artifactReference);
+ }
+
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifact.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifact.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifact.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,240 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.maven;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.jboss.profileservice.version.helpers.VersionSupport;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class MavenArtifact extends VersionSupport implements MavenArtifactId
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -4126849949276732212L;
+
+ /** The default packaging type. */
+ public static final String DEFAULT_PACKAGING = "jar";
+
+ /** The group id. */
+ private String groupId;
+
+ /** The artifact id. */
+ private String artifactId;
+
+ /** The classifier. */
+ private String classifier;
+
+ /** The packaging type. */
+ private String packagingType;
+
+ public MavenArtifact()
+ {
+ packagingType = DEFAULT_PACKAGING;
+ }
+
+ public MavenArtifact(String groupId, String artifactId)
+ {
+ this(groupId, artifactId, DEFAULT_PACKAGING);
+ }
+
+ public MavenArtifact(String groupId, String artifactId, String packaging)
+ {
+ if(groupId == null)
+ throw new IllegalArgumentException("null group id");
+ if(artifactId == null)
+ throw new IllegalArgumentException("null artifact id");
+ if(packaging == null)
+ throw new IllegalArgumentException("null packaging");
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.packagingType = packaging;
+ }
+
+ @Override
+ @XmlTransient
+ public String getType()
+ {
+ return MavenArtifact.TYPE;
+ }
+
+ /**
+ * Get the groud id.
+ *
+ * @return the groud id
+ */
+ @XmlAttribute(name = "groupId")
+ public String getGroupId()
+ {
+ return this.groupId;
+ }
+
+ /**
+ * Set the group id.
+ *
+ * @param groupId the group id
+ */
+ public void setGroupId(String groupId)
+ {
+ this.groupId = groupId;
+ }
+
+ /**
+ * Get the artifact id.
+ *
+ * @return the artifact id
+ */
+ @XmlAttribute(name = "artifactId")
+ public String getArtifactId()
+ {
+ return this.artifactId;
+ }
+
+ /**
+ * Set the artifact id.
+ *
+ * @param artifactId the artifact id
+ */
+ public void setArtifactId(String artifactId)
+ {
+ this.artifactId = artifactId;
+ }
+
+ /**
+ * Get the classifier.
+ *
+ * @return the classifier
+ */
+ @XmlAttribute(name = "classifier")
+ public String getClassifier()
+ {
+ return classifier;
+ }
+
+ /**
+ * Set the classifier.
+ *
+ * @param classifier the classifier
+ */
+ public void setClassifier(String classifier)
+ {
+ this.classifier = classifier;
+ }
+
+ /**
+ * Get the packaging type.
+ *
+ * @return the packaging type
+ */
+ @XmlAttribute(name = "packaging")
+ public String getPackagingType()
+ {
+ return packagingType;
+ }
+
+ /**
+ * Set the packaging type.
+ *
+ * @param packaging the packaging type
+ */
+ public void setPackagingType(String packaging)
+ {
+ this.packagingType = packaging;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = 17;
+ if(groupId != null)
+ result = 31 * result + groupId.hashCode();
+ if(artifactId != null)
+ result = 31 * result + artifactId.hashCode();
+ if(classifier != null)
+ result = 31 * result + classifier.hashCode();
+ if(packagingType != null)
+ result = 31 * result + packagingType.hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if(this == obj)
+ return true;
+ if(obj == null || obj instanceof MavenArtifact == false)
+ return false;
+ MavenArtifact other = (MavenArtifact) obj;
+ if(equals(this.getGroupId(), other.getGroupId()) == false)
+ return false;
+ if(equals(this.getArtifactId(), other.getArtifactId()) == false)
+ return false;
+ if(equals(this.getClassifier(), other.getClassifier()) == false)
+ return false;
+ if(equals(this.getPackagingType(), other.getPackagingType()) == false)
+ return false;
+ return super.equals(other);
+ }
+
+ protected static boolean equals(Object one, Object two)
+ {
+ if (one == null && two == null)
+ return true;
+ if (one == null && two != null)
+ return false;
+ return one.equals(two);
+ }
+
+ @Override
+ public boolean matches(MavenArtifactId artifact)
+ {
+ return equals(artifact);
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(getClass().getSimpleName());
+ buffer.append("{");
+ toString(buffer);
+ buffer.append("}");
+ return buffer.toString();
+ }
+
+ /**
+ * For subclasses to override toString()
+ *
+ * @param buffer the buffer
+ */
+ protected void toString(StringBuffer buffer)
+ {
+ buffer.append("group=").append(getGroupId());
+ buffer.append(", artifact=").append(getGroupId());
+ buffer.append(", version=").append(getVersion().toString());
+ }
+
+}
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactId.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactId.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactId.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,42 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.maven;
+
+import org.jboss.profileservice.spi.repository.ArtifactId;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface MavenArtifactId extends ArtifactId
+{
+
+ static final String TYPE = MavenArtifactId.class.getName();
+
+ String getGroupId();
+ String getArtifactId();
+ String getClassifier();
+ String getPackagingType();
+
+ boolean matches(MavenArtifactId artifact);
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactReference.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactReference.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactReference.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,262 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.maven;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.jboss.profileservice.version.helpers.VersionRangeSupport;
+
+/**
+ * A reference to a MavenArtifact.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class MavenArtifactReference extends VersionRangeSupport implements MavenArtifactId
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -9012276056014129322L;
+
+ /** The default packaging type. */
+ public static final String DEFAULT_PACKAGING = "jar";
+
+ /** The group id. */
+ private String groupId;
+
+ /** The artifact id. */
+ private String artifactId;
+
+ /** The classifier. */
+ private String classifier;
+
+ /** The packaging type. */
+ private String packagingType;
+
+ public MavenArtifactReference()
+ {
+ super();
+ packagingType = DEFAULT_PACKAGING;
+ }
+
+ public MavenArtifactReference(String groupId, String artifactId)
+ {
+ this(groupId, artifactId, DEFAULT_PACKAGING);
+ }
+
+ public MavenArtifactReference(String groupId, String artifactId, String packaging)
+ {
+ super();
+ if(groupId == null)
+ throw new IllegalArgumentException("null group id");
+ if(artifactId == null)
+ throw new IllegalArgumentException("null artifact id");
+ if(packaging == null)
+ throw new IllegalArgumentException("null packaging");
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.packagingType = packaging;
+ }
+
+ @Override
+ @XmlTransient
+ public String getType()
+ {
+ return MavenArtifact.TYPE;
+ }
+
+ /**
+ * Get the groud id.
+ *
+ * @return the groud id
+ */
+ @XmlAttribute(name = "groupId")
+ public String getGroupId()
+ {
+ return this.groupId;
+ }
+
+ /**
+ * Set the group id.
+ *
+ * @param groupId the group id
+ */
+ public void setGroupId(String groupId)
+ {
+ this.groupId = groupId;
+ }
+
+ /**
+ * Get the artifact id.
+ *
+ * @return the artifact id
+ */
+ @XmlAttribute(name = "artifactId")
+ public String getArtifactId()
+ {
+ return this.artifactId;
+ }
+
+ /**
+ * Set the artifact id.
+ *
+ * @param artifactId the artifact id
+ */
+ public void setArtifactId(String artifactId)
+ {
+ this.artifactId = artifactId;
+ }
+
+ /**
+ * Get the classifier.
+ *
+ * @return the classifier
+ */
+ @XmlAttribute(name = "classifier")
+ public String getClassifier()
+ {
+ return classifier;
+ }
+
+ /**
+ * Set the classifier.
+ *
+ * @param classifier the classifier
+ */
+ public void setClassifier(String classifier)
+ {
+ this.classifier = classifier;
+ }
+
+ /**
+ * Get the packaging type.
+ *
+ * @return the packaging type
+ */
+ @XmlAttribute(name = "packaging")
+ public String getPackagingType()
+ {
+ return packagingType;
+ }
+
+ /**
+ * Set the packaging type.
+ *
+ * @param packaging the packaging type
+ */
+ public void setPackagingType(String packaging)
+ {
+ this.packagingType = packaging;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = 17;
+ if(groupId != null)
+ result = 31 * result + groupId.hashCode();
+ if(artifactId != null)
+ result = 31 * result + artifactId.hashCode();
+ if(classifier != null)
+ result = 31 * result + classifier.hashCode();
+ if(packagingType != null)
+ result = 31 * result + packagingType.hashCode();
+ result = 31 * result + super.hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if(this == obj)
+ return true;
+ if(obj == null || obj instanceof MavenArtifactReference == false)
+ return false;
+ MavenArtifactReference other = (MavenArtifactReference) obj;
+
+ if(artifactEquals(other) == false)
+ return false;
+
+ return super.equals(other);
+ }
+
+ protected boolean artifactEquals(MavenArtifactId other)
+ {
+ if(equals(this.getGroupId(), other.getGroupId()) == false)
+ return false;
+ if(equals(this.getArtifactId(), other.getArtifactId()) == false)
+ return false;
+ if(equals(this.getClassifier(), other.getClassifier()) == false)
+ return false;
+ if(equals(this.getPackagingType(), other.getPackagingType()) == false)
+ return false;
+ return true;
+ }
+
+ protected static boolean equals(Object one, Object two)
+ {
+ if (one == null && two == null)
+ return true;
+ if (one == null && two != null)
+ return false;
+ return one.equals(two);
+ }
+
+ @Override
+ public boolean matches(MavenArtifactId artifact)
+ {
+ if(artifact == null || artifact instanceof MavenArtifact == false)
+ return false;
+
+ MavenArtifact other = (MavenArtifact) artifact;
+ if(artifactEquals(other) == false)
+ return false;
+
+ return getVersionRange().isInRange(other.getVersion());
+
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(getClass().getSimpleName());
+ buffer.append("{");
+ toString(buffer);
+ buffer.append("}");
+ return buffer.toString();
+ }
+
+ /**
+ * For subclasses to override toString()
+ *
+ * @param buffer the buffer
+ */
+ protected void toString(StringBuffer buffer)
+ {
+ buffer.append("group=").append(getGroupId());
+ buffer.append(", artifact=").append(getArtifactId());
+ buffer.append(", version=").append(getVersionRange().toString());
+ }
+
+}
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactRepositoryMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactRepositoryMetaData.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifactRepositoryMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.repository.artifact.maven;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at XmlRootElement(name = "repository")
+ at XmlType(propOrder = {"artifacts"})
+public class MavenArtifactRepositoryMetaData
+{
+
+ /** The available artifacts. */
+ private List<MavenArtifact> artifacts;
+
+ @XmlElement(name = "artifact")
+ public List<MavenArtifact> getArtifacts()
+ {
+ return artifacts;
+ }
+
+ public void setArtifacts(List<MavenArtifact> artifacts)
+ {
+ this.artifacts = artifacts;
+ }
+}
+
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/package-info.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/package-info.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/package-info.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+ at JBossXmlAdaptedTypes
+({
+ @JBossXmlAdaptedType(type=Version.class, valueAdapter=VersionValueAdapter.class)
+})
+package org.jboss.profileservice.repository.artifact.maven;
+
+import org.jboss.profileservice.version.Version;
+import org.jboss.profileservice.version.helpers.VersionValueAdapter;
+import org.jboss.xb.annotations.JBossXmlAdaptedType;
+import org.jboss.xb.annotations.JBossXmlAdaptedTypes;
+
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/VirtualDeploymentRepositoryBase.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/VirtualDeploymentRepositoryBase.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/VirtualDeploymentRepositoryBase.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -21,12 +21,65 @@
*/
package org.jboss.profileservice.repository.virtual;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+
/**
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
public class VirtualDeploymentRepositoryBase
{
+
+ /** The deployments. */
+ private List<VirtualDeployment> deployments = new ArrayList<VirtualDeployment>();
+
+ /** The deployments by name. */
+ private Map<String, VirtualDeployment> deploymentsByName = new HashMap<String, VirtualDeployment>();
+
+ public VirtualDeploymentRepositoryBase(VirtualRepositoryMetaData metaData)
+ {
+ if(metaData == null)
+ {
+ throw new IllegalArgumentException("null repository meta data");
+ }
+ if(metaData.getDeployments() != null)
+ {
+ // Initialize repository
+ initialize(metaData.getDeployments());
+ }
+ }
+
+ protected List<VirtualDeployment> getDeployments()
+ {
+ return this.deployments;
+ }
+
+ public VirtualDeployment resolveDeployment(String name)
+ {
+ if(name == null)
+ {
+ throw new IllegalArgumentException("null deployment name");
+ }
+ return this.deploymentsByName.get(name);
+ }
+ protected void initialize(List<VirtualDeployment> deployments)
+ {
+ for(VirtualDeployment deployment : deployments)
+ {
+ String deploymentName = deployment.getName();
+ if(this.deploymentsByName.containsKey(deploymentName))
+ throw new IllegalStateException("duplicate deployment name.");
+
+ this.deploymentsByName.put(deploymentName, deployment);
+ this.deployments.add(deployment);
+ }
+ }
+
}
Deleted: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractCapability.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractCapability.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractCapability.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -1,99 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2007, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.profileservice.version.helpers;
-
-import org.jboss.profileservice.spi.dependency.ProfileCapability;
-
-/**
- * AbstractCapability.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractCapability extends NameAndVersionSupport implements ProfileCapability
-{
- /** The serialVersionUID */
- private static final long serialVersionUID = 1099174558119868306L;
-
- /**
- * Create a new AbstractCapability
- */
- public AbstractCapability()
- {
- }
-
- /**
- * Create a new AbstractCapability
- *
- * @param name the name
- * @throws IllegalArgumentException for a null name
- */
- public AbstractCapability(String name)
- {
- super(name);
- }
-
- /**
- * Create a new AbstractCapability.
- *
- * @param name the name
- * @param version the version - pass null for the default version
- * @throws IllegalArgumentException for a null name
- */
- public AbstractCapability(String name, Object version)
- {
- super(name, version);
- }
-
- @Override
- public boolean equals(Object obj)
- {
- if (obj == this)
- return true;
- if (obj == null || obj instanceof AbstractCapability == false)
- return false;
- return super.equals(obj);
- }
-
- @Override
- public String toString()
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append(getClass().getSimpleName());
- buffer.append("{");
- toString(buffer);
- buffer.append("}");
- return buffer.toString();
- }
-
- /**
- * For subclasses to override toString()
- *
- * @param buffer the buffer
- */
- protected void toString(StringBuffer buffer)
- {
- buffer.append(getName());
- buffer.append(" ").append(getVersion());
- }
-}
Deleted: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractRequirement.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractRequirement.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/AbstractRequirement.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -1,164 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2007, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.profileservice.version.helpers;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-import org.jboss.profileservice.spi.dependency.ProfileRequirement;
-import org.jboss.profileservice.version.VersionRange;
-
-/**
- * AbstractRequirement.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision: 1.1 $
- */
-public class AbstractRequirement extends NameAndVersionRangeSupport implements ProfileRequirement
-{
- /** The serialVersionUID */
- private static final long serialVersionUID = -1L;
-
- /** Whether the requirement is optional */
- private boolean optional = false;
-
- /**
- * Create a new AbstractRequirement
- */
- public AbstractRequirement()
- {
- }
-
- /**
- * Create a new AbstractRequirement
- *
- * @param name the name
- * @throws IllegalArgumentException for a null name
- */
- public AbstractRequirement(String name)
- {
- super(name);
- }
-
- /**
- * Create a new AbstractRequirement.
- *
- * @param name the name
- * @param versionRange the version range - pass null for all versions
- * @throws IllegalArgumentException for a null name
- */
- public AbstractRequirement(String name, VersionRange versionRange)
- {
- super(name, versionRange);
- }
-
- public boolean isOptional()
- {
- return optional;
- }
-
- /**
- * Set the optional.
- *
- * @param optional the optional.
- */
- @XmlAttribute(name="optional")
- public void setOptional(boolean optional)
- {
- this.optional = optional;
- }
-
- public boolean isConsistent(ProfileRequirement other)
- {
- return isConsistent(other, null);
- }
-
- /**
- * Check whether the requirements are consistent
- *
- * @param other the other requirement
- * @param requirementType the class to check when looking for inconsistencies (uses getClass() when null)
- * @return true when consistent, false otherwise
- */
- protected boolean isConsistent(ProfileRequirement other, Class<? extends ProfileRequirement> requirementType)
- {
- if (other == null)
- throw new IllegalArgumentException("Null requirement");
- if (requirementType == null)
- requirementType = getClass();
-
- // Not our type
- if (requirementType.isInstance(other) == false)
- return true;
-
- AbstractRequirement otherRequirement = (AbstractRequirement) other;
- // Not the same name
- String name = getName();
- String otherName = otherRequirement.getName();
- if (name.equals(otherName) == false)
- return true;
-
- // Check the version ranges are consistent
- VersionRange range = getVersionRange();
- VersionRange otherRange = otherRequirement.getVersionRange();
- return range.isConsistent(otherRange);
- }
-
- @Override
- public boolean equals(Object obj)
- {
- if (obj == this)
- return true;
- if (obj == null || obj instanceof AbstractRequirement == false)
- return false;
- if (super.equals(obj) == false)
- return false;
- AbstractRequirement other = (AbstractRequirement) obj;
- if (this.isOptional() != other.isOptional())
- return false;
- return true;
- }
-
- @Override
- public String toString()
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append(getClass().getSimpleName());
- buffer.append("{");
- toString(buffer);
- buffer.append("}");
- return buffer.toString();
- }
-
- /**
- * For subclasses to override toString()
- *
- * @param buffer the buffer
- */
- protected void toString(StringBuffer buffer)
- {
- buffer.append(getName());
- buffer.append(" ").append(getVersionRange());
- if (isOptional())
- buffer.append(" OPTIONAL");
- }
-}
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionRangeSupport.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionRangeSupport.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionRangeSupport.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,274 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.version.helpers;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.jboss.metatype.api.annotations.CompositeKey;
+import org.jboss.metatype.api.annotations.CompositeValue;
+import org.jboss.profileservice.version.Version;
+import org.jboss.profileservice.version.VersionRange;
+
+/**
+ * NameAndVersionRangeSupport.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VersionRangeSupport implements Serializable
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -8513078180234534850L;
+
+ /** The version range */
+ private VersionRange versionRange = VersionRange.ALL_VERSIONS;
+
+ public VersionRangeSupport()
+ {
+
+ }
+
+ /**
+ * Create a new VersionRangeSupport.
+ *
+ * @param versionRange the version range - pass null for all versions
+ * @throws IllegalArgumentException for a null name
+ */
+ public VersionRangeSupport(VersionRange versionRange)
+ {
+ if (versionRange == null)
+ versionRange = VersionRange.ALL_VERSIONS;
+ this.versionRange = versionRange;
+ }
+
+ /**
+ * Get the versionRange.
+ *
+ * @return the versionRange.
+ */
+ public VersionRange getVersionRange()
+ {
+ return versionRange;
+ }
+
+ /**
+ * Set the versionRange.
+ *
+ * @param versionRange the versionRange.
+ */
+ @CompositeValue(ignore=true)
+ @XmlTransient
+ public void setVersionRange(VersionRange versionRange)
+ {
+ if (versionRange == null)
+ versionRange = VersionRange.ALL_VERSIONS;
+ this.versionRange = versionRange;
+ }
+
+ /**
+ * Get the fromVersion.
+ *
+ * @return the fromVersion.
+ */
+ public Object getFrom()
+ {
+ return versionRange.getLow();
+ }
+
+ /**
+ * Set the fromVersion.
+ *
+ * @param fromVersion the fromVersion.
+ */
+ @CompositeValue(ignore=true)
+ @XmlTransient
+ public void setFrom(Object fromVersion)
+ {
+ versionRange = new VersionRange(fromVersion, versionRange.isLowInclusive(), versionRange.getHigh(), versionRange.isHighInclusive());
+ }
+
+ /**
+ * Get the fromVersion.
+ *
+ * @return the fromVersion.
+ */
+ public Version getFromVersion()
+ {
+ Object from = getFrom();
+ if (from == null)
+ return null;
+ if (from instanceof Version)
+ return (Version) from;
+ if (from instanceof String)
+ return Version.parseVersion((String) from);
+ throw new IllegalStateException(from + " is not an instance of version");
+ }
+
+ /**
+ * Set the fromVersion.
+ *
+ * @param fromVersion the fromVersion.
+ */
+ @CompositeKey
+ @CompositeValue(name="from")
+ @XmlAttribute(name="from")
+ public void setFromVersion(Version fromVersion)
+ {
+ setFrom(fromVersion);
+ }
+
+ /**
+ * Get the fromVersionInclusive.
+ *
+ * @return the fromVersionInclusive.
+ */
+ public boolean isFromVersionInclusive()
+ {
+ return versionRange.isLowInclusive();
+ }
+
+ /**
+ * Set the fromVersionInclusive.
+ *
+ * @param fromVersionInclusive the fromVersionInclusive.
+ */
+ @CompositeKey
+ @XmlAttribute(name="from-inclusive")
+ public void setFromVersionInclusive(boolean fromVersionInclusive)
+ {
+ versionRange = new VersionRange(versionRange.getLow(), fromVersionInclusive, versionRange.getHigh(), versionRange.isHighInclusive());
+ }
+
+ /**
+ * Get the toVersion.
+ *
+ * @return the toVersion.
+ */
+ public Object getTo()
+ {
+ return versionRange.getHigh();
+ }
+
+ /**
+ * Set the toVersion.
+ *
+ * @param toVersion the toVersion.
+ */
+ @CompositeValue(ignore=true)
+ @XmlTransient
+ public void setTo(Object toVersion)
+ {
+ versionRange = new VersionRange(versionRange.getLow(), versionRange.isLowInclusive(), toVersion, versionRange.isHighInclusive());
+ }
+
+ /**
+ * Get the toVersion.
+ *
+ * @return the toVersion.
+ */
+ public Version getToVersion()
+ {
+ Object to = getTo();
+ if (to == null)
+ return null;
+ if (to instanceof Version)
+ return (Version) to;
+ if (to instanceof String)
+ return Version.parseVersion((String) to);
+ throw new IllegalStateException(to + " is not an instance of version");
+ }
+
+ /**
+ * Set the toVersion.
+ *
+ * @param toVersion the toVersion.
+ */
+ @CompositeKey
+ @CompositeValue(name="to")
+ @XmlAttribute(name="to")
+ public void setToVersion(Version toVersion)
+ {
+ setTo(toVersion);
+ }
+
+ /**
+ * Get the toVersionInclusive.
+ *
+ * @return the toVersionInclusive.
+ */
+ public boolean isToVersionInclusive()
+ {
+ return versionRange.isHighInclusive();
+ }
+
+ /**
+ * Set the toVersionInclusive.
+ *
+ * @param toVersionInclusive the toVersionInclusive.
+ */
+ @CompositeKey
+ @XmlAttribute(name="to-inclusive")
+ public void setToVersionInclusive(boolean toVersionInclusive)
+ {
+ versionRange = new VersionRange(versionRange.getLow(), versionRange.isLowInclusive(), versionRange.getHigh(), toVersionInclusive);
+ }
+
+ /**
+ * Set a single version as the version range
+ *
+ * @param version the version
+ */
+ @CompositeValue(ignore=true)
+ @XmlAttribute(name="version")
+ public void setVersion(Version version)
+ {
+ versionRange = new VersionRange(version, true, version, true);
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ return true;
+ if (obj == null || obj instanceof VersionRangeSupport == false)
+ return false;
+ VersionRangeSupport other = (VersionRangeSupport) obj;
+ return getVersionRange().equals(other.getVersionRange());
+ }
+
+ @Override
+ public int hashCode()
+ {
+ // TODO
+ return getVersionRange().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getSimpleName() + " " + getVersionRange();
+ }
+}
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionSupport.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionSupport.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/version/helpers/VersionSupport.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,159 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.version.helpers;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.metatype.api.annotations.CompositeKey;
+import org.jboss.metatype.api.annotations.CompositeValue;
+import org.jboss.profileservice.version.Version;
+import org.jboss.profileservice.version.VersionComparatorRegistry;
+
+/**
+ * NameAndVersionSupport.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VersionSupport implements Serializable, Cloneable
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 567802402548049423L;
+
+ /** The version */
+ private Object version = Version.DEFAULT_VERSION;
+
+ /**
+ * Create a new VersionSupport with the default version
+ */
+ public VersionSupport()
+ {
+ }
+
+ /**
+ * Create a new VersionSupport.
+ *
+ * @param version the version - pass null for default version
+ * @throws IllegalArgumentException for a null name
+ */
+ public VersionSupport(Object version)
+ {
+ if (version == null)
+ version = Version.DEFAULT_VERSION;
+ this.version = version;
+ }
+
+ /**
+ * Get the version.
+ *
+ * @return the version.
+ */
+ public Object getVersion()
+ {
+ return version;
+ }
+
+ /**
+ * Set the version.
+ *
+ * @param version the version.
+ */
+ @CompositeValue(ignore=true)
+ @XmlTransient
+ public void setVersion(Object version)
+ {
+ if (version == null)
+ version = Version.DEFAULT_VERSION;
+ this.version = version;
+ }
+
+ /**
+ * Get the version.
+ *
+ * @return the version.
+ */
+ public Version getTheVersion()
+ {
+ Object version = getVersion();
+ if (version instanceof Version)
+ return (Version) version;
+ if (version instanceof String)
+ return Version.parseVersion((String) version);
+ throw new IllegalStateException(version + " is not an instanceof version");
+ }
+
+ /**
+ * Set the version.
+ *
+ * @param version the version.
+ */
+ @CompositeKey
+ @CompositeValue(name="version")
+ @ManagementProperty(name="version")
+ @XmlAttribute(name="version")
+ public void setTheVersion(Version version)
+ {
+ setVersion(version);
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ return true;
+ if (obj == null || obj instanceof VersionSupport == false)
+ return false;
+ VersionSupport other = (VersionSupport) obj;
+ return VersionComparatorRegistry.getInstance().same(getVersion(), other.getVersion());
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return getVersion().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getSimpleName() + " " + getVersion();
+ }
+
+ @Override
+ public VersionSupport clone()
+ {
+ try
+ {
+ VersionSupport clone = (VersionSupport) super.clone();
+ return clone;
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new RuntimeException("Unexpected", e);
+ }
+ }
+}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/AbstractVirtualDeploymentAssembly.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/AbstractVirtualDeploymentAssembly.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/AbstractVirtualDeploymentAssembly.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -24,6 +24,8 @@
import java.io.IOException;
import java.net.URL;
+import org.jboss.profileservice.spi.repository.ArtifactId;
+import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.virtual.ClassPathLocation;
import org.jboss.profileservice.spi.virtual.MetaDataLocation;
import org.jboss.profileservice.spi.virtual.VirtualDeployment;
@@ -47,6 +49,18 @@
/** The assembled context factory. */
private final AssembledContextFactory assemblyFactory = AssembledContextFactory.getInstance();
+ /** The artifact repository. */
+ private final ArtifactRepository<ArtifactId> repository;
+
+ public AbstractVirtualDeploymentAssembly(ArtifactRepository<ArtifactId> repository)
+ {
+ if(repository == null)
+ {
+ throw new IllegalArgumentException("null artifact repository");
+ }
+ this.repository = repository;
+ }
+
/**
* Assemble a virtual deployment.
*
@@ -185,12 +199,18 @@
{
if(deployment.getPath() != null)
{
- VirtualFile vf = getVirtualFile(deployment.getPath());
+ VirtualFile vf = getVirtualFile(deployment.getPath());
return new ImmutableAssemblyContext(vf);
}
return null;
}
+ public VirtualFile getVirtualFile(ArtifactId artifact) throws IOException
+ {
+ return repository.getArtifact(artifact);
+ }
+
+
/**
* Get a VirtualFile root.
*
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/BasicVirtualAssemblyContext.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/BasicVirtualAssemblyContext.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/BasicVirtualAssemblyContext.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -30,8 +30,8 @@
import org.jboss.profileservice.spi.virtual.ClassPathLocation;
import org.jboss.profileservice.spi.virtual.MetaDataLocation;
import org.jboss.profileservice.spi.virtual.PathRestriction;
+import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
import org.jboss.profileservice.spi.virtual.VirtualDeployment;
-import org.jboss.profileservice.spi.virtual.VirtualPathMetaData;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.virtual.AssembledDirectory;
import org.jboss.virtual.VirtualFile;
@@ -153,17 +153,12 @@
getMetaDataLocations().addAll(addVirtualPath(vf, location));
}
- protected VirtualFile createPath(VirtualPathMetaData path) throws IOException
+ protected VirtualFile createPath(VirtualArtifactMetaData path) throws IOException
{
- VirtualFile file = getRoot().getChild(path.getPath());
- if(file == null)
- {
- file = assembly.getVirtualFile(path.getPath());
- }
- return file;
+ return assembly.getVirtualFile(path);
}
- protected Collection<String> addVirtualPath(VirtualFile location, VirtualPathMetaData path) throws IOException
+ protected Collection<String> addVirtualPath(VirtualFile location, VirtualArtifactMetaData path) throws IOException
{
return addVirtualPath(location, path.getIncludes(), path.getExcludes());
}
@@ -220,17 +215,19 @@
return true;
}
};
-
- // FIXME hack the VFS archive recursion madness
- recurse(location, recurseFilter, included);
+ // Process files
+ recurse(location, recurseFilter, included);
+
return included;
}
/**
* Recurse through the children.
*
- * FIXME this is a hack and should be handled by VFS correctly.
+ * FIXME this will stop at a .jar level as well - we might
+ * need better control when to recurse into a archive and when
+ * not.
*
* @param location the virtual file
* @param filter the accept filter
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/ImmutableAssemblyContext.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/ImmutableAssemblyContext.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/ImmutableAssemblyContext.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -67,7 +67,7 @@
{
throw new IllegalArgumentException("null class path location");
}
- addClassPathEntry(location.getPath());
+ // addClassPathEntry(location.getPath());
}
@Override
@@ -77,7 +77,7 @@
{
throw new IllegalArgumentException("null meta data location");
}
- addMetaDataLocation(location.getPath());
+ // addMetaDataLocation(location.getPath());
}
@Override
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeployment.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeployment.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeployment.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -23,17 +23,18 @@
import java.util.List;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlType;
+import org.jboss.profileservice.dependency.AbstractProfileCapability;
+import org.jboss.profileservice.dependency.AbstractProfileRequirement;
import org.jboss.profileservice.spi.dependency.ProfileRequirement;
import org.jboss.profileservice.spi.virtual.ClassPathLocation;
import org.jboss.profileservice.spi.virtual.MetaDataLocation;
+import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
import org.jboss.profileservice.spi.virtual.VirtualDeployment;
import org.jboss.profileservice.version.Version;
-import org.jboss.profileservice.version.helpers.AbstractCapability;
-import org.jboss.profileservice.version.helpers.NameAndVersionRangeSupport;
/**
* The virtual deployment meta data.
@@ -41,16 +42,16 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
- at XmlType(propOrder = {"name", "path", "theVersion", "metaDataLocations", "classPathLocations",
+ at XmlType(propOrder = {"name", "path", "metaDataLocations", "classPathLocations",
"requires", "children" })
-public class AbstractVirtualDeployment extends AbstractCapability implements VirtualDeployment
+public class AbstractVirtualDeployment extends AbstractProfileCapability implements VirtualDeployment
{
/** The serialVersionUID */
private static final long serialVersionUID = -1017243455955127135L;
- /** The path. */
- private String path;
+ /** The artifact id. */
+ private VirtualArtifactMetaData path;
/** The meta data locations. */
private List<MetaDataLocation> metaDataLocations;
@@ -62,7 +63,7 @@
private List<VirtualDeployment> children;
/** The requirements. */
- private List<NameAndVersionRangeSupport> requires;
+ private List<AbstractProfileRequirement> requires;
public AbstractVirtualDeployment()
{
@@ -89,8 +90,11 @@
*
* @return the path.
*/
- @XmlAttribute(name = "path")
- public String getPath()
+ @XmlElements({
+ @XmlElement(name = "file", type = AbstractVirtualFileArtifact.class),
+ @XmlElement(name = "artifact", type = VirtualMavenArtifactMetaData.class)
+ })
+ public VirtualArtifactMetaData getPath()
{
return path;
}
@@ -100,7 +104,7 @@
*
* @param path The path to set.
*/
- public void setPath(String path)
+ public void setPath(VirtualArtifactMetaData path)
{
this.path = path;
}
@@ -131,7 +135,10 @@
*
* @return the classPathLocations.
*/
- @XmlElement(name = "classpath", type = ClassPathLocationMetaData.class)
+ @XmlElements({
+ @XmlElement(name = "classpath", type = ClassPathLocationMetaData.class),
+ @XmlElement(name = "artifact", type = VirtualMavenArtifactMetaData.class)
+ })
public List<ClassPathLocation> getClassPathLocations()
{
return classPathLocations;
@@ -174,7 +181,7 @@
* @return the requirements
*/
@XmlElement(name = "requires", type = AbstractVirtualDeploymentRequirement.class)
- public List<NameAndVersionRangeSupport> getRequires()
+ public List<AbstractProfileRequirement> getRequires()
{
return requires;
}
@@ -184,7 +191,7 @@
*
* @param requires the requirements
*/
- public void setRequires(List<NameAndVersionRangeSupport> requires)
+ public void setRequires(List<AbstractProfileRequirement> requires)
{
this.requires = requires;
}
@@ -209,8 +216,18 @@
return true;
if (obj == null || obj instanceof AbstractVirtualDeployment == false)
return false;
+ // TODO
return super.equals(obj);
}
+ private static boolean equals(Object one, Object two)
+ {
+ if (one == null && two == null)
+ return true;
+ if (one == null && two != null)
+ return false;
+ return one.equals(two);
+ }
+
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeploymentRequirement.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeploymentRequirement.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeploymentRequirement.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -21,14 +21,14 @@
*/
package org.jboss.profileservice.virtual.deployment;
+import org.jboss.profileservice.dependency.AbstractProfileRequirement;
import org.jboss.profileservice.spi.dependency.ProfileRequirement;
-import org.jboss.profileservice.version.helpers.AbstractRequirement;
/**
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class AbstractVirtualDeploymentRequirement extends AbstractRequirement
+public class AbstractVirtualDeploymentRequirement extends AbstractProfileRequirement
implements ProfileRequirement
{
Copied: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualFileArtifact.java (from rev 92606, projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualPath.java)
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualFileArtifact.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualFileArtifact.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,122 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.profileservice.virtual.deployment;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.profileservice.repository.artifact.file.FileArtifact;
+import org.jboss.profileservice.spi.virtual.PathRestriction;
+import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
+
+/**
+ * The abstract virtual file set.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at XmlType(propOrder = { "path", "includes", "excludes" })
+public class AbstractVirtualFileArtifact extends FileArtifact implements VirtualArtifactMetaData
+{
+
+ /** The includes. */
+ private List<PathRestriction> includes;
+
+ /** The excludes. */
+ private List<PathRestriction> excludes;
+
+ public AbstractVirtualFileArtifact()
+ {
+ //
+ }
+
+ /**
+ * Get the includes.
+ *
+ * @return the includes
+ */
+ @XmlElement(name = "include", type = AntMatchRestriction.class)
+ public List<PathRestriction> getIncludes()
+ {
+ return includes;
+ }
+
+ /**
+ * Set the includes.
+ *
+ * @param includes The includes to set
+ */
+ public void setIncludes(List<PathRestriction> includes)
+ {
+ this.includes = includes;
+ }
+
+ /**
+ * Get the excludes.
+ *
+ * @return the excludes
+ */
+ @XmlElement(name = "exclude", type = AntMatchRestriction.class)
+ public List<PathRestriction> getExcludes()
+ {
+ return excludes;
+ }
+
+ /**
+ * Set the excludes.
+ *
+ * @param excludes The excludes to set
+ */
+ public void setExcludes(List<PathRestriction> excludes)
+ {
+ this.excludes = excludes;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(getClass().getSimpleName());
+ buffer.append("{");
+ toString(buffer);
+ buffer.append("}");
+ return buffer.toString();
+ }
+
+ /**
+ * For subclasses to override toString()
+ *
+ * @param buffer the buffer
+ */
+ protected void toString(StringBuffer buffer)
+ {
+ buffer.append("path=").append(getPath());
+ if(getIncludes() != null && getIncludes().isEmpty() == false)
+ buffer.append(", includes=-").append(getIncludes());
+ if(getExcludes() != null && getExcludes().isEmpty() == false)
+ buffer.append(", excludes=").append(getExcludes());
+ }
+
+}
+
Deleted: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualPath.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualPath.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualPath.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -1,151 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.profileservice.virtual.deployment;
-
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.jboss.profileservice.spi.virtual.PathRestriction;
-import org.jboss.profileservice.spi.virtual.VirtualPathMetaData;
-
-/**
- * The abstract virtual file set.
- *
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
- at XmlType(propOrder = { "path", "includes", "excludes" })
-public class AbstractVirtualPath implements VirtualPathMetaData
-{
-
- /** The path. */
- private String path;
-
- /** The includes. */
- private List<PathRestriction> includes;
-
- /** The excludes. */
- private List<PathRestriction> excludes;
-
- public AbstractVirtualPath()
- {
- //
- }
-
- public AbstractVirtualPath(String path)
- {
- this.path = path;
- }
-
- /**
- * Get the path.
- *
- * @return the path
- */
- @XmlAttribute(name = "path")
- public String getPath()
- {
- return path;
- }
-
- /**
- * Set the path.
- *
- * @param path The path to set
- */
- public void setPath(String path)
- {
- this.path = path;
- }
-
- /**
- * Get the includes.
- *
- * @return the includes
- */
- @XmlElement(name = "include", type = AntMatchRestriction.class)
- public List<PathRestriction> getIncludes()
- {
- return includes;
- }
-
- /**
- * Set the includes.
- *
- * @param includes The includes to set
- */
- public void setIncludes(List<PathRestriction> includes)
- {
- this.includes = includes;
- }
-
- /**
- * Get the excludes.
- *
- * @return the excludes
- */
- @XmlElement(name = "exclude", type = AntMatchRestriction.class)
- public List<PathRestriction> getExcludes()
- {
- return excludes;
- }
-
- /**
- * Set the excludes.
- *
- * @param excludes The excludes to set
- */
- public void setExcludes(List<PathRestriction> excludes)
- {
- this.excludes = excludes;
- }
-
- @Override
- public String toString()
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append(getClass().getSimpleName());
- buffer.append("{");
- toString(buffer);
- buffer.append("}");
- return buffer.toString();
- }
-
- /**
- * For subclasses to override toString()
- *
- * @param buffer the buffer
- */
- protected void toString(StringBuffer buffer)
- {
- buffer.append("path=").append(getPath());
- if(getIncludes() != null && getIncludes().isEmpty() == false)
- buffer.append(", includes=-").append(getIncludes());
- if(getExcludes() != null && getExcludes().isEmpty() == false)
- buffer.append(", excludes=").append(getExcludes());
- }
-
-}
-
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/ClassPathLocationMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/ClassPathLocationMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/ClassPathLocationMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -29,7 +29,7 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class ClassPathLocationMetaData extends AbstractVirtualPath implements ClassPathLocation
+public class ClassPathLocationMetaData extends AbstractVirtualFileArtifact implements ClassPathLocation
{
public ClassPathLocationMetaData()
@@ -37,9 +37,5 @@
super();
}
- public ClassPathLocationMetaData(String path)
- {
- super(path);
- }
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/MetaDataLocationMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/MetaDataLocationMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/MetaDataLocationMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -29,7 +29,7 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class MetaDataLocationMetaData extends AbstractVirtualPath implements MetaDataLocation
+public class MetaDataLocationMetaData extends AbstractVirtualFileArtifact implements MetaDataLocation
{
}
Added: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/VirtualMavenArtifactMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/VirtualMavenArtifactMetaData.java (rev 0)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/VirtualMavenArtifactMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,93 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.virtual.deployment;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.profileservice.repository.artifact.maven.MavenArtifactReference;
+import org.jboss.profileservice.spi.virtual.ClassPathLocation;
+import org.jboss.profileservice.spi.virtual.PathRestriction;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at XmlType(propOrder = {"includes", "excludes"})
+public class VirtualMavenArtifactMetaData extends MavenArtifactReference implements ClassPathLocation
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -4893207167288588653L;
+
+ /** The includes. */
+ private List<PathRestriction> includes;
+
+ /** The excludes. */
+ private List<PathRestriction> excludes;
+
+ /**
+ * Get the includes.
+ *
+ * @return the includes
+ */
+ @XmlElement(name = "include", type = AntMatchRestriction.class)
+ public List<PathRestriction> getIncludes()
+ {
+ return includes;
+ }
+
+ /**
+ * Set the includes.
+ *
+ * @param includes The includes to set
+ */
+ public void setIncludes(List<PathRestriction> includes)
+ {
+ this.includes = includes;
+ }
+
+ /**
+ * Get the excludes.
+ *
+ * @return the excludes
+ */
+ @XmlElement(name = "exclude", type = AntMatchRestriction.class)
+ public List<PathRestriction> getExcludes()
+ {
+ return excludes;
+ }
+
+ /**
+ * Set the excludes.
+ *
+ * @param excludes The excludes to set
+ */
+ public void setExcludes(List<PathRestriction> excludes)
+ {
+ this.excludes = excludes;
+ }
+
+}
+
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/ProfileServiceTestBase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/ProfileServiceTestBase.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/ProfileServiceTestBase.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -21,9 +21,15 @@
*/
package org.jboss.test.profileservice;
+import java.io.InputStream;
+import java.net.URL;
+
import junit.framework.TestCase;
import org.jboss.logging.Logger;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.builder.JBossXBBuilder;
/**
* The profileservice test base.
@@ -42,5 +48,32 @@
return this.log;
}
+ protected <T> T unmarshal(String resource, Class<T> clazz) throws Exception
+ {
+ URL url = getClass().getResource(resource);
+ return unmarshal(url.openStream(), clazz);
+ }
+
+ protected <T> T unmarshal(InputStream is, Class<T> clazz) throws Exception
+ {
+ try
+ {
+ Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+ return clazz.cast(unmarshaller.unmarshal(is, JBossXBBuilder.build(clazz)));
+ }
+ finally
+ {
+ try
+ {
+ if(is != null)
+ is.close();
+ }
+ catch(Exception ignore)
+ {
+ //
+ }
+ }
+ }
+
}
Added: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/repository/test/ArtifactRepositoryUnitTestCase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/repository/test/ArtifactRepositoryUnitTestCase.java (rev 0)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/repository/test/ArtifactRepositoryUnitTestCase.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,90 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.profileservice.repository.test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import org.jboss.profileservice.profile.metadata.ProfilesMetaData;
+import org.jboss.profileservice.repository.ProfileDeploymentFactory;
+import org.jboss.profileservice.repository.artifact.DelegatingArtifactRepository;
+import org.jboss.profileservice.repository.artifact.file.FileArtifact;
+import org.jboss.profileservice.repository.artifact.file.LocalFileArtifactRepository;
+import org.jboss.profileservice.repository.artifact.maven.LocalMavenArtifactRepository;
+import org.jboss.profileservice.repository.artifact.maven.MavenArtifactId;
+import org.jboss.profileservice.repository.artifact.maven.MavenArtifactRepositoryMetaData;
+import org.jboss.profileservice.spi.ProfileDeployment;
+import org.jboss.profileservice.spi.metadata.ProfileDeploymentMetaData;
+import org.jboss.profileservice.spi.metadata.ProfileMetaData;
+import org.jboss.profileservice.spi.repository.ArtifactRepository;
+import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
+import org.jboss.test.profileservice.ProfileServiceTestBase;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class ArtifactRepositoryUnitTestCase extends ProfileServiceTestBase
+{
+
+ public void testVirtualDeploymentAssembly() throws Exception
+ {
+ //
+ MavenArtifactRepositoryMetaData metaData = unmarshal(getIS("repository/artifacts.xml"), MavenArtifactRepositoryMetaData.class);
+ ProfilesMetaData profiles = unmarshal(getIS("repository/profiles.xml"), ProfilesMetaData.class);
+ DelegatingArtifactRepository repository = createRepository(metaData);
+
+ //
+ ProfileDeploymentFactory factory = new ProfileDeploymentFactory(repository);
+ for(ProfileMetaData md : profiles.getProfiles())
+ {
+ for(ProfileDeploymentMetaData deployment : md.getDeployments())
+ {
+ ProfileDeployment d = factory.createDeployment((VirtualDeployment) deployment);
+ assertNotNull(d);
+ assertNotNull(d.getAttachment(VirtualDeploymentAssemblyContext.class.getName()));
+ }
+ }
+ }
+
+ protected DelegatingArtifactRepository createRepository(MavenArtifactRepositoryMetaData metaData) throws IOException
+ {
+ DelegatingArtifactRepository repository = new DelegatingArtifactRepository();
+ repository.addRepository(FileArtifact.TYPE, (ArtifactRepository) new LocalFileArtifactRepository(getResource("repository/static")));
+ repository.addRepository(MavenArtifactId.TYPE, (ArtifactRepository) new LocalMavenArtifactRepository(metaData, getResource("repository")));
+ return repository;
+ }
+
+ protected InputStream getIS(String name) throws IOException
+ {
+ return getResource(name).openStream();
+ }
+
+ protected URL getResource(String name)
+ {
+ return Thread.currentThread().getContextClassLoader().getResource(name);
+ }
+
+}
+
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/AbstractVirtualAssemblyTestCase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/AbstractVirtualAssemblyTestCase.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/AbstractVirtualAssemblyTestCase.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -21,18 +21,18 @@
*/
package org.jboss.test.profileservice.virtual.test;
-import java.io.InputStream;
+import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
+import org.jboss.profileservice.repository.artifact.file.LocalFileArtifactRepository;
import org.jboss.profileservice.repository.virtual.VirtualRepositoryMetaData;
+import org.jboss.profileservice.spi.repository.ArtifactId;
+import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.virtual.VirtualDeployment;
import org.jboss.test.profileservice.ProfileServiceTestBase;
import org.jboss.virtual.VirtualFile;
-import org.jboss.xb.binding.Unmarshaller;
-import org.jboss.xb.binding.UnmarshallerFactory;
-import org.jboss.xb.builder.JBossXBBuilder;
/**
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
@@ -41,6 +41,15 @@
public abstract class AbstractVirtualAssemblyTestCase extends ProfileServiceTestBase
{
+ /** The repository location. */
+ protected final static String REPOSITORY_LOCATION = "repository/static";
+
+ protected ArtifactRepository<ArtifactId> createArtifactRepository(String name) throws IOException
+ {
+ URL rootURL = getResource(name);
+ return (ArtifactRepository) new LocalFileArtifactRepository(rootURL);
+ }
+
protected void assertIncluded(VirtualFile vf, String... children) throws Exception
{
for(String child : children)
@@ -60,18 +69,11 @@
deployments.put(deployment.getName(), deployment);
return deployments;
}
-
- protected <T> T unmarshal(String resource, Class<T> clazz) throws Exception
+
+ protected URL getResource(String name)
{
- URL url = getClass().getResource(resource);
- return unmarshal(url.openStream(), clazz);
+ return Thread.currentThread().getContextClassLoader().getResource(name);
}
- protected <T> T unmarshal(InputStream is, Class<T> clazz) throws Exception
- {
- Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
- return clazz.cast(unmarshaller.unmarshal(is, JBossXBBuilder.build(clazz)));
- }
-
}
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/StructureMetaDataUnitTestCase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/StructureMetaDataUnitTestCase.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/StructureMetaDataUnitTestCase.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -45,18 +45,19 @@
public class StructureMetaDataUnitTestCase extends AbstractVirtualAssemblyTestCase
{
- private final ProfileDeploymentFactory profileDeploymentFactory = ProfileDeploymentFactory.getInstance();
+ private ProfileDeploymentFactory profileDeploymentFactory;
private final VDFDeploymentBuilder mcDeploymentBuilder = VDFDeploymentBuilder.getInstance();
public void test() throws Exception
{
// Set the jboss.deployment.resources
- System.setProperty("jboss.deployment.resources", getClass().getResource(".").toExternalForm());
+ System.setProperty("jboss.deployment.resources", getResource(REPOSITORY_LOCATION).toExternalForm());
// Get the repository meta data
VirtualRepositoryMetaData repository = unmarshal("repository.xml", VirtualRepositoryMetaData.class);
Map<String, VirtualDeployment> deployments = mapDeployments(repository);
+ this.profileDeploymentFactory = new ProfileDeploymentFactory(createArtifactRepository(REPOSITORY_LOCATION));
for(VirtualDeployment d : repository.getDeployments())
{
ProfileDeployment pd = profileDeploymentFactory.createDeployment(d);
@@ -65,9 +66,11 @@
}
// test.simple
+ /**
VirtualDeployment simpleVD = deployments.get("simple.deployer");
ProfileDeployment simple = createProfileDeployment(simpleVD);
assertNull(createStructureMetaData(simple));
+ **/
// test.deployer
VirtualDeployment deployerVD = deployments.get("test.deployer");
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/VirtualDeploymentAssemblyUnitTestCase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/VirtualDeploymentAssemblyUnitTestCase.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/VirtualDeploymentAssemblyUnitTestCase.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -45,14 +45,14 @@
public void test() throws Exception
{
// Set the jboss.deployment.resources
- System.setProperty("jboss.deployment.resources", getClass().getResource(".").toExternalForm());
+ System.setProperty("jboss.deployment.resources", getResource(REPOSITORY_LOCATION).toExternalForm());
// Get the repository meta data
VirtualRepositoryMetaData repository = unmarshal("repository.xml", VirtualRepositoryMetaData.class);
Map<String, VirtualDeployment> deployments = mapDeployments(repository);
// Get the ProfileDeploymentFactory
- ProfileDeploymentFactory factory = ProfileDeploymentFactory.getInstance();
+ ProfileDeploymentFactory factory = new ProfileDeploymentFactory(createArtifactRepository(REPOSITORY_LOCATION));
// Test simple.deployer
AbstractVirtualDeployment simpleVD = (AbstractVirtualDeployment) deployments.get("simple.deployer");
@@ -73,7 +73,7 @@
"deployer.jar", "fake.jar", "fake2.jar"});
asssertExcluded(deployer.getRoot(), new String[] {"bad.jar"});
// Check requirement
- resolves(simpleVD, deployerVD.getRequires().get(0));
+ //resolves(simpleVD, deployerVD.getRequires().get(0));
log.debug(deployer.getRoot());
@@ -92,6 +92,8 @@
log.debug(deployment.getRoot());
log.debug(subDeploymentRoot);
+ // Test some VFS behavior
+ // This needs some updates in the AssembledFileHandler to allow children
log.debug(deployer.getRoot().getChildrenRecursively());
log.debug(deployment.getRoot().getChildrenRecursively());
Added: projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/profiles.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/profiles.xml (rev 0)
+++ projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/profiles.xml 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles
+ xmlns="urn:jboss:profileservice:profiles:1.0"
+ name="test">
+
+ <profile name="simple">
+ <deployment-ref name="simple.deployer" />
+ </profile>
+
+ <profile name="test.deployer">
+ <deployment-ref name="test.deployer" />
+ </profile>
+
+ <profile name="applications">
+ <deployment-ref name="test-deployment" />
+ </profile>
+
+</profiles>
\ No newline at end of file
Added: projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/repository.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/repository.xml (rev 0)
+++ projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/repository/test/repository.xml 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<virtual-repository xmlns="urn:jboss:profileservice:virtual:repository:1.0">
+
+<!--
+ // VFS-roots/Properties should maybe be defined in the domain.xml ?
+ // At least jboss-xb could already replace those then
+
+ <vfs-root name="jboss.home" value="vfsfile:/home/jboss-jboss-6.x" />
+ <vfs-root name="jboss.lib" value="${jboss.home}/lib" />
+ <vfs-root name="jboss.common.lib" value="${jboss.home}/common/lib" />
+ <vfs-root name="jboss.server.home" value="${jboss.home}/server" />
+ <vfs-root name="jboss.deployment.resources" path="${jboss.home}/common/deployments" />
+ -->
+
+ <!-- The simple.deployer -->
+ <virtual-deployment name="simple.deployer" version="1.1.0">
+ <file path="${jboss.deployment.resources}/simple-deployer-jboss-beans.xml"/>
+ </virtual-deployment>
+
+ <!-- The test.depoyer -->
+ <virtual-deployment name="test.deployer" version="2.0.1">
+ <meta-inf path="${jboss.deployment.resources}/test.deployer/meta-inf" />
+ <meta-inf path="${jboss.deployment.resources}/test.deployer/meta-inf2">
+ <include name="*.xml" />
+ <exclude name="*-beans.xml" />
+ </meta-inf>
+ <classpath path="${jboss.deployment.resources}/test.deployer/deployer.jar" />
+ <classpath path="${jboss.deployment.resources}/test.deployer/lib">
+ <include name="*.jar" />
+ <exclude name="bad.jar" />
+ </classpath>
+ <requires name="simple.deployer" from="1.0.0" to="2.0.0"/>
+ </virtual-deployment>
+
+ <!-- A test deployment -->
+ <virtual-deployment name="test-deployment">
+ <meta-inf path="${jboss.deployment.resources}/test-deployment/META-INF" />
+ <classpath path="${jboss.deployment.resources}/test-deployment/lib" />
+ <requires name="test.deployer" from="2.0.0" to="2.1.0"/>
+ <virtual-deployment name="test-sub-deployment">
+ <meta-inf path="${jboss.deployment.resources}/test-deployment/child/META-INF" />
+ <classpath path="${jboss.deployment.resources}/test-deployment/child/test.jar" />
+ </virtual-deployment>
+ </virtual-deployment>
+
+</virtual-repository>
Modified: projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/repository.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/repository.xml 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/repository.xml 2009-08-28 14:48:49 UTC (rev 92958)
@@ -13,9 +13,9 @@
-->
<!-- The simple.deployer -->
- <virtual-deployment name="simple.deployer"
- path="${jboss.deployment.resources}/simple-deployer-jboss-beans.xml"
- version="1.1.0" />
+ <virtual-deployment name="simple.deployer" version="1.1.0" >
+ <file path="${jboss.deployment.resources}/simple-deployer-jboss-beans.xml" />
+ </virtual-deployment>
<!-- The test.depoyer -->
<virtual-deployment name="test.deployer" version="2.0.1">
Deleted: projects/profileservice/trunk/core/src/test/resources/org/jboss/test/profileservice/virtual/test/simple-deployer-jboss-beans.xml
===================================================================
Added: projects/profileservice/trunk/core/src/test/resources/repository/artifacts.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/repository/artifacts.xml (rev 0)
+++ projects/profileservice/trunk/core/src/test/resources/repository/artifacts.xml 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,8 @@
+<repository>
+
+ <artifact groupId="org.jboss.test" artifactId="jboss-simple-deployer"
+ version="1.0.0.GA" packaging="xml" />
+ <artifact groupId="org.jboss.test" artifactId="test-common" version="2.0.0.SP1" />
+ <artifact groupId="org.jboss.test" artifactId="test-library" version="2.1.2.CR1" />
+
+</repository>
\ No newline at end of file
Added: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/jboss-simple-deployer/1.0.0.GA/jboss-simple-deployer-1.0.0.GA.xml
===================================================================
Added: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.0.0.SP1/test-common-2.0.0.SP1.jar
===================================================================
(Binary files differ)
Property changes on: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.0.0.SP1/test-common-2.0.0.SP1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.1.0.Alpha1/test-common-2.1.0.Alpha1.jar
===================================================================
(Binary files differ)
Property changes on: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-common/2.1.0.Alpha1/test-common-2.1.0.Alpha1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-library/2.1.2.CR1/test-library-2.1.2.CR1.jar
===================================================================
(Binary files differ)
Property changes on: projects/profileservice/trunk/core/src/test/resources/repository/org/jboss/test/test-library/2.1.2.CR1/test-library-2.1.2.CR1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/profileservice/trunk/core/src/test/resources/repository/profiles.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/repository/profiles.xml (rev 0)
+++ projects/profileservice/trunk/core/src/test/resources/repository/profiles.xml 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,29 @@
+<profiles xmlns="urn:jboss:profileservice:profiles:1.0"
+ name="profiles">
+
+<!--
+ <profile name="simple-deployer">
+ <virtual-deployment-artifact name="simple.deployer"
+ groupId="org.jboss.test" artifactId="jboss-simple-deployer" from="1.0.0" to="1.1.0" />
+ </profile>
+ -->
+ <profile name="test-deployer">
+ <virtual-deployment name="test-deployer">
+ <meta-inf path="test.deployer/meta-inf" />
+ <artifact groupId="org.jboss.test" artifactId="test-common" from="2.0.0" to="2.1.0" />
+ </virtual-deployment>
+ </profile>
+
+ <profile name="test-deployment">
+ <virtual-deployment name="test-deployment">
+ <meta-inf path="test-deployment/META-INF" />
+ <classpath path="test-deployment/lib" />
+
+ <virtual-deployment name="test-sub-deployment">
+ <meta-inf path="test-deployment/child/META-INF" />
+ <artifact groupId="org.jboss.test" artifactId="test-library" from="2.0.0" to="2.2.0" />
+ </virtual-deployment>
+ </virtual-deployment>
+ </profile>
+
+</profiles>
\ No newline at end of file
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/simple-deployer-jboss-beans.xml
===================================================================
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/META-INF/jboss-beans.xml
===================================================================
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/META-INF/jboss-beans.xml
===================================================================
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/test.jar
===================================================================
(Binary files differ)
Property changes on: projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/child/test.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/lib/deployment.jar
===================================================================
(Binary files differ)
Property changes on: projects/profileservice/trunk/core/src/test/resources/repository/static/test-deployment/lib/deployment.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/deployer.jar
===================================================================
(Binary files differ)
Property changes on: projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/deployer.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/meta-inf/test.xml
===================================================================
Added: projects/profileservice/trunk/core/src/test/resources/repository/static/test.deployer/meta-inf/test1.xml
===================================================================
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/helpers/AbstractSubProfileKeyMetaData.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/helpers/AbstractSubProfileKeyMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/helpers/AbstractSubProfileKeyMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -33,8 +33,9 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class AbstractSubProfileKeyMetaData extends AbstractProfileKeyMetaData implements SubProfileMetaData
+public abstract class AbstractSubProfileKeyMetaData extends AbstractProfileKeyMetaData implements SubProfileMetaData
{
+
public AbstractSubProfileKeyMetaData()
{
@@ -56,11 +57,6 @@
super(key);
}
- public boolean isOptional()
- {
- return false;
- }
-
public void visit(ProfileMetaDataVisitor visitor)
{
visitor.addRequirement(this);
Added: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactId.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactId.java (rev 0)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactId.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.spi.repository;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface ArtifactId extends Identifyable
+{
+
+ String getType();
+
+}
+
Added: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepository.java (rev 0)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepository.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,54 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.spi.repository;
+
+import java.io.IOException;
+
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface ArtifactRepository<T extends ArtifactId>
+{
+
+ /**
+ * Checks wheter this repository provides the specified
+ * artifact.
+ *
+ * @param artifact the artifact to resolve
+ * @return true if the artifact exists, false otherwise
+ */
+ boolean containsArtifact(T artifact);
+
+ /**
+ * Get a artifact from the repository.
+ *
+ * @param artifact the artifact
+ * @return the virtual file
+ * @throws IOException
+ */
+ VirtualFile getArtifact(T artifact) throws IOException;
+
+}
+
Added: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Identifyable.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Identifyable.java (rev 0)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Identifyable.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.profileservice.spi.repository;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface Identifyable
+{
+
+}
+
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/ClassPathLocation.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/ClassPathLocation.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/ClassPathLocation.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -27,7 +27,7 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public interface ClassPathLocation extends VirtualPathMetaData
+public interface ClassPathLocation extends VirtualArtifactMetaData
{
}
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/MetaDataLocation.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/MetaDataLocation.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/MetaDataLocation.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -27,7 +27,7 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public interface MetaDataLocation extends VirtualPathMetaData
+public interface MetaDataLocation extends VirtualArtifactMetaData
{
}
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/PathRestriction.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/PathRestriction.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/PathRestriction.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -22,6 +22,8 @@
package org.jboss.profileservice.spi.virtual;
/**
+ * Restriction when including a path.
+ *
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
@@ -31,8 +33,8 @@
/**
* Matches a path.
*
- * @param path
- * @return
+ * @param path the path name
+ * @return true if the restriction matches, false otherwise
*/
boolean matches(String path);
Copied: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualArtifactMetaData.java (from rev 92566, projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualPathMetaData.java)
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualArtifactMetaData.java (rev 0)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualArtifactMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.profileservice.spi.virtual;
+
+import java.util.List;
+
+import org.jboss.profileservice.spi.repository.ArtifactId;
+
+/**
+ * The virtual path meta data.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface VirtualArtifactMetaData extends ArtifactId
+{
+
+ /**
+ * Get the includes.
+ *
+ * @return the includes
+ */
+ List<PathRestriction> getIncludes();
+
+ /**
+ * Get the excludes.
+ *
+ * @return the excludes
+ */
+ List<PathRestriction> getExcludes();
+
+}
+
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeployment.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeployment.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeployment.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -23,7 +23,9 @@
import java.util.List;
+import org.jboss.profileservice.spi.repository.ArtifactId;
+
/**
* The virtual deployment.
*
@@ -40,12 +42,12 @@
*/
String getName();
- /**
- * Get the path of the virtual deployment.
+ /**
+ * Get the artifact id.
*
- * @return the path
+ * @return the artifact id
*/
- String getPath();
+ ArtifactId getPath();
/**
* Get the deployment's meta data locations.
Deleted: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualPathMetaData.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualPathMetaData.java 2009-08-28 14:48:42 UTC (rev 92957)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualPathMetaData.java 2009-08-28 14:48:49 UTC (rev 92958)
@@ -1,57 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.profileservice.spi.virtual;
-
-import java.util.List;
-
-/**
- * The virtual path meta data.
- *
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
-public interface VirtualPathMetaData
-{
-
- /**
- * The path.
- *
- * @return the path
- */
- String getPath();
-
- /**
- * Get the includes.
- *
- * @return the includes
- */
- List<PathRestriction> getIncludes();
-
- /**
- * Get the excludes.
- *
- * @return the excludes
- */
- List<PathRestriction> getExcludes();
-
-}
-
More information about the jboss-cvs-commits
mailing list