01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: */
18: package org.apache.ivy.plugins.conflict;
19:
20: import java.util.Collection;
21:
22: import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
23: import org.apache.ivy.core.resolve.IvyNode;
24:
25: public interface ConflictManager {
26: /**
27: * Resolves the eventual conflicts found in the given collection of IvyNode. This method return
28: * a Collection of IvyNode which have not been evicted. The given conflicts Collection contains
29: * at least one IvyNode. This method can be called with IvyNodes which are not yet loaded. If
30: * this conflict manager is not able to resolve conflicts with the current data found in the
31: * IvyNodes and need them to be fully loaded, it will return null to indicate that no conflict
32: * resolution has been done.
33: *
34: * @param parent
35: * the ivy node parent for which the conflict is to be resolved
36: * @param conflicts
37: * the collection of IvyNode to check for conflicts
38: * @return a Collection of IvyNode which have not been evicted, or null if conflict management
39: * resolution is not possible yet
40: */
41: Collection resolveConflicts(IvyNode parent, Collection conflicts);
42:
43: String getName();
44:
45: /**
46: * Method called when all revisions available for a version constraint have been blacklisted,
47: * and thus the dependency can't be resolved.
48: * <p>
49: * This will never happen if the conflict manager doesn't blacklist any module, so providing an
50: * empty implementation in this case is fine.
51: * </p>
52: *
53: * @param dd
54: * the dependency descriptor for which all revisions are blacklisted.
55: * @param foundBlacklisted
56: * the list of all ModuleRevisionId found which are blacklisted
57: */
58: void handleAllBlacklistedRevisions(DependencyDescriptor dd,
59: Collection/*<ModuleRevisionId>*/foundBlacklisted);
60: }
|