\r
import org.tizen.common.file.FileHandler;\r
import org.tizen.common.file.FileHandler.Attribute;\r
+import org.tizen.common.util.Assert;\r
\r
public class\r
ResourceLayer\r
final FileHandler fileHandler\r
)\r
{\r
+ Assert.notNull( fileHandler );\r
+ \r
this.name = name;\r
this.parent = parent;\r
this.fileHandler = fileHandler;\r
)\r
throws IOException\r
{\r
- fileHandler.removeFile( path );\r
+ // Bug fix : Solve 'a resource not found' problem\r
+ // Check the existence of resource\r
+ if ( fileHandler.is( path, Attribute.EXISTS ) ) {\r
+ fileHandler.removeFile( path );\r
+ }\r
}\r
\r
public void addFilterResource(Resource res) {\r
Vertex vertex = getVertexFromDB( resource );
if ( vertex != null ) {
- Iterator<Edge> iterator = vertex.getEdges( Direction.BOTH ).iterator();
+ // Bug fix : Solve 'incoming edges are not found' problem.
+ // The way to get edges with both direction by vertex cannot find incoming edges.
+ Iterator<Edge> iterator = graph.getEdges().iterator();
while( iterator.hasNext() ) {
Edge edge = iterator.next();
Vertex in = edge.getVertex( Direction.IN );
Vertex out = edge.getVertex( Direction.OUT );
- result.add( new OrientDBDependency( in, out, this.lastLayer ) );
+
+ if ( equals( in, vertex ) || equals( out, vertex ) ) {
+ result.add( new OrientDBDependency( in, out, this.lastLayer ) );
+ }
}
}
}
}
+ protected boolean equals(Vertex v1, Vertex v2) {
+ String v1Layer = v1.getProperty( DependencyConstant.RESOURCE_KEY_LAYER );
+ String v1Path = v1.getProperty( DependencyConstant.RESOURCE_KEY_PATH );
+ String v1Project = v1.getProperty( DependencyConstant.RESOURCE_KEY_PROJECT );
+
+ String v2Layer = v2.getProperty( DependencyConstant.RESOURCE_KEY_LAYER );
+ String v2Path = v2.getProperty( DependencyConstant.RESOURCE_KEY_PATH );
+ String v2Project = v2.getProperty( DependencyConstant.RESOURCE_KEY_PROJECT );
+
+ return v1Layer.equals( v2Layer ) && v1Path.equals( v2Path ) && v1Project.equals( v2Project );
+ }
+
@Override
public Resource getEdgeSource(Dependency dependency) {
return dependency.getSource();
public Resource getEdgeTarget(Dependency dependency) {
return dependency.getTarget();
}
+
+ public void printAllEdges(String msg) {
+ synchronized( syncObj ) {
+ logger.trace( "[ Edge list start - {} ]", msg );
+
+ Iterator<Edge> iterator = graph.getEdges().iterator();
+ while( iterator.hasNext() ) {
+ Edge edge = iterator.next();
+
+ Vertex in = edge.getVertex( Direction.IN );
+ Vertex out = edge.getVertex( Direction.OUT );
+
+ Object[] msgs = {
+ in.getProperty( DependencyConstant.RESOURCE_KEY_PROJECT ),
+ in.getProperty( DependencyConstant.RESOURCE_KEY_PATH ),
+ in.getProperty( DependencyConstant.RESOURCE_KEY_LAYER ),
+ out.getProperty( DependencyConstant.RESOURCE_KEY_PROJECT ),
+ out.getProperty( DependencyConstant.RESOURCE_KEY_PATH ),
+ out.getProperty( DependencyConstant.RESOURCE_KEY_LAYER )
+ };
+
+ logger.trace( "[{}] {} ( {} ) -> [{}] {} ( {} )", msgs );
+ }
+
+ logger.trace( "[ Edge list finish ]" );
+ }
+ }
}
import org.tizen.common.builder.Dependency;
import org.tizen.common.builder.Resource;
import org.tizen.common.builder.ResourceLayer;
+import org.tizen.common.file.VirtualFileHandler;
import org.tizen.common.util.Assert;
import com.tinkerpop.blueprints.Vertex;
resourceLayer = resourceLayer.getParent();
}
- return null;
+ // Bug fix : Prevent NPE.
+ // In this case, a vertex was existed in DB but the matched resource layer is divided.
+ return new Resource( new ResourceLayer( layer, new VirtualFileHandler() ), path );
}
public Vertex getSourceVertex() {
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
throws IOException
{
final File file = getFile( path );
+
if ( !file.isFile() )
{
+ // for details
+ if ( file.exists() == false ) {
+ logger.error( "{} is not exist.", path );
+ throw new FileNotFoundException( path + " is not exist." );
+ }
+
logger.error("{} is not a file", path);
throw new IOException(path + " is not a file.");
}