fetcher.connect( context.getId(), context.getIndexUpdateUrl() );
}
File cacheDir = updateRequest.getLocalIndexCacheDir();
Locker locker = updateRequest.getLocker();
Lock lock = locker != null && cacheDir != null ? locker.lock( cacheDir ) : null;
try
{
if ( cacheDir != null )
{
LocalCacheIndexAdaptor cache = new LocalCacheIndexAdaptor( cacheDir, result );
if ( !updateRequest.isOffline() )
{
cacheDir.mkdirs();
try
{
fetchAndUpdateIndex( updateRequest, fetcher, cache );
cache.commit();
}
finally
{
fetcher.disconnect();
}
}
fetcher = cache.getFetcher();
}
else if ( updateRequest.isOffline() )
{
throw new IllegalArgumentException( "LocalIndexCacheDir can not be null in offline mode" );
}
try
{
if ( !updateRequest.isCacheOnly() )
{
LuceneIndexAdaptor target = new LuceneIndexAdaptor( updateRequest );
result.setTimestamp( fetchAndUpdateIndex( updateRequest, fetcher, target ) );
target.commit();
}
}
finally
{
fetcher.disconnect();
}
}
finally
{
if ( lock != null )
{
lock.release();
}
}
return result;
}