001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018: package org.apache.ivy.core.module.descriptor;
019:
020: import org.apache.ivy.core.module.id.ArtifactId;
021: import org.apache.ivy.core.module.id.ModuleId;
022: import org.apache.ivy.core.module.id.ModuleRevisionId;
023: import org.apache.ivy.plugins.namespace.Namespace;
024: import org.apache.ivy.util.extendable.ExtendableItem;
025:
026: /**
027: *
028: */
029: public interface DependencyDescriptor extends ExtendableItem {
030: ModuleId getDependencyId();
031:
032: /**
033: * Used to indicate that this revision must be used in case of conflicts, independently of
034: * conflicts manager. This only works for direct dependencies, and not transitive ones.
035: *
036: * @return true if this dependency should be used, false if conflicts manager can do its work.
037: */
038: boolean isForce();
039:
040: /**
041: * Used to indicate that this dependency is a changing one. A changing dependency in ivy means
042: * that the revision may have its artifacts modified without revision change. When new artifacts
043: * are published a new ivy file should also be published with a new publication date to indicate
044: * to ivy that artifacts have changed and that they should be downloaded again.
045: *
046: * @return true if this dependency is a changing one
047: */
048: boolean isChanging();
049:
050: boolean isTransitive();
051:
052: ModuleRevisionId getParentRevisionId();
053:
054: ModuleRevisionId getDependencyRevisionId();
055:
056: String[] getModuleConfigurations();
057:
058: String[] getDependencyConfigurations(String moduleConfiguration,
059: String requestedConfiguration);
060:
061: String[] getDependencyConfigurations(String moduleConfiguration);
062:
063: String[] getDependencyConfigurations(String[] moduleConfigurations);
064:
065: Namespace getNamespace();
066:
067: DependencyArtifactDescriptor[] getAllDependencyArtifacts();
068:
069: DependencyArtifactDescriptor[] getDependencyArtifacts(
070: String moduleConfigurations);
071:
072: DependencyArtifactDescriptor[] getDependencyArtifacts(
073: String[] moduleConfigurations);
074:
075: IncludeRule[] getAllIncludeRules();
076:
077: IncludeRule[] getIncludeRules(String moduleConfigurations);
078:
079: IncludeRule[] getIncludeRules(String[] moduleConfigurations);
080:
081: ExcludeRule[] getAllExcludeRules();
082:
083: ExcludeRule[] getExcludeRules(String moduleConfigurations);
084:
085: ExcludeRule[] getExcludeRules(String[] moduleConfigurations);
086:
087: /**
088: * Returns true if
089: *
090: * @param moduleConfigurations
091: * @param artifactId
092: * @return
093: */
094: boolean doesExclude(String[] moduleConfigurations,
095: ArtifactId artifactId);
096:
097: /**
098: * Returns true if this descriptor contains any exclusion rule
099: *
100: * @return true if this descriptor contains any exclusion rule
101: */
102: public boolean canExclude();
103:
104: DependencyDescriptor asSystem();
105: }
|