package org.jboss.windup.rules.apps.java.model;
import org.jboss.windup.graph.Indexed;
import org.jboss.windup.graph.model.resource.FileModel;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.frames.Adjacency;
import com.tinkerpop.frames.Property;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
/**
* This Model represents Java class files on disk (eg, /path/to/Foo.class). This does not represent Java source files (.java files). The class itself
* is represented by the {@link JavaClassModel} frame.
*/
@TypeValue(JavaClassFileModel.TYPE)
public interface JavaClassFileModel extends FileModel
{
String MINOR_VERSION = "minorVersion";
String MAJOR_VERSION = "majorVersion";
String TYPE = "JavaClassFileModel";
String PROPERTY_PACKAGE_NAME = "packageName";
String SKIP_DECOMPILATION = "skipDecompilation";
String DECOMPILED_FILE = "decompiledFile";
/**
* Indicates that we should not decompile this. This can allow us to skip the decompilation of class files that are not determined to be relevant
* for source scanning.
*/
@Property(SKIP_DECOMPILATION)
Boolean getSkipDecompilation();
/**
* Indicates that we should not decompile this. This can allow us to skip the decompilation of class files that are not determined to be relevant
* for source scanning.
*/
@Property(SKIP_DECOMPILATION)
void setSkipDecompilation(boolean skipDecompilation);
/**
* Contains the package name represented by this class file.
*/
@Property(PROPERTY_PACKAGE_NAME)
String getPackageName();
/**
* Contains the package name represented by this class file.
*/
@Indexed
@Property(PROPERTY_PACKAGE_NAME)
void setPackageName(String packageName);
/**
* Contains the {@link JavaClassModel} represented by this .class file.
*/
@Adjacency(label = JavaSourceFileModel.JAVA_CLASS_MODEL, direction = Direction.OUT)
void setJavaClass(JavaClassModel model);
/**
* Contains the {@link JavaClassModel} represented by this .class file.
*/
@Adjacency(label = JavaSourceFileModel.JAVA_CLASS_MODEL, direction = Direction.OUT)
JavaClassModel getJavaClass();
/**
* Contains the Major version of this class file
*/
@Property(MAJOR_VERSION)
int getMajorVersion();
/**
* Contains the Major version of this class file
*/
@Property(MAJOR_VERSION)
void setMajorVersion(int majorVersion);
/**
* Contains the Minor version of this class file
*/
@Property(MINOR_VERSION)
int getMinorVersion();
/**
* Contains the Minor version of this class file
*/
@Property(MINOR_VERSION)
void setMinorVersion(int minorVersion);
}