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
033import static java.util.Objects.requireNonNull;
034
035/**
036 */
037public class StubVersionRangeResolver
038    implements VersionRangeResolver
039{
040
041    private final VersionScheme versionScheme = new GenericVersionScheme();
042
043    public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
044        throws VersionRangeResolutionException
045    {
046        requireNonNull( session, "session cannot be null" );
047        requireNonNull( request, "request cannot be null" );
048        VersionRangeResult result = new VersionRangeResult( request );
049        try
050        {
051            VersionConstraint constraint = versionScheme.parseVersionConstraint( request.getArtifact().getVersion() );
052            result.setVersionConstraint( constraint );
053            if ( constraint.getRange() == null )
054            {
055                result.addVersion( constraint.getVersion() );
056            }
057            else
058            {
059                for ( int i = 1; i < 10; i++ )
060                {
061                    Version ver = versionScheme.parseVersion( Integer.toString( i ) );
062                    if ( constraint.containsVersion( ver ) )
063                    {
064                        result.addVersion( ver );
065                        if ( !request.getRepositories().isEmpty() )
066                        {
067                            result.setRepository( ver, request.getRepositories().get( 0 ) );
068                        }
069                    }
070                }
071            }
072        }
073        catch ( InvalidVersionSpecificationException e )
074        {
075            result.addException( e );
076            throw new VersionRangeResolutionException( result );
077        }
078
079        return result;
080    }
081
082}