package org.jboss.as.patching.runner;
import java.io.File;
import org.jboss.as.patching.metadata.ContentItem;
/**
* @author Emanuel Muckenhuber
*/
public interface PatchContentProvider {
/**
* Get the patch content loader for a given patch.
*
* @param patchId the patch id
* @return the content loader
*/
PatchContentLoader getLoader(String patchId);
/**
* Cleanup
*/
void cleanup();
static class DefaultContentProvider implements PatchContentProvider {
private final File workDir;
private DefaultContentProvider(File tempDir) {
this.workDir = tempDir;
}
@Override
public PatchContentLoader getLoader(final String patchId) {
final File root = new File(workDir, patchId);
return PatchContentLoader.create(root);
}
@Override
public void cleanup() {
// Nothing by default
}
/**
* Create a default content provider.
*
* @param tempDir the temp dir
* @return the content provider
*/
static DefaultContentProvider create(final File tempDir) {
return new DefaultContentProvider(tempDir);
}
}
PatchContentProvider ROLLBACK_PROVIDER = new PatchContentProvider() {
@Override
public PatchContentLoader getLoader(String patchId) {
return new PatchContentLoader() {
@Override
public File getFile(ContentItem item) {
throw new IllegalStateException();
}
};
}
@Override
public void cleanup() {
//
}
};
}