Java tutorial
/* * Copyright 2014 Guillaume Bailleul * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.gbmb.collector.impl; import net.gbmb.collector.TemporaryStorage; import org.apache.commons.io.IOUtils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; public class TestTempStorage implements TemporaryStorage { private Map<String, Map<String, byte[]>> contents = new HashMap<String, Map<String, byte[]>>(); private synchronized Map<String, byte[]> getCidContents(String cid) { Map<String, byte[]> cidContents = contents.get(cid); if (cidContents == null) { cidContents = new HashMap<String, byte[]>(); contents.put(cid, cidContents); } return cidContents; } @Override public String store(String cid, InputStream content) throws IOException { String contentId = UUID.randomUUID().toString(); return store(cid, contentId, content); } @Override public String store(String cid, String contentId, InputStream content) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); IOUtils.copy(content, bos); IOUtils.closeQuietly(content); IOUtils.closeQuietly(bos); getCidContents(cid).put(contentId, bos.toByteArray()); return contentId; } @Override public InputStream get(String cid, String contentId) throws IOException { return new ByteArrayInputStream(getCidContents(cid).get(contentId)); } @Override public List<String> listCollections() throws IOException { return new ArrayList<String>(contents.keySet()); } @Override public void dropCollection(String cid) throws IOException { contents.remove(cid); } }