package org.jboss.windup.rules.apps.java.model;
import org.apache.commons.lang3.StringUtils;
import org.jboss.windup.graph.model.ArchiveModel;
import org.jboss.windup.graph.model.resource.FileModel;
import org.jboss.windup.graph.model.resource.SourceFileModel;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.Adjacency;
import com.tinkerpop.frames.modules.javahandler.JavaHandler;
import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
/**
* Contains information from the META-INF/MANIFEST.MF file within an archive.
*/
@TypeValue(JarManifestModel.TYPE)
public interface JarManifestModel extends FileModel, SourceFileModel
{
String TYPE = "JarManifestModel";
String ARCHIVE = TYPE + ":archiveToManifest";
@Adjacency(label = ARCHIVE, direction = Direction.IN)
ArchiveModel getArchive();
@Adjacency(label = ARCHIVE, direction = Direction.IN)
void setArchive(final ArchiveModel archive);
@JavaHandler
String getName();
@JavaHandler
String getVendor();
@JavaHandler
String getVersion();
@JavaHandler
String getDescription();
abstract class Impl implements JarManifestModel, JavaHandlerContext<Vertex>
{
private static final String SPEC_TITLE = "Specification-Title";
private static final String BUNDLE_NAME = "Bundle-Name";
private static final String IMPLEMENTATION_TITLE = "Implementation-Title";
private static final String BUNDLE_DESCRIPTION = "Bundle-Description";
private static final String SPEC_VENDOR = "Specification-Vendor";
private static final String BUNDLE_VENDOR = "Bundle-Vendor";
private static final String IMPLEMENTATION_VERSION = "Implementation-Version";
@Override
public String getName()
{
String name = StringUtils.defaultIfBlank((String)it().getProperty(SPEC_TITLE), (String)it().getProperty(BUNDLE_NAME));
return StringUtils.defaultIfBlank(name, (String)it().getProperty(IMPLEMENTATION_TITLE));
}
@JavaHandler
public String getVendor()
{
return StringUtils.defaultIfBlank((String)it().getProperty(SPEC_VENDOR), (String)it().getProperty(BUNDLE_VENDOR));
}
@Override
public String getVersion()
{
return (String)it().getProperty(IMPLEMENTATION_VERSION);
}
@Override
public String getDescription()
{
return (String)it().getProperty(BUNDLE_DESCRIPTION);
}
}
}