package org.jboss.windup.graph.model; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.frames.Adjacency; import com.tinkerpop.frames.Property; import com.tinkerpop.frames.modules.typedgraph.TypeValue; /** * Project dependency information. This has all of the information that would be required for a Maven dependency, but * can also be used for non-maven dependencies. Additional interfaces may extend this to provide further functionality. */ @TypeValue(ProjectDependencyModel.TYPE) public interface ProjectDependencyModel extends WindupVertexFrame { public static final String TYPE = "ProjectDependency"; public static final String PROPERTY_SCOPE = "dependencyScope"; public static final String PROPERTY_CLASSIFIER = "dependencyClassifier"; public static final String PROPERTY_TYPE = "dependencyType"; public static final String FILE_LOCATION_REFERENCE = "fileLocationReference"; @Property(PROPERTY_SCOPE) void setScope(String scope); @Property(PROPERTY_SCOPE) String getScope(); @Property(PROPERTY_CLASSIFIER) void setClassifier(String classifier); @Property(PROPERTY_CLASSIFIER) String getClassifier(); /** * Dependency <type> from the Maven POM - jar, war, etc. * Might be redundant with getProjectModel().getType() */ @Property(PROPERTY_TYPE) void setType(String type); /** * Dependency <type> from the Maven POM - jar, war, etc. * Might be redundant with getProjectModel().getType() * TODO: Remove, not used. */ @Property(PROPERTY_TYPE) String getType(); /** * A reference to the project represented by this dependency (whether that be a project representing a binary jar, * or a project representing a different source module within the current application). */ @Adjacency(label = TYPE + ".representedProject", direction = Direction.OUT) void setProject(ProjectModel projectModel); @Adjacency(label = TYPE + ".representedProject", direction = Direction.OUT) ProjectModel getProjectModel(); /** * Sets the original {@link FileLocationModel} associated with this {@link ProjectDependencyModel} */ @Adjacency(label = FILE_LOCATION_REFERENCE, direction = Direction.OUT) void setFileLocationReference(Iterable<FileLocationModel> m); /** * Gets the original{@link FileLocationModel} associated with this {@link ProjectDependencyModel} */ @Adjacency(label = FILE_LOCATION_REFERENCE, direction = Direction.OUT) Iterable<FileLocationModel> getFileLocationReference(); }