001    package org.apache.maven.artifact.resolver;
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    import org.apache.maven.artifact.Artifact;
023    import org.apache.maven.artifact.versioning.VersionRange;
024    
025    /**
026     * Listens to the resolution process and handles events.
027     *
028     * @author <a href="mailto:brett@apache.org">Brett Porter</a>
029     */
030    public interface ResolutionListener
031    {
032        String ROLE = ResolutionListener.class.getName();
033    
034        int TEST_ARTIFACT = 1;
035    
036        int PROCESS_CHILDREN = 2;
037    
038        int FINISH_PROCESSING_CHILDREN = 3;
039    
040        int INCLUDE_ARTIFACT = 4;
041    
042        int OMIT_FOR_NEARER = 5;
043    
044        int UPDATE_SCOPE = 6;
045    
046        @Deprecated
047        int MANAGE_ARTIFACT = 7;
048    
049        int OMIT_FOR_CYCLE = 8;
050    
051        /**
052         * this event means that the artifactScope has NOT been updated to a farther node artifactScope because current
053         * node is in the first level pom
054         */
055        int UPDATE_SCOPE_CURRENT_POM = 9;
056    
057        int SELECT_VERSION_FROM_RANGE = 10;
058    
059        int RESTRICT_RANGE = 11;
060    
061        int MANAGE_ARTIFACT_VERSION = 12;
062    
063        int MANAGE_ARTIFACT_SCOPE = 13;
064    
065        int MANAGE_ARTIFACT_SYSTEM_PATH = 14;
066    
067        void testArtifact( Artifact node );
068    
069        void startProcessChildren( Artifact artifact );
070    
071        void endProcessChildren( Artifact artifact );
072    
073        void includeArtifact( Artifact artifact );
074    
075        void omitForNearer( Artifact omitted,
076                            Artifact kept );
077    
078        void updateScope( Artifact artifact,
079                          String scope );
080    
081        @Deprecated
082        void manageArtifact( Artifact artifact,
083                             Artifact replacement );
084    
085        // TODO Use the following two instead of manageArtifact
086        // TODO Remove ResolutionListenerDM interface
087    
088        //void manageArtifactVersion( Artifact artifact, Artifact replacement );
089    
090        //void manageArtifactScope( Artifact artifact, Artifact replacement );
091    
092        void omitForCycle( Artifact artifact );
093    
094        /**
095         * This event means that the artifactScope has NOT been updated to a farther node artifactScope because current
096         * node is in the first level pom
097         *
098         * @param artifact     current node artifact, the one in the first level pom
099         * @param ignoredScope artifactScope that was ignored because artifact was in first level pom
100         */
101        void updateScopeCurrentPom( Artifact artifact,
102                                    String ignoredScope );
103    
104        void selectVersionFromRange( Artifact artifact );
105    
106        void restrictRange( Artifact artifact,
107                            Artifact replacement,
108                            VersionRange newRange );
109    }