public ResourceKey[] getDependencies() { final ResourceKey[] resourceKeys = parent.getDependencies(); final ResourceKey[] target = new ResourceKey[ resourceKeys.length + 1 ]; target[ 0 ] = parent.getSource(); System.arraycopy( resourceKeys, 0, target, 1, resourceKeys.length ); return target; }
public void add( final Resource dependentResource ) { if ( dependentResource == null ) { throw new NullPointerException(); } final ResourceKey[] depKeys = dependentResource.getDependencies(); for ( int i = 0; i < depKeys.length; i++ ) { final ResourceKey depKey = depKeys[ i ]; final long version = dependentResource.getVersion( depKey ); add( depKey, version ); } }
public boolean isResourceUnchanged( final ResourceManager frontEnd, final Resource resource ) throws ResourceLoadingException { if ( frontEnd == null ) { throw new NullPointerException(); } if ( resource == null ) { throw new NullPointerException(); } final ResourceKey[] deps = resource.getDependencies(); for ( int i = 0; i < deps.length; i++ ) { final ResourceKey dep = deps[ i ]; final long version = resource.getVersion( dep ); if ( version == -1 ) { // non-versioning key, ignore it. continue; } final ResourceData data = frontEnd.load( dep ); if ( data.getVersion( frontEnd ) != version ) { // oh, my bad, an outdated or changed entry. // We have to re-read the whole thing. return false; } } // all versions have been confirmed to be valid. Nice, we can use the // cached product. return true; }
private boolean isResourceCacheable( final Resource newResource ) { final ResourceKey source = newResource.getSource(); if ( newResource.isTemporaryResult() ) { return false; } if ( newResource.getVersion( source ) == -1 ) { return false; } final ResourceKey[] keys = newResource.getDependencies(); for ( int i = 0; i < keys.length; i++ ) { if ( newResource.getVersion( keys[ i ] ) == -1 ) { return false; } } return true; }