package org.jboss.windup.rules.apps.java.model;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.jboss.windup.graph.model.resource.FileModel;
import org.jboss.windup.graph.model.resource.SourceFileModel;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.modules.javahandler.JavaHandler;
import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
/**
* Represents a Java-style {@link Properties} file.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*
*/
@TypeValue(PropertiesModel.TYPE)
public interface PropertiesModel extends FileModel, SourceFileModel
{
public static final String TYPE = "PropertiesModel";
/**
* Gets the contents of the file as a {@link Properties} object.
*/
@JavaHandler
public Properties getProperties() throws IOException;
abstract class Impl extends FileModel.Impl implements PropertiesModel, JavaHandlerContext<Vertex>
{
public Properties getProperties() throws IOException
{
try (InputStream is = this.asInputStream())
{
Properties props = new Properties();
props.load(is);
return props;
}
}
}
}