/*****************************************************************************
* Copyright (c) 2006-2013, Cloudsmith Inc.
* The code, documentation and other materials contained herein have been
* licensed under the Eclipse Public License - v 1.0 by the copyright holder
* listed above, as the Initial Contributor under such license. The text of
* such license is available at www.eclipse.org.
*****************************************************************************/
package org.eclipse.buckminster.core.version;
import org.eclipse.buckminster.core.cspec.model.ComponentRequest;
import org.eclipse.buckminster.core.ctype.IComponentType;
import org.eclipse.buckminster.core.reader.IVersionFinder;
import org.eclipse.buckminster.core.resolver.NodeQuery;
import org.eclipse.buckminster.core.resolver.ResolverDecision;
import org.eclipse.buckminster.core.resolver.ResolverDecisionType;
import org.eclipse.buckminster.core.rmap.model.Provider;
import org.eclipse.buckminster.core.rmap.model.ProviderScore;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ecf.core.security.IConnectContext;
import org.eclipse.equinox.p2.metadata.Version;
/**
* @author Thomas Hallgren
*/
public abstract class AbstractVersionFinder implements IVersionFinder {
private final Provider provider;
private final NodeQuery query;
private final IComponentType componentType;
public AbstractVersionFinder(Provider provider, IComponentType componentType, NodeQuery query) {
this.provider = provider;
this.query = query;
this.componentType = componentType;
}
@Override
public void close() {
}
public IComponentType getComponentType() {
return componentType;
}
@Override
public IConnectContext getConnectContext() {
IConnectContext cctx = provider.getConnectContext(query.getProperties());
if (cctx == null)
cctx = query.getComponentQuery().getConnectContext();
return cctx;
}
@Override
public Provider getProvider() {
return provider;
}
@Override
public ProviderMatch getProviderMatch(VersionMatch versionMatch, IComponentType ctypeUsed, ProviderScore score) throws CoreException {
return new ProviderMatch(provider, ctypeUsed, versionMatch, score, query);
}
@Override
public NodeQuery getQuery() {
return query;
}
@Override
public ResolverDecision logDecision(ComponentRequest request, ResolverDecisionType decisionType, Object... args) {
return query.logDecision(decisionType, args);
}
@Override
public ResolverDecision logDecision(ResolverDecisionType decisionType, Object... args) {
return query.logDecision(decisionType, args);
}
protected Version getVersionFromArtifacts(VersionSelector branchOrTag, IProgressMonitor monitor) throws CoreException {
VersionMatch match = new VersionMatch(null, branchOrTag, query.getRevision(), query.getTimestamp(), null);
ProviderMatch rInfo = new ProviderMatch(provider, componentType, match, query);
return componentType.getComponentVersion(rInfo, monitor);
}
}