[jboss-cvs] JBossAS SVN: r101822 - in projects/profileservice/trunk: core/src/main/java/org/jboss/profileservice/dependency and 27 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Mar 4 08:42:57 EST 2010
Author: emuckenhuber
Date: 2010-03-04 08:42:54 -0500 (Thu, 04 Mar 2010)
New Revision: 101822
Added:
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopProfileFactory.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactFilter.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeploymentMetaData.java
Removed:
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeployment.java
Modified:
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/bootstrap/AbstractProfileServiceInitializer.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileDependencyContext.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileMetaDataRegistry.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileRequirementDependencyItem.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileServiceController.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractDeploymentInfo.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractProfileDeployment.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/AbstractHDScannerFactory.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/HDScannerFactory.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyCapability.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyMetaData.java
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/BasicProfileDeploymentMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/ClassPathProfileMetaData.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/EmptyProfileMetaData.java
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/AbstractRepositoryId.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/ArtifactRepositoryManager.java
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/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/virtual/AbstractVirtualDeploymentRepository.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualProfileFactory.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/AbstractRequirementResolver.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNode.java
projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNodeDependency.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/test/java/org/jboss/test/profileservice/metadata/support/VirtualRepositoryMetaData.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/AbstractResolverTest.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/RequirementResolverTestSuite.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/UserRequirementUnitTestCase.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopArtifactRepository.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/test/BasicProfileServiceUnitTestCase.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestArtifactRepository.java
projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestVirtualDeploymentRepository.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/system/profiles/clustering-profiles.xml
projects/profileservice/trunk/core/src/test/resources/system/profiles/stack-profiles.xml
projects/profileservice/trunk/core/src/test/resources/system/profiles/web-profiles.xml
projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestComponentMetaData.java
projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestServiceComponentMetaData.java
projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/test/SimpleViewUnitTestCase.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileDeployment.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileKey.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/VirtualDeploymentRepository.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/ProfileDeploymentMetaData.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Artifact.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/ArtifactRepositoryId.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssembly.java
projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssemblyContext.java
Log:
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/bootstrap/AbstractProfileServiceInitializer.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/bootstrap/AbstractProfileServiceInitializer.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/bootstrap/AbstractProfileServiceInitializer.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -72,7 +72,7 @@
{
// initialize the config
config.setManagementDomain(createManagementDomain(domainMetaData));
- config.setServerConfiguration(createServerConfiguration(domainMetaData));
+ config.setServerConfiguration(createServerConfiguration(domainMetaData));
// Create profile service
return createProfileService();
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileDependencyContext.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileDependencyContext.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileDependencyContext.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -23,10 +23,12 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyItem;
import org.jboss.profileservice.deployment.ProfileDeployerPlugin;
import org.jboss.profileservice.metadata.helpers.AbstractProfileKeyCapability;
import org.jboss.profileservice.spi.ProfileKey;
@@ -72,7 +74,10 @@
/** The profile features. */
private List<ProfileFeatureMetaData> features = new ArrayList<ProfileFeatureMetaData>();
-
+
+ /** The iDependOn. */
+ private List<ProfileRequirementDependencyItem> iDependOn = new ArrayList<ProfileRequirementDependencyItem>();
+
public ProfileDependencyContext(ProfileKey key, ProfileMetaData metaData, ProfileMetaDataRegistry domain)
{
if(key == null)
@@ -132,6 +137,8 @@
public void addRequirement(ProfileRequirement requirement)
{
this.requirements.add(requirement);
+ // Create the dependency
+ this.iDependOn.add(createDependencyItem(requirement));
}
public Collection<ProfileCapability> getCapabilities()
@@ -144,6 +151,11 @@
return this.requirements;
}
+ public List<ProfileRequirementDependencyItem> getiDependOn()
+ {
+ return iDependOn;
+ }
+
@Override
public void addFeature(ProfileFeatureMetaData feature)
{
@@ -175,22 +187,26 @@
protected ProfileKey resolve(ProfileRequirementDependencyItem requirement)
{
- return domain.resolve(this, requirement.getRequirement());
+ return domain.resolve(this, requirement.getRequirement(), Collections.EMPTY_SET);
}
- protected void describe(ControllerContext context)
+ protected ProfileRequirementDependencyItem createDependencyItem(final ProfileRequirement requirement)
{
- // Create the dependencies
- Collection<ProfileRequirement> requirements = getRequirements();
- if(requirements != null && requirements.isEmpty() == false)
+ return new ProfileRequirementDependencyItem(this, requirement, ControllerState.INSTALLED);
+ }
+
+ protected void describe(ProfileControllerContext context)
+ {
+ // Add the dependencies
+ Collection<ProfileRequirementDependencyItem> dependencies = getiDependOn();
+ if(dependencies != null && dependencies.isEmpty() == false)
{
- for(ProfileRequirement requirement : requirements)
+ for(DependencyItem dependency : dependencies)
{
- context.getDependencyInfo().addIDependOn(
- new ProfileRequirementDependencyItem(this,
- requirement, ControllerState.DESCRIBED));
+ context.getDependencyInfo().addIDependOn(dependency);
}
}
+ context.setDependencyContext(this);
}
public String toString()
@@ -209,12 +225,5 @@
builder.append("key=").append(getKey());
}
-
- class RequirementWrapper
- {
- ProfileRequirement requirement;
- ProfileKey resolvesTo;
- }
-
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileMetaDataRegistry.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileMetaDataRegistry.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileMetaDataRegistry.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -24,8 +24,9 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;
import org.jboss.logging.Logger;
@@ -58,7 +59,7 @@
private List<ProfileDependencyContext> profiles = new CopyOnWriteArrayList<ProfileDependencyContext>();
/** The profiles by name. */
- private Map<String, ProfileDependencyContext> profilesByName = new ConcurrentHashMap<String, ProfileDependencyContext>();
+ private ConcurrentMap<String, ProfileDependencyContext> profilesByName = new ConcurrentHashMap<String, ProfileDependencyContext>();
/** The registered profiles. */
private List<ProfileKey> registeredProfiles = new ArrayList<ProfileKey>();
@@ -127,25 +128,29 @@
throw new IllegalArgumentException("empty profile name");
}
ProfileKey profileKey = createProfileKey(profileName);
- if(this.registeredProfiles.contains(profileKey))
- {
- if(failOnDuplicates)
- {
- throw new IllegalStateException("duplicate profile " + profileKey);
- }
- return profileKey;
- }
ProfileDependencyContext context = new ProfileDependencyContext(profileKey, metaData, this);
- addContext(context);
- return profileKey;
+ return addContext(context, failOnDuplicates);
}
- public void addContext(ProfileDependencyContext context)
+ public ProfileKey addContext(ProfileDependencyContext context)
{
+ return addContext(context, true);
+ }
+
+ public ProfileKey addContext(ProfileDependencyContext context, boolean failOnDuplicates)
+ {
if(context == null)
{
- throw new IllegalArgumentException("null context");
+ throw new IllegalArgumentException("null dependency context");
}
+ if(this.profilesByName.containsKey(context.getName()))
+ {
+ if(failOnDuplicates)
+ {
+ throw new IllegalStateException("duplicate profile " + context.getKey());
+ }
+ return context.getKey();
+ }
this.profiles.add(context);
this.registeredProfiles.add(context.getKey());
this.profilesByName.put(context.getName(), context);
@@ -154,8 +159,9 @@
// TODO
this.onDemandContexts.add(context.getKey());
}
+ return context.getKey();
}
-
+
public ProfileDependencyContext getContext(String name)
{
if(name == null)
@@ -220,13 +226,17 @@
return domainName;
}
- public ProfileKey resolve(ProfileDependencyContext ctx, ProfileRequirement requirement)
+ public ProfileKey resolve(ProfileDependencyContext ctx, ProfileRequirement requirement, Set<ProfileKey> excludes)
{
// Resolve the requirements based on the exposed capabilities
final boolean trace = log.isTraceEnabled();
ProfileKey resolved = null;
for(ProfileDependencyContext profile : profiles)
{
+ if(excludes.contains(profile.getKey()))
+ {
+ continue;
+ }
Collection<ProfileCapability> capabilities = profile.getCapabilities();
if(capabilities != null && capabilities.isEmpty() == false)
{
@@ -241,6 +251,7 @@
if(resolved == null)
{
resolved = profile.getKey();
+ break;
}
else
{
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileRequirementDependencyItem.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileRequirementDependencyItem.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileRequirementDependencyItem.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -56,15 +56,38 @@
this.requirement = requirement;
}
+ public ProfileKey getName()
+ {
+ return context.getKey();
+ }
+
+ public ProfileKey getIDependOn()
+ {
+ return ProfileKey.class.cast(super.getIDependOn());
+ }
+
public ProfileRequirement getRequirement()
{
return requirement;
}
+ public void setIDependOn(Object iDependOn)
+ {
+ super.setIDependOn(iDependOn);
+ }
+
@Override
public boolean resolve(Controller controller)
{
- ProfileKey iDependOn = getDependencyContext().resolve(this);
+ ProfileKey iDependOn = getIDependOn();
+ if(iDependOn == null)
+ {
+ iDependOn = getDependencyContext().resolve(this);
+ if(iDependOn != null)
+ {
+ setIDependOn(iDependOn);
+ }
+ }
// Not resolvable
if(iDependOn == null)
@@ -72,12 +95,11 @@
setResolved(getRequirement().isOptional());
return isResolved();
}
-
+
// Self dependencies
if(getName().equals(iDependOn))
{
ControllerContext context = controller.getContext(iDependOn, null);
- setIDependOn(iDependOn);
addDependsOnMe(controller, context);
setResolved(true);
return isResolved();
@@ -86,7 +108,6 @@
ControllerContext context = controller.getContext(iDependOn, getDependentState());
if(context != null)
{
- setIDependOn(iDependOn);
addDependsOnMe(controller, context);
setResolved(true);
return isResolved();
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileServiceController.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileServiceController.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/dependency/ProfileServiceController.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -173,7 +173,7 @@
metaDataRegistry.removeProfile(key);
}
- void install(ProfileDependencyContext context, Profile profile) throws Throwable
+ public void install(ProfileDependencyContext context, Profile profile) throws Throwable
{
ProfileControllerContext pCCtx = createControllerContext(context, profile);
controller.install(pCCtx);
@@ -213,8 +213,6 @@
kCtx.setMode(ControllerMode.MANUAL);
// Describe the the controller context
context.describe(kCtx);
- // Set the meta data context
- kCtx.setDependencyContext(context);
// Add the lifecycle callback
final LifecycleCallbackItem callbackItem = config.getLifeCycleActions();
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractDeploymentInfo.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractDeploymentInfo.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractDeploymentInfo.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -52,31 +52,41 @@
return this.name;
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public boolean hasFlag(ProfileDeploymentFlag flag)
{
return ((dFlags & flag.getFlag()) == flag.getFlag());
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public boolean isDeployed()
{
return hasFlag(ProfileDeploymentFlag.DEPLOYED);
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public boolean isLocked()
{
return hasFlag(ProfileDeploymentFlag.LOCKED);
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public void setFlag(ProfileDeploymentFlag flag)
{
dFlags |= flag.getFlag();
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public void clearFlag(ProfileDeploymentFlag flag)
{
dFlags &= ~flag.getFlag();
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractProfileDeployment.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractProfileDeployment.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/AbstractProfileDeployment.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -25,7 +25,6 @@
import org.jboss.profileservice.spi.ProfileDeployment;
import org.jboss.profileservice.spi.deployment.DeploymentAttachments;
import org.jboss.profileservice.spi.deployment.ProfileDeploymentInfo;
-import org.jboss.vfs.VFSUtils;
import org.jboss.vfs.VirtualFile;
/**
@@ -82,7 +81,7 @@
try
{
// URI without the trailing '/'
- return VFSUtils.fixName(root.toURI().toString());
+ return root.asFileURI().toString();
}
catch (Exception e)
{
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/AbstractHDScannerFactory.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/AbstractHDScannerFactory.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/AbstractHDScannerFactory.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -21,6 +21,8 @@
*/
package org.jboss.profileservice.deployment.hotdeploy;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ScheduledFuture;
@@ -123,6 +125,14 @@
/**
* {@inheritDoc}
*/
+ public Collection<Scanner> getRegisteredScanners()
+ {
+ return new ArrayList<Scanner>(this.registeredScans.values());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void activateScanner(ProfileKey key)
{
Scanner scanner = this.registeredScans.get(key);
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/HDScannerFactory.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/HDScannerFactory.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/deployment/hotdeploy/HDScannerFactory.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -21,6 +21,8 @@
*/
package org.jboss.profileservice.deployment.hotdeploy;
+import java.util.Collection;
+
import org.jboss.profileservice.spi.MutableProfile;
import org.jboss.profileservice.spi.ProfileKey;
@@ -61,7 +63,7 @@
* @return the Scanner created
*/
Scanner registerScanner(MutableProfile profile, ScannerConfiguration configuration);
-
+
/**
* Activate a scanner.
*
@@ -82,6 +84,13 @@
* @param key the profile key
*/
Scanner unregisterScanner(ProfileKey key);
+
+ /**
+ * Get the registered scanners.
+ *
+ * @return the registered scanners
+ */
+ Collection<Scanner> getRegisteredScanners();
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyCapability.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyCapability.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyCapability.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -52,7 +52,7 @@
{
if(other != null && other instanceof AbstractProfileKeyCapability)
{
- return getName().equals(AbstractProfileKeyCapability.class.cast(other)) == false;
+ return getName().equals(AbstractProfileKeyCapability.class.cast(other).getName()) == false;
}
return true;
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/metadata/helpers/AbstractProfileKeyMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -78,7 +78,7 @@
if (obj == null || obj instanceof AbstractProfileKeyMetaData == false)
return false;
- AbstractProfileKeyMetaData other = (AbstractProfileKeyMetaData) obj;
+ AbstractProfileKeyMetaData other = AbstractProfileKeyMetaData.class.cast(obj);
return equals(name, other.name);
}
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/AbstractVFSProfileSource.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -250,7 +250,7 @@
}
// Check if we accept this deployment
- String key = component.toURI().toString();
+ String key = component.asFileURI().toString();
if(acceptsDeployment(key) == false)
return;
@@ -324,7 +324,7 @@
*/
protected String addVirtualFileCache(VirtualFile vf) throws MalformedURLException, URISyntaxException
{
- String uri = vf.toURI().toString();
+ String uri = vf.asFileURI().toString();
this.applicationVFCache.put(uri, vf);
return uri;
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileDeploymentMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileDeploymentMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/BasicProfileDeploymentMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -32,7 +32,7 @@
import org.jboss.profileservice.spi.metadata.ProfileMetaDataVisitor;
import org.jboss.profileservice.spi.repository.ArtifactId;
import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
/**
* The basic profile deployment meta data.
@@ -54,7 +54,7 @@
}
@Override
- public List<VirtualDeployment> getChildren()
+ public List<VirtualDeploymentMetaData> getChildren()
{
return Collections.emptyList();
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/ClassPathProfileMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/ClassPathProfileMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/ClassPathProfileMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -41,7 +41,7 @@
import org.jboss.profileservice.spi.metadata.ProfileSourceMetaData;
import org.jboss.profileservice.spi.repository.ArtifactId;
import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.xb.annotations.JBossXmlSchema;
/**
@@ -149,7 +149,7 @@
@Override
@XmlTransient
- public List<VirtualDeployment> getChildren()
+ public List<VirtualDeploymentMetaData> getChildren()
{
return Collections.emptyList();
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/EmptyProfileMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/EmptyProfileMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/profile/metadata/plugin/EmptyProfileMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -90,14 +90,22 @@
/** The dependency mode. */
private DependencyMode mode = DependencyMode.getDefault();
+ public DependencyModeRequirement()
+ {
+ //
+ }
+
+ public DependencyModeRequirement(String name)
+ {
+ setName(name);
+ }
+
@XmlAttribute(name = "name")
public String getName()
{
return super.getName();
}
-
-
-
+
@XmlAttribute(name = "mode")
public DependencyMode getDependencyMode()
{
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifact.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -36,7 +36,7 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class AbstractArtifact<T extends ArtifactId> implements Artifact<T>
+public abstract class AbstractArtifact<T extends ArtifactId> implements Artifact<T>
{
private final T identifier;
@@ -65,14 +65,7 @@
@Override
public long getLastModified()
{
- try
- {
- return getFile().getLastModified();
- }
- catch(IOException e)
- {
- return 0L;
- }
+ return getFile().getLastModified();
}
@Override
@@ -86,10 +79,22 @@
return getFile().openStream();
}
- public VirtualFile getFile() throws IOException
+ public VirtualFile getFile()
{
- return this.repository.getArtifactFile(getIdentifier());
+ try
+ {
+ return this.repository.getArtifactFile(getIdentifier());
+ }
+ catch(IOException ioe) // TODO this is unlikely?
+ {
+ throw new RuntimeException("failed to get file", ioe);
+ }
}
+
+ protected ArtifactRepository<T> getArtifactRepository()
+ {
+ return this.repository;
+ }
}
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -24,7 +24,11 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.jboss.profileservice.spi.repository.Artifact;
+import org.jboss.profileservice.spi.repository.ArtifactFilter;
import org.jboss.profileservice.spi.repository.ArtifactId;
import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.repository.ArtifactRepositoryConfiguration;
@@ -80,6 +84,19 @@
this.configuration = new BasicRepositoryConfiguration(root.toURI(), false);
}
+ public Collection<Artifact<T>> getArtifacts(ArtifactFilter<T> filter)
+ {
+ Collection<Artifact<T>> filtered = new ArrayList<Artifact<T>>();
+ for(Artifact<T> artifact : getArtifacts())
+ {
+ if(filter.accepts(artifact))
+ {
+ filtered.add(artifact);
+ }
+ }
+ return filtered;
+ }
+
@Override
public ArtifactRepositoryId getIdentifier()
{
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractRepositoryId.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractRepositoryId.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/AbstractRepositoryId.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -80,8 +80,8 @@
protected int createHashCode()
{
int result = 17;
- result = 31 * name.hashCode();
- result = 31 * type.hashCode();
+ result = result + 31 * name.hashCode();
+ result = result + 31 * type.hashCode();
return result;
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/ArtifactRepositoryManager.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/ArtifactRepositoryManager.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/ArtifactRepositoryManager.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -134,7 +134,9 @@
if(repository.getIdentifier() == null)
throw new IllegalArgumentException("null repository configuration");
// Don't override existing repositories
- repositories.putIfAbsent(repository.getIdentifier(), repository);
+ ArtifactRepository<ArtifactId> other = repositories.putIfAbsent(repository.getIdentifier(), repository);
+ if(other != null)
+ throw new IllegalStateException("duplicate repository " + repository);
}
public void removeRepository(ArtifactRepository<ArtifactId> repository)
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/FileArtifact.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -38,5 +38,10 @@
super(identifier, repository);
}
+ public String getRelativePath()
+ {
+ return getIdentifier().getPath();
+ }
+
}
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/file/LocalFileArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -57,7 +57,7 @@
}
@Override
- public Artifact<FileArtifactId> getArtifact(FileArtifactId artifactId)
+ public FileArtifact getArtifact(FileArtifactId artifactId)
{
return new FileArtifact(artifactId, this);
}
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/AbstractMavenArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -76,6 +76,11 @@
builder.append(".").append(artifact.getPackagingType());
return builder.toString();
}
+
+ String getRelativePath(MavenArtifactId artifact) throws IOException
+ {
+ return getArtifactFile(artifact).getPathNameRelativeTo(getRepositoryRoot());
+ }
}
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/LocalMavenArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -29,6 +29,7 @@
import org.jboss.profileservice.repository.artifact.AbstractRepositoryId;
import org.jboss.profileservice.spi.repository.Artifact;
+import org.jboss.profileservice.spi.repository.ArtifactFilter;
import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.repository.ArtifactRepositoryConfiguration;
import org.jboss.profileservice.spi.repository.ArtifactRepositoryFactory;
@@ -91,10 +92,25 @@
{
Collection<Artifact<MavenArtifactId>> artifacts = new ArrayList<Artifact<MavenArtifactId>>();
for(MavenArtifact artifact : this.artifacts)
+ {
artifacts.add(artifact);
+ }
return artifacts;
}
+ public Collection<Artifact<MavenArtifactId>> getArtifacts(ArtifactFilter<MavenArtifactId> filter)
+ {
+ Collection<Artifact<MavenArtifactId>> filtered = new ArrayList<Artifact<MavenArtifactId>>();
+ for(Artifact<MavenArtifactId> artifact : getArtifacts())
+ {
+ if(filter.accepts(artifact))
+ {
+ filtered.add(artifact);
+ }
+ }
+ return filtered;
+ }
+
@Override
public VirtualFile getArtifactFile(MavenArtifactId artifactId) throws IOException
{
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/artifact/maven/MavenArtifact.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -21,8 +21,9 @@
*/
package org.jboss.profileservice.repository.artifact.maven;
+import java.io.IOException;
+
import org.jboss.profileservice.repository.artifact.AbstractArtifact;
-import org.jboss.profileservice.spi.repository.ArtifactRepository;
/**
* A mvn like artifact.
@@ -33,7 +34,7 @@
public class MavenArtifact extends AbstractArtifact<MavenArtifactId>
{
- public MavenArtifact(MavenArtifactMetaData identifier, ArtifactRepository<MavenArtifactId> repository)
+ public MavenArtifact(MavenArtifactMetaData identifier, AbstractMavenArtifactRepository repository)
{
super(identifier, repository);
}
@@ -44,5 +45,23 @@
return (MavenArtifactMetaData) super.getIdentifier();
}
+
+ public String getRelativePath()
+ {
+ try
+ {
+ return getArtifactRepository().getRelativePath(getIdentifier());
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("failed to get relative path", e);
+ }
+ }
+
+ protected AbstractMavenArtifactRepository getArtifactRepository()
+ {
+ return AbstractMavenArtifactRepository.class.cast(super.getArtifactRepository());
+ }
+
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualDeploymentRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualDeploymentRepository.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualDeploymentRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -27,7 +27,7 @@
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.VirtualDeploymentMetaData;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.profileservice.virtual.assembly.AbstractVirtualDeploymentAssembly;
import org.jboss.vfs.VirtualFile;
@@ -51,7 +51,7 @@
* @return the profile deployment
* @throws Exception for any error
*/
- public ProfileDeployment createDeployment(VirtualDeployment deployment) throws IOException
+ public ProfileDeployment createDeployment(VirtualDeploymentMetaData deployment) throws IOException
{
if(deployment == null)
{
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualProfileFactory.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualProfileFactory.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/repository/virtual/AbstractVirtualProfileFactory.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -33,7 +33,7 @@
import org.jboss.profileservice.spi.repository.ArtifactId;
import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.repository.ArtifactRepositoryId;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
/**
@@ -99,7 +99,7 @@
static class UnconfiguredVirtualDeploymentRepository implements VirtualDeploymentRepository
{
@Override
- public ProfileDeployment createDeployment(VirtualDeployment virtual) throws IOException
+ public ProfileDeployment createDeployment(VirtualDeploymentMetaData virtual) throws IOException
{
throw new RuntimeException("repository not configured");
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/AbstractRequirementResolver.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/AbstractRequirementResolver.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/AbstractRequirementResolver.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -33,6 +34,7 @@
import org.jboss.logging.Logger;
import org.jboss.profileservice.dependency.ProfileDependencyContext;
import org.jboss.profileservice.dependency.ProfileMetaDataRegistry;
+import org.jboss.profileservice.dependency.ProfileRequirementDependencyItem;
import org.jboss.profileservice.spi.ProfileKey;
import org.jboss.profileservice.spi.dependency.DependencyMode;
import org.jboss.profileservice.spi.dependency.ProfileCapability;
@@ -57,7 +59,7 @@
private Set<ProfileNode> included = new HashSet<ProfileNode>();
/** The included keys. */
- private List<ProfileKey> includedKeys = new ArrayList<ProfileKey>();
+ private Set<ProfileKey> includedKeys = new HashSet<ProfileKey>();
/** The activation callback registry. */
private List<ProfileNode> callbacks = new ArrayList<ProfileNode>();
@@ -91,20 +93,92 @@
{
throw new IllegalArgumentException("null dependency context");
}
- resolve(context, false, true);
+ resolveRoot(context);
}
/**
+ * Resolve the root context. The root context should specify the configuration,
+ * also have the ability to select specific profiles which both expose a common
+ * capability (which cannot be resolved). Therefore those contexts are resolved
+ * first and later resolution will check the included first before asking the
+ * meta data registry.
+ *
+ * @param context the root context to resolve
+ */
+ void resolveRoot(final ProfileDependencyContext context)
+ {
+ final ProfileKey currentKey = context.getKey();
+ final ProfileNode currentNode = getNode(context);
+
+ // Include it in the configuration
+ included.add(currentNode);
+ includedKeys.add(currentKey);
+
+ final List<ProfileDependencyContext> toProcess = new ArrayList<ProfileDependencyContext>();
+
+ final Collection<ProfileRequirementDependencyItem> requirements = context.getiDependOn();
+ if(requirements != null && requirements.isEmpty() == false)
+ {
+ for(final ProfileRequirementDependencyItem dependencyItem : requirements)
+ {
+ // Try to resolve the requirement
+ final ProfileRequirement requirement = dependencyItem.getRequirement();
+ final ProfileKey dependencyKey = registry.resolve(context, requirement, Collections.EMPTY_SET);
+ if(dependencyKey == null)
+ {
+ // if the requirement is not optional add to unresolved
+ if(requirement.isOptional() == false)
+ {
+ unresolved.add(requirement);
+ }
+ continue;
+ }
+ // Ignore self dependencies
+ dependencyItem.setIDependOn(dependencyKey);
+ if(currentKey.equals(dependencyKey))
+ {
+ continue;
+ }
+
+ // Get the dependency context
+ final ProfileDependencyContext dependencyContext = registry.getProfile(dependencyKey);
+ final ProfileNode depenencyNode = getNode(dependencyContext);
+
+ // Add the dependency context
+ addDependencyContext(dependencyContext);
+ toProcess.add(dependencyContext);
+
+ final ProfileNodeDependency dependency = new ProfileNodeDependency(dependencyItem, false);
+
+ // Add dependency information
+ currentNode.addIDependOn(dependency);
+ depenencyNode.addDependsOnMe(dependency);
+ }
+ }
+ // Check if everything is resolvable
+ if(this.unresolved.isEmpty() == false)
+ {
+ // The root has to be fully resolvable
+ return;
+ }
+ // Process the referenced contexts
+ for(final ProfileDependencyContext process : toProcess)
+ {
+ resolve(process, false);
+ }
+ }
+
+ /**
* Try to resolve a context based on it's meta data dependencies.
*
* @param context the context
* @param fromActivationCallback is recursively called from an activation callback
*/
- void resolve(final ProfileDependencyContext context, final boolean fromActivationCallback, final boolean root)
+ void resolve(final ProfileDependencyContext context, final boolean fromActivationCallback)
{
final boolean trace = log.isTraceEnabled();
final ProfileKey currentKey = context.getKey();
- final ProfileNode currentNode = getNode(currentKey);
+ final ProfileNode currentNode = getNode(context);
// Don't process a node twice
if(included(currentNode))
{
@@ -131,20 +205,17 @@
// Don't include callbacks we need to process them afterwards
callbacks.add(currentNode);
}
- final Collection<ProfileRequirement> requirements = context.getRequirements();
+ final Collection<ProfileRequirementDependencyItem> requirements = context.getiDependOn();
if(requirements != null && requirements.isEmpty() == false)
{
- for(final ProfileRequirement requirement : requirements)
+ for(final ProfileRequirementDependencyItem dependencyItem : requirements)
{
// Try to resolve the requirement
- ProfileKey dependencyKey = null;
- if(root == false)
- {
- dependencyKey = internalResolve(context, requirement);
- }
+ final ProfileRequirement requirement = dependencyItem.getRequirement();
+ ProfileKey dependencyKey = internalResolve(context, requirement);
if(dependencyKey == null)
{
- dependencyKey = registry.resolve(context, requirement);
+ dependencyKey = registry.resolve(context, requirement, this.includedKeys);
}
if(dependencyKey == null)
{
@@ -156,33 +227,35 @@
continue;
}
// Ignore self dependencies
+ dependencyItem.setIDependOn(dependencyKey);
if(currentKey.equals(dependencyKey))
{
continue;
}
+
// Get the mode and dependency context
final DependencyMode mode = getDependencyMode(requirement);
- final ProfileNode depenencyNode = getNode(dependencyKey);
final ProfileDependencyContext dependencyContext = registry.getProfile(dependencyKey);
+ final ProfileNode depenencyNode = getNode(dependencyContext);
// Add the dependency context
addDependencyContext(dependencyContext);
- if(root || mode == DependencyMode.RESOLVE || dependencyContext.isOnDemandEnabled())
+ if(mode == DependencyMode.RESOLVE || dependencyContext.isOnDemandEnabled())
{
// Resolve
- resolve(dependencyContext, false, false);
+ resolve(dependencyContext, false);
}
// We don't support nested activation callbacks
else if(fromActivationCallback == false && mode == DependencyMode.ACTIVATION_CALLBACK)
{
// Process activation callbacks
- resolve(dependencyContext, true, false);
+ resolve(dependencyContext, true);
}
// If the dependency is already included we can mark it as non-optional
final boolean dependencyIncluded = included(depenencyNode);
final boolean optional = requirement.isOptional() && dependencyIncluded == false;
- final ProfileNodeDependency dependency = new ProfileNodeDependency(requirement, currentKey, dependencyKey, optional);
+ final ProfileNodeDependency dependency = new ProfileNodeDependency(dependencyItem, optional);
// Add dependency information
currentNode.addIDependOn(dependency);
@@ -201,11 +274,18 @@
}
}
+ /**
+ * Internal resolve a requirement. This does need to check for duplicates, since when
+ * adding the context as included it has to filter inconsistent capabilities.
+ *
+ * @param ctx the meta data context
+ * @param requirement the requirement
+ * @return the resolved profile key, null if it can't be resolved
+ */
protected ProfileKey internalResolve(ProfileDependencyContext ctx, ProfileRequirement requirement)
{
// Resolve the requirements based on the exposed capabilities
final boolean trace = log.isTraceEnabled();
- ProfileKey resolved = null;
for(ProfileDependencyContext profile : includedContexts)
{
Collection<ProfileCapability> capabilities = profile.getCapabilities();
@@ -219,22 +299,22 @@
{
log.trace(profile.getKey() + ":" + capability + " resolved " + requirement);
}
- if(resolved == null)
- {
- resolved = profile.getKey();
- }
- else
- {
- return null;
- }
+ return profile.getKey();
}
}
}
}
// Unresolved
- return resolved;
+ return null;
}
+ /**
+ * Add the dependency context to the included configuration. This will also
+ * validate the capabilities, so that the cannot be a more contexts exposing
+ * the same capability.
+ *
+ * @param context the context to add
+ */
protected void addDependencyContext(final ProfileDependencyContext context)
{
if(this.includedContexts.contains(context))
@@ -290,6 +370,7 @@
{
callback.hardenDependsOnMe();
included.add(callback);
+ includedKeys.add(callback.getKey());
}
}
i.remove();
@@ -305,20 +386,26 @@
* @param key the profile key
* @return the profile node
*/
- ProfileNode getNode(ProfileKey key)
+ ProfileNode getNode(ProfileDependencyContext ctx)
{
+ final ProfileKey key = ctx.getKey();
if(nodes.containsKey(key))
{
return nodes.get(key);
}
else
{
- final ProfileNode node = new ProfileNode(key);
+ final ProfileNode node = new ProfileNode(ctx);
nodes.put(key, node);
return node;
}
}
+ ProfileNode getProcessedNode(ProfileKey key)
+ {
+ return nodes.get(key);
+ }
+
/**
* Check whether a node is included or not.
*
@@ -327,7 +414,7 @@
*/
boolean included(ProfileNode node)
{
- return included.contains(node);
+ return includedKeys.contains(node.getKey());
}
/**
@@ -375,8 +462,8 @@
continue;
}
// Get the dependent node
- final ProfileNode otherNode = getNode(dependsOnMe.getFrom());
- if(included(otherNode) == false)
+ final ProfileNode otherNode = getProcessedNode(dependsOnMe.getFrom());
+ if(otherNode == null || included(otherNode) == false)
{
throw new IllegalStateException("trying to activate non included node " + otherNode);
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNode.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNode.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNode.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -21,9 +21,14 @@
*/
package org.jboss.profileservice.resolver;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import org.jboss.profileservice.dependency.ProfileDependencyContext;
import org.jboss.profileservice.spi.ProfileKey;
/**
@@ -35,28 +40,31 @@
class ProfileNode
{
- /** The node key. */
- private final ProfileKey key;
+ /** The meta data context. */
+ private final ProfileDependencyContext ctx;
/** I depend on. */
private List<ProfileNodeDependency> iDependOn = new LinkedList<ProfileNodeDependency>();
+ private ConcurrentMap<String, Set<ProfileNodeDependency>> iDependOnByName = new ConcurrentHashMap<String, Set<ProfileNodeDependency>>();
/** Depends on me. */
private List<ProfileNodeDependency> dependsOnMe = new LinkedList<ProfileNodeDependency>();
- public ProfileNode(ProfileKey key)
+ public ProfileNode(ProfileDependencyContext ctx)
{
- this.key = key;
+ this.ctx = ctx;
}
public ProfileKey getKey()
{
- return key;
+ return ctx.getKey();
}
void addIDependOn(ProfileNodeDependency dependency)
{
this.iDependOn.add(dependency);
+ this.iDependOnByName.putIfAbsent(dependency.getTo().getName(), new HashSet<ProfileNodeDependency>());
+ this.iDependOnByName.get(dependency.getTo().getName()).add(dependency);
}
public List<ProfileNodeDependency> getiDependOn()
@@ -66,13 +74,18 @@
void markAsResolved(ProfileKey key)
{
- for(ProfileNodeDependency dependency : iDependOn)
+ Set<ProfileNodeDependency> dependencies = this.iDependOnByName.get(key.getName());
+ for(final ProfileNodeDependency dependency : dependencies)
{
- if(key.equals(dependency.getTo()))
- {
- dependency.markAsResolved();
- }
+ dependency.markAsResolved();
}
+// for(final ProfileNodeDependency dependency : iDependOn)
+// {
+// if(key.equals(dependency.getTo()))
+// {
+// dependency.markAsResolved();
+// }
+// }
}
void addDependsOnMe(ProfileNodeDependency dependency)
@@ -99,14 +112,15 @@
return this.dependsOnMe.size() > 0;
}
- boolean checkResolved(List<ProfileKey> included)
+ boolean checkResolved(Set<ProfileKey> included)
{
boolean resolved = true;
for(ProfileNodeDependency dependency : iDependOn)
{
if(dependency.isOptional() == false)
{
- if(included.contains(dependency.getTo()) == false)
+ ProfileKey key = dependency.getTo();
+ if(key == null || included.contains(key) == false)
resolved = false;
}
}
@@ -138,13 +152,13 @@
if(obj == null || obj instanceof ProfileNode == false)
return false;
ProfileNode other = (ProfileNode) obj;
- return key.equals(other.key);
+ return getKey().equals(other.getKey());
}
@Override
public String toString()
{
- return key.getName();
+ return getKey().getName();
}
}
Modified: projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNodeDependency.java
===================================================================
--- projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNodeDependency.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/resolver/ProfileNodeDependency.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -21,6 +21,7 @@
*/
package org.jboss.profileservice.resolver;
+import org.jboss.profileservice.dependency.ProfileRequirementDependencyItem;
import org.jboss.profileservice.spi.ProfileKey;
import org.jboss.profileservice.spi.dependency.ProfileRequirement;
@@ -33,12 +34,6 @@
class ProfileNodeDependency
{
- /** The from node. */
- private final ProfileKey from;
-
- /** The to node. */
- private ProfileKey to;
-
/** Is optional from -> to. */
private boolean optional;
@@ -48,43 +43,25 @@
/** Is marked as resolved. */
private boolean resolved = false;
- /** The requirement, for reporting. */
- private final ProfileRequirement requirement;
+ /** The dependency item. */
+ private final ProfileRequirementDependencyItem dependencyItem;
- ProfileNodeDependency(final ProfileRequirement requirement, final ProfileKey from,
- final ProfileKey to, final boolean optional)
+ public ProfileNodeDependency(final ProfileRequirementDependencyItem dependencyItem, boolean optional)
{
- this.requirement = requirement;
- this.from = from;
- this.to = to;
+ this.dependencyItem = dependencyItem;
this.optional = optional;
}
-
- public ProfileRequirement getRequirement()
- {
- return requirement;
- }
-
+
ProfileKey getFrom()
{
- return from;
+ return dependencyItem.getName();
}
ProfileKey getTo()
{
- return to;
+ return dependencyItem.getIDependOn();
}
-
- void setTo(ProfileKey key)
- {
- this.to = key;
- }
- boolean isDetermined()
- {
- return this.to != null;
- }
-
boolean isOptional()
{
return optional;
@@ -134,5 +111,6 @@
return builder.toString();
}
+
}
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/AbstractVirtualDeploymentAssembly.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -26,7 +26,7 @@
import org.jboss.profileservice.spi.repository.ArtifactId;
import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssembly;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.vfs.VFS;
@@ -66,7 +66,7 @@
* @return the assembled directory
* @throws IOException
*/
- public VirtualDeploymentAssemblyContext assemble(VirtualDeployment deployment) throws IOException
+ public VirtualDeploymentAssemblyContext assemble(VirtualDeploymentMetaData deployment) throws IOException
{
if(deployment == null)
throw new IllegalArgumentException("null virtual deployment");
@@ -89,7 +89,7 @@
* @param deployment the virtual deployment meta data
* @throws IOException
*/
- protected void assemble(VirtualDeploymentAssemblyContext ctx, VirtualDeployment deployment) throws IOException
+ protected void assemble(VirtualDeploymentAssemblyContext ctx, VirtualDeploymentMetaData deployment) throws IOException
{
if(deployment.getArtifacts() != null && deployment.getArtifacts().isEmpty() == false)
{
@@ -98,7 +98,7 @@
}
if(deployment.getChildren() != null && deployment.getChildren().isEmpty() == false)
{
- for(VirtualDeployment child : deployment.getChildren())
+ for(VirtualDeploymentMetaData child : deployment.getChildren())
{
VirtualDeploymentAssemblyContext childCtx = ctx.addChild(child);
assemble(childCtx, child);
@@ -112,7 +112,7 @@
* @param deployment the virtual deployment meta data
* @return the deployment name
*/
- protected String createDeploymentName(VirtualDeployment deployment)
+ protected String createDeploymentName(VirtualDeploymentMetaData deployment)
{
return deployment.getName();
}
@@ -124,7 +124,7 @@
* @return the virtual deployment assembly context
* @throws IOException
*/
- protected VirtualDeploymentAssemblyContext createAssemblyContext(VirtualDeployment deployment) throws IOException
+ protected VirtualDeploymentAssemblyContext createAssemblyContext(VirtualDeploymentMetaData deployment) throws IOException
{
VirtualDeploymentAssemblyContext ctx = createNonAssembledContext(deployment);
if(ctx == null)
@@ -142,7 +142,7 @@
* @return the child virtual deployment assembly context
* @throws IOException
*/
- protected VirtualDeploymentAssemblyContext createChildAssemblyContext(VirtualDeployment deployment, VirtualFile parent) throws IOException
+ protected VirtualDeploymentAssemblyContext createChildAssemblyContext(VirtualDeploymentMetaData deployment, VirtualFile parent) throws IOException
{
VirtualDeploymentAssemblyContext ctx = createNonAssembledContext(deployment);
if(ctx == null)
@@ -161,7 +161,7 @@
* @param deployment the virtual deployment meta data
* @return the virtual deployment assembly context
*/
- protected VirtualDeploymentAssemblyContext assembleNewContext(VirtualDeployment deployment) throws IOException
+ protected VirtualDeploymentAssemblyContext assembleNewContext(VirtualDeploymentMetaData deployment) throws IOException
{
// Create assembled directory
String fileName = createDeploymentName(deployment);
@@ -192,7 +192,7 @@
* @return the static assembly context
* @throws IOException
*/
- protected VirtualDeploymentAssemblyContext createNonAssembledContext(VirtualDeployment deployment) throws IOException
+ protected VirtualDeploymentAssemblyContext createNonAssembledContext(VirtualDeploymentMetaData deployment) throws IOException
{
if(deployment.getArtifact() != null)
{
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/BasicVirtualAssemblyContext.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -27,7 +27,7 @@
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.VirtualDeploymentMetaData;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.vfs.VirtualFile;
import org.jboss.vfs.VirtualFileAssembly;
@@ -79,7 +79,7 @@
/**
* {@inheritDoc}
*/
- public VirtualDeploymentAssemblyContext addChild(VirtualDeployment child) throws IOException
+ public VirtualDeploymentAssemblyContext addChild(VirtualDeploymentMetaData child) throws IOException
{
if(child == null)
{
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/assembly/ImmutableAssemblyContext.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -24,7 +24,7 @@
import java.io.IOException;
import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.vfs.VirtualFile;
@@ -63,7 +63,7 @@
}
@Override
- public VirtualDeploymentAssemblyContext addChild(VirtualDeployment child) throws IOException
+ public VirtualDeploymentAssemblyContext addChild(VirtualDeploymentMetaData child) throws IOException
{
throw new IllegalStateException("cannot add a child to a non-assembled context");
}
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/main/java/org/jboss/profileservice/virtual/deployment/AbstractVirtualDeployment.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -32,7 +32,7 @@
import org.jboss.profileservice.spi.dependency.ProfileCapability;
import org.jboss.profileservice.spi.dependency.ProfileRequirement;
import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.profileservice.version.Version;
/**
@@ -42,7 +42,7 @@
* @version $Revision$
*/
@XmlType(propOrder = {"name", "artifact", "artifacts", "requires", "children" })
-public class AbstractVirtualDeployment extends AbstractProfileCapability implements VirtualDeployment
+public class AbstractVirtualDeployment extends AbstractProfileCapability implements VirtualDeploymentMetaData
{
/** The serialVersionUID */
@@ -55,7 +55,7 @@
private List<VirtualArtifactMetaData> artifacts;
/** The child deployments. */
- private List<VirtualDeployment> children;
+ private List<VirtualDeploymentMetaData> children;
/** The requirements. */
private List<AbstractProfileRequirement> requires;
@@ -135,7 +135,7 @@
* @return the children.
*/
@XmlElement(name = "virtual-deployment", type = AbstractVirtualDeployment.class)
- public List<VirtualDeployment> getChildren()
+ public List<VirtualDeploymentMetaData> getChildren()
{
return children;
}
@@ -145,7 +145,7 @@
*
* @param children The children to set.
*/
- public void setChildren(List<VirtualDeployment> children)
+ public void setChildren(List<VirtualDeploymentMetaData> children)
{
this.children = children;
}
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/metadata/support/VirtualRepositoryMetaData.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/metadata/support/VirtualRepositoryMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/metadata/support/VirtualRepositoryMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -28,7 +28,7 @@
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.profileservice.virtual.deployment.AbstractVirtualDeployment;
import org.jboss.xb.annotations.JBossXmlSchema;
@@ -47,15 +47,15 @@
{
/** The deployments. */
- private List<VirtualDeployment> deployments;
+ private List<VirtualDeploymentMetaData> deployments;
@XmlElement(name = "virtual-deployment", type = AbstractVirtualDeployment.class)
- public List<VirtualDeployment> getDeployments()
+ public List<VirtualDeploymentMetaData> getDeployments()
{
return deployments;
}
- public void setDeployments(List<VirtualDeployment> deployments)
+ public void setDeployments(List<VirtualDeploymentMetaData> deployments)
{
this.deployments = deployments;
}
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/AbstractResolverTest.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/AbstractResolverTest.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/AbstractResolverTest.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -37,6 +37,7 @@
import org.jboss.profileservice.spi.metadata.ProfileMetaData;
import org.jboss.test.profileservice.ProfileServiceTestBase;
import org.jboss.test.profileservice.resolver.support.TestProfilesMetaData;
+import org.jboss.test.profileservice.support.NoopProfileFactory;
/**
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
@@ -47,7 +48,7 @@
private ProfileMetaDataRegistry registry;
private AbstractRequirementResolver resolver;
-
+ private ProfileServiceConfig config;
public AbstractResolverTest(String name)
{
@@ -64,6 +65,11 @@
return registry;
}
+ public ProfileServiceConfig getConfig()
+ {
+ return config;
+ }
+
protected ProfileServiceConfig createConfig()
{
ManagementDomain domain = new ManagementDomain("default");
@@ -71,9 +77,19 @@
return new ProfileServiceConfig(domain, server);
}
+ protected ProfileMetaDataRegistry createRegistry()
+ {
+ this.config = createConfig();
+
+ this.config.setProfileFactory(new NoopProfileFactory());
+
+ this.registry = new ProfileMetaDataRegistry(this.config);
+ return this.registry;
+ }
+
protected TestProfilesMetaData parse(String file) throws Exception
{
- registry = new ProfileMetaDataRegistry(createConfig());
+ createRegistry();
resolver = new AbstractRequirementResolver(registry);
TestProfilesMetaData profiles = unmarshal(file, TestProfilesMetaData.class);
for(ProfileMetaData profile : profiles.getProfiles())
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/RequirementResolverTestSuite.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/RequirementResolverTestSuite.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/RequirementResolverTestSuite.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -37,6 +37,7 @@
suite.addTestSuite(BasicResolverUnitTestCase.class);
suite.addTestSuite(ActivationCallbackUnitTestCase.class);
+ suite.addTestSuite(UserRequirementUnitTestCase.class);
return suite;
}
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/UserRequirementUnitTestCase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/UserRequirementUnitTestCase.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/resolver/test/UserRequirementUnitTestCase.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -39,17 +39,30 @@
{
super(name);
}
-
- public void testOne() throws Exception
+ public void testNative() throws Exception
{
+ List<String> resolved = resolveServices("capabilities.xml", "ejb3", "jboss-webservices");
+ assertTrue(resolved.contains("ejb3-webservices"));
+ assertTrue(resolved.contains("jboss-webservices"));
+ }
+
+ public void testNativeOrder() throws Exception
+ {
List<String> resolved = resolveServices("capabilities.xml", "jboss-webservices", "ejb3");
assertTrue(resolved.contains("ejb3-webservices"));
assertTrue(resolved.contains("jboss-webservices"));
}
- public void testTwo() throws Exception
+ public void testOther() throws Exception
{
+ List<String> resolved = resolveServices("capabilities.xml", "ejb3", "apache-webservices");
+ assertTrue(resolved.contains("ejb3-webservices"));
+ assertTrue(resolved.contains("apache-webservices"));
+ }
+
+ public void testOtherOrder() throws Exception
+ {
List<String> resolved = resolveServices("capabilities.xml", "apache-webservices", "ejb3");
assertTrue(resolved.contains("ejb3-webservices"));
assertTrue(resolved.contains("apache-webservices"));
@@ -66,7 +79,7 @@
log.debug(e);
return;
}
- fail("");
+ fail("apache and webservices both expose a service(name=webservice) capability");
}
protected List<String> resolveServices(String file, String... services) throws Exception
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopArtifactRepository.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -25,6 +25,7 @@
import java.util.Collection;
import org.jboss.profileservice.spi.repository.Artifact;
+import org.jboss.profileservice.spi.repository.ArtifactFilter;
import org.jboss.profileservice.spi.repository.ArtifactId;
import org.jboss.profileservice.spi.repository.ArtifactRepository;
import org.jboss.profileservice.spi.repository.ArtifactRepositoryConfiguration;
@@ -73,7 +74,11 @@
return null;
}
- @Override
+ public Collection<Artifact<ArtifactId>> getArtifacts(ArtifactFilter<ArtifactId> filter)
+ {
+ return null;
+ }
+
public ArtifactRepositoryConfiguration<ArtifactId> getConfiguration()
{
return null;
Added: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopProfileFactory.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopProfileFactory.java (rev 0)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/support/NoopProfileFactory.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -0,0 +1,50 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2010, Red Hat 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.support;
+
+import org.jboss.profileservice.profile.NoopProfile;
+import org.jboss.profileservice.spi.Profile;
+import org.jboss.profileservice.spi.ProfileFactory;
+import org.jboss.profileservice.spi.ProfileKey;
+import org.jboss.profileservice.spi.metadata.ProfileMetaData;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class NoopProfileFactory implements ProfileFactory<ProfileMetaData, Profile>
+{
+
+ private static final Profile profile = new NoopProfile(new ProfileKey("test"));
+
+ public Profile createProfile(ProfileKey key, ProfileMetaData metaData) throws Exception
+ {
+ return profile;
+ }
+
+ public String[] getTypes()
+ {
+ return null;
+ }
+
+}
+
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/test/BasicProfileServiceUnitTestCase.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/test/BasicProfileServiceUnitTestCase.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/test/BasicProfileServiceUnitTestCase.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -93,9 +93,6 @@
resolver.resolve(visitor.getCtx());
List<ProfileKey> list = resolver.sort();
- getLog().debug("processing took " + (System.currentTimeMillis() - millis));
- getLog().debug(list);
-
for(ProfileKey key : list)
{
if(key.getName().equals("test") == false)
@@ -104,6 +101,9 @@
ps.registerProfile(ctx.getProfileMetaData());
}
}
+
+ getLog().debug("processing took " + (System.currentTimeMillis() - millis));
+ getLog().debug(list);
for(ProfileKey profile : list)
{
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestArtifactRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestArtifactRepository.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -23,14 +23,11 @@
import java.io.IOException;
import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
import org.jboss.profileservice.repository.artifact.AbstractRepositoryId;
import org.jboss.profileservice.repository.artifact.file.FileArtifactId;
import org.jboss.profileservice.repository.artifact.file.LocalFileArtifactRepository;
import org.jboss.profileservice.spi.repository.ArtifactRepositoryId;
-import org.jboss.vfs.VFS;
import org.jboss.vfs.VirtualFile;
/**
Modified: projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestVirtualDeploymentRepository.java
===================================================================
--- projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestVirtualDeploymentRepository.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/support/TestVirtualDeploymentRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -30,7 +30,7 @@
import org.jboss.profileservice.spi.VirtualDeploymentRepository;
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.VirtualDeploymentMetaData;
import org.jboss.profileservice.spi.virtual.assembly.VirtualDeploymentAssemblyContext;
import org.jboss.profileservice.virtual.assembly.AbstractVirtualDeploymentAssembly;
import org.jboss.vfs.VFS;
@@ -62,7 +62,7 @@
* @return the profile deployment
* @throws Exception for any error
*/
- public ProfileDeployment createDeployment(VirtualDeployment deployment) throws IOException
+ public ProfileDeployment createDeployment(VirtualDeploymentMetaData deployment) throws IOException
{
if(deployment == null)
{
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/AbstractVirtualAssemblyTestCase.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -27,7 +27,7 @@
import org.jboss.profileservice.spi.VirtualDeploymentRepository;
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.VirtualDeploymentMetaData;
import org.jboss.test.profileservice.ProfileServiceTestBase;
import org.jboss.test.profileservice.metadata.support.VirtualRepositoryMetaData;
import org.jboss.test.profileservice.virtual.support.TestArtifactRepository;
@@ -96,10 +96,10 @@
}
}
- protected Map<String, VirtualDeployment> mapDeployments(VirtualRepositoryMetaData metaData)
+ protected Map<String, VirtualDeploymentMetaData> mapDeployments(VirtualRepositoryMetaData metaData)
{
- Map<String, VirtualDeployment> deployments = new HashMap<String, VirtualDeployment>();
- for(VirtualDeployment deployment : metaData.getDeployments())
+ Map<String, VirtualDeploymentMetaData> deployments = new HashMap<String, VirtualDeploymentMetaData>();
+ for(VirtualDeploymentMetaData deployment : metaData.getDeployments())
deployments.put(deployment.getName(), deployment);
return deployments;
}
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/StructureMetaDataUnitTestCase.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -34,7 +34,7 @@
import org.jboss.profileservice.deployers.VDFDeploymentBuilder;
import org.jboss.profileservice.spi.ProfileDeployment;
import org.jboss.profileservice.spi.VirtualDeploymentRepository;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.test.profileservice.metadata.support.VirtualRepositoryMetaData;
/**
@@ -61,7 +61,7 @@
// Get the repository meta data
VirtualRepositoryMetaData repository = unmarshal("repository.xml", VirtualRepositoryMetaData.class);
- Map<String, VirtualDeployment> deployments = mapDeployments(repository);
+ Map<String, VirtualDeploymentMetaData> deployments = mapDeployments(repository);
this.profileDeploymentFactory = createRepository(REPOSITORY_LOCATION);
@@ -73,7 +73,7 @@
**/
// test.deployer
- VirtualDeployment deployerVD = deployments.get("test.deployer");
+ VirtualDeploymentMetaData deployerVD = deployments.get("test.deployer");
ProfileDeployment deployer = createProfileDeployment(deployerVD);
StructureMetaData deployerStructure = createStructureMetaData(deployer);
assertNotNull("null deployer structure", deployerStructure);
@@ -82,7 +82,7 @@
{"deployer.jar", "fake.jar", "fake2.jar"});
// test deployment
- VirtualDeployment deploymentVD = deployments.get("test-deployment");
+ VirtualDeploymentMetaData deploymentVD = deployments.get("test-deployment");
ProfileDeployment deployment = createProfileDeployment(deploymentVD);
StructureMetaData deploymentStructure = createStructureMetaData(deployment);
assertNotNull("null deployment structure", deploymentStructure);
@@ -114,7 +114,7 @@
assertTrue(generated.containsAll(original));
}
- protected ProfileDeployment createProfileDeployment(VirtualDeployment deployment) throws Exception
+ protected ProfileDeployment createProfileDeployment(VirtualDeploymentMetaData deployment) throws Exception
{
return profileDeploymentFactory.createDeployment(deployment);
}
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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/java/org/jboss/test/profileservice/virtual/test/VirtualDeploymentAssemblyUnitTestCase.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -26,7 +26,7 @@
import org.jboss.profileservice.spi.ProfileDeployment;
import org.jboss.profileservice.spi.VirtualDeploymentRepository;
import org.jboss.profileservice.spi.deployment.ProfileDeploymentFlag;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.profileservice.version.helpers.NameAndVersionRangeSupport;
import org.jboss.profileservice.virtual.deployment.AbstractVirtualDeployment;
import org.jboss.profileservice.virtual.deployment.AbstractVirtualDeploymentRequirement;
@@ -54,7 +54,7 @@
// Get the repository meta data
VirtualRepositoryMetaData repositoryMetaData = unmarshal("repository.xml", VirtualRepositoryMetaData.class);
- Map<String, VirtualDeployment> deployments = mapDeployments(repositoryMetaData);
+ Map<String, VirtualDeploymentMetaData> deployments = mapDeployments(repositoryMetaData);
// Get the VirtualDeploymentRepository
VirtualDeploymentRepository factory = createRepository(REPOSITORY_LOCATION);
Modified: projects/profileservice/trunk/core/src/test/resources/system/profiles/clustering-profiles.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/system/profiles/clustering-profiles.xml 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/resources/system/profiles/clustering-profiles.xml 2010-03-04 13:42:54 UTC (rev 101822)
@@ -4,12 +4,15 @@
<file-repository group="jboss.clustering" />
<virtual-deployment name="jboss-cache-manager">
<meta-inf path="cache-manager" />
+ <artifact groupId="org.jboss.cache" artifactId="cache-manager" />
</virtual-deployment>
<virtual-deployment name="jgroups-channelfactory">
<meta-inf path="jgroups" />
+ <artifact groupId="org.jboss.jgroups" artifactId="channefactory" />
</virtual-deployment>
<virtual-deployment name="clustering">
<meta-inf path="clustering" />
+ <artifact groupId="org.jboss.as" artifactId="as-clustering" />
</virtual-deployment>
</profile>
Modified: projects/profileservice/trunk/core/src/test/resources/system/profiles/stack-profiles.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/system/profiles/stack-profiles.xml 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/resources/system/profiles/stack-profiles.xml 2010-03-04 13:42:54 UTC (rev 101822)
@@ -22,7 +22,7 @@
<file-repository group="stack1" />
<virtual-deployment name="stack1">
<meta-inf path="jboss-beans.xml" />
- <!-- artifacts for stack1 -->
+ <artifact groupId="org.jboss.stack1" artifactId="stack-configuration" />
</virtual-deployment>
</profile>
<!--
@@ -36,6 +36,7 @@
<virtual-deployment name="stack2">
<meta-inf path="jboss-beans.xml" />
<!-- artifacts for stack2 -->
+ <artifact groupId="org.jboss.stack2" artifactId="stack-configuration" />
</virtual-deployment>
</profile>
Modified: projects/profileservice/trunk/core/src/test/resources/system/profiles/web-profiles.xml
===================================================================
--- projects/profileservice/trunk/core/src/test/resources/system/profiles/web-profiles.xml 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/core/src/test/resources/system/profiles/web-profiles.xml 2010-03-04 13:42:54 UTC (rev 101822)
@@ -33,12 +33,17 @@
<file-repository group="jboss.web" />
<virtual-deployment name="jboss.web.clustering">
<meta-inf path="clustering" />
+ <artifact groupId="org.jboss.web" artifactId="jbossweb-clustering" />
</virtual-deployment>
<requires name="jboss:profile=clustering" />
</profile>
<profile name="jboss:profile=web,flavor=stack">
<file-repository group="jboss.web" />
+ <virtual-deployment name="jboss.web.clustering">
+ <meta-inf path="stack" />
+ <artifact groupId="org.jboss.web" artifactId="jbossweb-stack" />
+ </virtual-deployment>
<!-- depend on the alias -->
<requires name="jboss:profile=stack" />
</profile>
Modified: projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestComponentMetaData.java
===================================================================
--- projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestComponentMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestComponentMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -40,6 +40,8 @@
/** The component name. */
private String name;
+ /** . */
+ private String attachmentProperty;
public TestComponentMetaData()
{
@@ -64,5 +66,16 @@
this.name = name;
}
+ @ManagementProperty(name = "attachment-property")
+ public String getAttachmentProperty()
+ {
+ return this.attachmentProperty;
+ }
+
+ public void setAttachmentProperty(String attachmentProperty)
+ {
+ this.attachmentProperty = attachmentProperty;
+ }
+
}
Modified: projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestServiceComponentMetaData.java
===================================================================
--- projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestServiceComponentMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/support/TestServiceComponentMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -40,6 +40,9 @@
/** The component name. */
private String name;
+ /** . */
+ private String runtimeProperty;
+
public TestServiceComponentMetaData()
{
//
@@ -62,6 +65,17 @@
this.name = name;
}
+ @ManagementProperty(name = "runtime-property")
+ public String getRuntimeProperty()
+ {
+ return runtimeProperty;
+ }
+
+ public void setRuntimeProperty(String runtimeProperty)
+ {
+ this.runtimeProperty = runtimeProperty;
+ }
+
@ManagementOperation
public void invoke()
{
Modified: projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/test/SimpleViewUnitTestCase.java
===================================================================
--- projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/test/SimpleViewUnitTestCase.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/plugins/src/test/java/org/jboss/test/profileservice/plugins/mgt/test/SimpleViewUnitTestCase.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -85,6 +85,9 @@
assertNotNull(one.getOperations());
assertTrue(one.getOperations().size() > 0);
+ assertNotNull(one.getProperty("attachment-property"));
+ assertNotNull(one.getProperty("runtime-property"));
+
}
}
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileDeployment.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileDeployment.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileDeployment.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -51,6 +51,13 @@
* @return the simple deployment name
*/
String getSimpleName();
+
+ /**
+ * Get the deployment info.
+ *
+ * @return the deployment info
+ */
+ ProfileDeploymentInfo getDeploymentInfo();
/**
* Get the root of the deployment
@@ -60,20 +67,6 @@
VirtualFile getRoot();
/**
- * Cleanup the associated {@code VirtualFile} information.
- *
- * @throws Exception for any error
- */
- void cleanup() throws Exception;
-
- /**
- * Get the deployment info.
- *
- * @return the deployment info
- */
- ProfileDeploymentInfo getDeploymentInfo();
-
- /**
* Get the predetermined attachments.
*
* @return the predetermined attachments
@@ -86,6 +79,13 @@
* @return the transient attachments
*/
DeploymentAttachments getTransientAttachments();
+
+ /**
+ * Cleanup the associated {@code VirtualFile} information.
+ *
+ * @throws Exception for any error
+ */
+ void cleanup() throws Exception;
}
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileKey.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileKey.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/ProfileKey.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -38,7 +38,7 @@
{
/** The serialVersionUID */
- private static final long serialVersionUID = 1;
+ private static final long serialVersionUID = 2;
/** The DEFAULT value for domain, server, name */
public static final String DEFAULT = "default";
@@ -47,12 +47,14 @@
public static final ProfileKey DEFAULT_PROFILE_KEY = new ProfileKey(DEFAULT, DEFAULT, DEFAULT);
/** The profile domain/cluster */
- private String domain;
+ private final String domain;
/** The server/node */
- private String server;
+ private final String server;
/** The profile name */
- private String name;
+ private final String name;
+ private final int hashCode;
+
/**
* Calls this this(DEFAULT, DEFAULT, name)
* @param name - the profile name
@@ -81,34 +83,23 @@
if( name == null )
name = DEFAULT;
this.name = name;
+ this.hashCode = domain.hashCode() + server.hashCode() + name.hashCode();
}
public String getName()
{
return name;
}
- public void setName(String name)
- {
- this.name = name;
- }
public String getDomain()
{
return domain;
}
- public void setDomain(String domain)
- {
- this.domain = domain;
- }
public String getServer()
{
return server;
}
- public void setServer(String server)
- {
- this.server = server;
- }
/**
* Is this a default key. A default key is one where all
@@ -154,7 +145,7 @@
public int hashCode()
{
- return domain.hashCode() + server.hashCode() + name.hashCode();
+ return hashCode;
}
public String toString()
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/VirtualDeploymentRepository.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/VirtualDeploymentRepository.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/VirtualDeploymentRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -23,7 +23,7 @@
import java.io.IOException;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
/**
* The virtual deployment repository.
@@ -42,7 +42,7 @@
* @return the profile deployment
* @throws IOException
*/
- ProfileDeployment createDeployment(VirtualDeployment virtual) throws IOException;
+ ProfileDeployment createDeployment(VirtualDeploymentMetaData virtual) throws IOException;
}
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/ProfileDeploymentMetaData.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/ProfileDeploymentMetaData.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/metadata/ProfileDeploymentMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -21,7 +21,7 @@
*/
package org.jboss.profileservice.spi.metadata;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
/**
* The meta data describing a (virtual) profile deployment.
@@ -29,7 +29,7 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public interface ProfileDeploymentMetaData extends VirtualDeployment, ProfileMetaDataVisitorNode
+public interface ProfileDeploymentMetaData extends VirtualDeploymentMetaData, ProfileMetaDataVisitorNode
{
}
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Artifact.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Artifact.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/Artifact.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -24,7 +24,9 @@
import java.io.IOException;
import java.io.InputStream;
+import org.jboss.vfs.VirtualFile;
+
/**
* The artifact.
*
@@ -42,6 +44,13 @@
ArtifactRepositoryId getRepository();
/**
+ * Get the relative path to the repository.
+ *
+ * @return the relative path to the repository
+ */
+ String getRelativePath();
+
+ /**
* Get the last modified.
*
* @return last modified
@@ -49,6 +58,13 @@
long getLastModified();
/**
+ * Get the file.
+ *
+ * @return the file.
+ */
+ VirtualFile getFile();
+
+ /**
* Get the artifacts input stream.
*
* @return the input stream
Added: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactFilter.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactFilter.java (rev 0)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactFilter.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2010, Red Hat 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;
+
+/**
+ * The artifact filter.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface ArtifactFilter<T extends ArtifactId>
+{
+
+ /**
+ * Accepts an artifact.
+ *
+ * @param artifact the artifact
+ * @return
+ */
+ boolean accepts(Artifact<T> artifact);
+
+ /**
+ * Determine whether to recurse into a
+ * artifact - e.g. for file artifacts
+ * if it's a directory.
+ *
+ * TODO does this make sense?
+ *
+ * @param artifact the artifact
+ * @return
+ */
+ boolean recurse(Artifact<T> artifact);
+}
+
Modified: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepository.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -68,6 +68,14 @@
Collection<Artifact<T>> getArtifacts();
/**
+ * Get the filtered artifacts.
+ *
+ * @param filter the artifact filter.
+ * @return the artifacts.
+ */
+ Collection<Artifact<T>> getArtifacts(ArtifactFilter<T> filter);
+
+ /**
* Get the artifact file from the repository.
*
* @param artifact the artifact
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepositoryId.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepositoryId.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/repository/ArtifactRepositoryId.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -29,7 +29,6 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-// TODO make this a unique identifier for a artifact repo
public interface ArtifactRepositoryId extends Serializable
{
@@ -48,9 +47,6 @@
* @return the name
*/
String getName();
-
-
- // TODO relative url based on jboss home?
- // String getRelativeLocation();
+
}
Deleted: 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 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeployment.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -1,66 +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;
-
-import org.jboss.profileservice.spi.repository.ArtifactId;
-
-/**
- * The virtual deployment meta data.
- *
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision$
- */
-public interface VirtualDeployment
-{
-
- /**
- * Get the deployment name.
- *
- * @return the name
- */
- String getName();
-
- /**
- * Get the artifact id.
- *
- * @return the artifact id
- */
- ArtifactId getArtifact();
-
- /**
- * Get the deployment artifacts.
- *
- * @return the artifacts
- */
- List<VirtualArtifactMetaData> getArtifacts();
-
- /**
- * Get the children.
- *
- * @return the children
- */
- List<VirtualDeployment> getChildren();
-
-}
-
Copied: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeploymentMetaData.java (from rev 101460, 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/VirtualDeploymentMetaData.java (rev 0)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/VirtualDeploymentMetaData.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -0,0 +1,66 @@
+/*
+ * 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 deployment meta data.
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public interface VirtualDeploymentMetaData
+{
+
+ /**
+ * Get the deployment name.
+ *
+ * @return the name
+ */
+ String getName();
+
+ /**
+ * Get the artifact id.
+ *
+ * @return the artifact id
+ */
+ ArtifactId getArtifact();
+
+ /**
+ * Get the deployment artifacts.
+ *
+ * @return the artifacts
+ */
+ List<VirtualArtifactMetaData> getArtifacts();
+
+ /**
+ * Get the children.
+ *
+ * @return the children
+ */
+ List<VirtualDeploymentMetaData> getChildren();
+
+}
+
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssembly.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssembly.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssembly.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -23,7 +23,7 @@
import java.io.IOException;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
/**
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
@@ -39,7 +39,7 @@
* @return the assembly context
* @throws IOException
*/
- VirtualDeploymentAssemblyContext assemble(VirtualDeployment deployment) throws IOException;
+ VirtualDeploymentAssemblyContext assemble(VirtualDeploymentMetaData deployment) throws IOException;
// TODO disassemble a virtual deployment, updating the artifacts in a mutable repo
Modified: projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssemblyContext.java
===================================================================
--- projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssemblyContext.java 2010-03-04 13:39:17 UTC (rev 101821)
+++ projects/profileservice/trunk/spi/src/main/java/org/jboss/profileservice/spi/virtual/assembly/VirtualDeploymentAssemblyContext.java 2010-03-04 13:42:54 UTC (rev 101822)
@@ -24,7 +24,7 @@
import java.io.IOException;
import org.jboss.profileservice.spi.virtual.VirtualArtifactMetaData;
-import org.jboss.profileservice.spi.virtual.VirtualDeployment;
+import org.jboss.profileservice.spi.virtual.VirtualDeploymentMetaData;
import org.jboss.vfs.VirtualFile;
/**
@@ -57,7 +57,7 @@
* @param child the virtual deployment child
* @throws IOException
*/
- VirtualDeploymentAssemblyContext addChild(VirtualDeployment child) throws IOException;
+ VirtualDeploymentAssemblyContext addChild(VirtualDeploymentMetaData child) throws IOException;
}
More information about the jboss-cvs-commits
mailing list