001    package org.apache.maven.artifact.resolver.filter;
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    
022    /**
023     * Filter to only retain objects in the given artifactScope or better.
024     *
025     * @author <a href="mailto:brett@apache.org">Brett Porter</a>
026     */
027    public class ScopeArtifactFilter
028        extends AbstractScopeArtifactFilter
029    {
030    
031        private final String scope;
032    
033        public ScopeArtifactFilter( String scope )
034        {
035            this.scope = scope;
036    
037            addScopeInternal( scope );
038        }
039    
040        public String getScope()
041        {
042            return scope;
043        }
044    
045        @Override
046        public int hashCode()
047        {
048            int hash = 17;
049    
050            hash = hash * 31 + ( scope != null ? scope.hashCode() : 0 );
051    
052            return hash;
053        }
054    
055        @Override
056        public boolean equals( Object obj )
057        {
058            if ( this == obj )
059            {
060                return true;
061            }
062    
063            if ( !( obj instanceof ScopeArtifactFilter ) )
064            {
065                return false;
066            }
067    
068            ScopeArtifactFilter other = (ScopeArtifactFilter) obj;
069    
070            return equals( scope, other.scope );
071        }
072    
073        private static <T> boolean equals( T str1, T str2 )
074        {
075            return str1 != null ? str1.equals( str2 ) : str2 == null;
076        }
077    
078    }