package org.araqne.storage.engine;
import java.util.ArrayList;
import java.util.List;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Invalidate;
import org.apache.felix.ipojo.annotations.Provides;
import org.apache.felix.ipojo.annotations.Validate;
import org.araqne.storage.api.FilePath;
import org.araqne.storage.api.StorageManager;
import org.araqne.storage.api.URIResolver;
import org.araqne.storage.localfile.LocalFileURIResolver;
@Component(name = "araqne-storage-manager")
@Provides
public class StorageManagerImpl implements StorageManager {
private List<URIResolver> uriResolvers;
public StorageManagerImpl() {
this.uriResolvers = new ArrayList<URIResolver>();
}
@Override
public FilePath resolveFilePath(String path) {
if (path == null)
return null;
for (URIResolver resolver : uriResolvers) {
FilePath filePath = resolver.resolveFilePath(path);
if (filePath != null)
return filePath;
}
return null;
}
@Validate
@Override
public void start() {
addURIResolver(new LocalFileURIResolver());
}
@Invalidate
@Override
public void stop() {
// TODO : close uri resolvers
uriResolvers.clear();
}
@Override
public synchronized void addURIResolver(URIResolver r) {
uriResolvers.add(r);
}
}