001package org.eclipse.aether.internal.impl;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 * 
012 *  http://www.apache.org/licenses/LICENSE-2.0
013 * 
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import org.eclipse.aether.RepositorySystemSession;
023import org.eclipse.aether.impl.VersionRangeResolver;
024import org.eclipse.aether.resolution.VersionRangeRequest;
025import org.eclipse.aether.resolution.VersionRangeResolutionException;
026import org.eclipse.aether.resolution.VersionRangeResult;
027import org.eclipse.aether.util.version.GenericVersionScheme;
028import org.eclipse.aether.version.InvalidVersionSpecificationException;
029import org.eclipse.aether.version.Version;
030import org.eclipse.aether.version.VersionConstraint;
031import org.eclipse.aether.version.VersionScheme;
032
033/**
034 */
035public class StubVersionRangeResolver
036    implements VersionRangeResolver
037{
038
039    private final VersionScheme versionScheme = new GenericVersionScheme();
040
041    public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
042        throws VersionRangeResolutionException
043    {
044        VersionRangeResult result = new VersionRangeResult( request );
045        try
046        {
047            VersionConstraint constraint = versionScheme.parseVersionConstraint( request.getArtifact().getVersion() );
048            result.setVersionConstraint( constraint );
049            if ( constraint.getRange() == null )
050            {
051                result.addVersion( constraint.getVersion() );
052            }
053            else
054            {
055                for ( int i = 1; i < 10; i++ )
056                {
057                    Version ver = versionScheme.parseVersion( Integer.toString( i ) );
058                    if ( constraint.containsVersion( ver ) )
059                    {
060                        result.addVersion( ver );
061                        if ( !request.getRepositories().isEmpty() )
062                        {
063                            result.setRepository( ver, request.getRepositories().get( 0 ) );
064                        }
065                    }
066                }
067            }
068        }
069        catch ( InvalidVersionSpecificationException e )
070        {
071            result.addException( e );
072            throw new VersionRangeResolutionException( result );
073        }
074
075        return result;
076    }
077
078}