/** * Copyright (c) Codice Foundation * <p/> * This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser * General Public License as published by the Free Software Foundation, either version 3 of the * License, or any later version. * <p/> * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. A copy of the GNU Lesser General Public License * is distributed along with this program and can be found at * <http://www.gnu.org/licenses/lgpl.html>. */ package ddf.catalog.impl; import java.util.Date; import java.util.HashSet; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ddf.catalog.data.ContentType; import ddf.catalog.operation.CreateRequest; import ddf.catalog.operation.CreateResponse; import ddf.catalog.operation.DeleteRequest; import ddf.catalog.operation.DeleteResponse; import ddf.catalog.operation.QueryRequest; import ddf.catalog.operation.SourceResponse; import ddf.catalog.operation.UpdateRequest; import ddf.catalog.operation.UpdateResponse; import ddf.catalog.source.CatalogProvider; public class MockDelayProvider extends MockSource implements CatalogProvider { private static final Logger LOGGER = LoggerFactory.getLogger(MockDelayProvider.class); private MockMemoryProvider provider; private long createDelayMillis = 0; private long updateDelayMillis = 0; private long deleteDelayMillis = 0; private long queryDelayMillis = 0; private String sourceId = "mockDelayProvider"; public MockDelayProvider(String shortName, String title, String version, String organization, Set<ContentType> catalogTypes, boolean isAvailable, Date lastAvailability) { super(shortName, title, version, organization, catalogTypes, isAvailable, lastAvailability); provider = new MockMemoryProvider(shortName, title, version, organization, catalogTypes, isAvailable, lastAvailability); } @Override public CreateResponse create(CreateRequest request) { try { Thread.sleep(createDelayMillis); } catch (InterruptedException e) { LOGGER.error("Failed to sleep during create.", e); } return provider.create(request); } @Override public UpdateResponse update(UpdateRequest request) { try { Thread.sleep(updateDelayMillis); } catch (InterruptedException e) { LOGGER.error("Failed to sleep during update.", e); } return provider.update(request); } @Override public DeleteResponse delete(DeleteRequest request) { try { Thread.sleep(deleteDelayMillis); } catch (InterruptedException e) { LOGGER.error("Failed to sleep during delete.", e); } return provider.delete(request); } @Override public SourceResponse query(QueryRequest query) { try { Thread.sleep(queryDelayMillis); } catch (InterruptedException e) { LOGGER.error("Failed to sleep during query.", e); } return provider.query(query); } public int size() { return provider.size(); } public boolean hasReceivedQuery() { return provider.hasReceivedQuery(); } public boolean hasReceivedRead() { return provider.hasReceivedRead(); } public boolean hasReceivedCreate() { return provider.hasReceivedCreate(); } public boolean hasReceivedUpdate() { return provider.hasReceivedUpdate(); } public boolean hasReceivedDelete() { return provider.hasReceivedDelete(); } public boolean hasReceivedUpdateByIdentifier() { return provider.hasReceivedUpdateByIdentifier(); } public boolean hasReceivedDeleteByIdentifier() { return provider.hasReceivedDeleteByIdentifier(); } @Override public String getId() { return sourceId; } @Override public void maskId(String sourceId) { this.sourceId = sourceId; } @Override public Set<ContentType> getContentTypes() { return new HashSet<ContentType>(); } public long getCreateDelayMillis() { return createDelayMillis; } public void setCreateDelayMillis(long createDelayMillis) { this.createDelayMillis = createDelayMillis; } public long getUpdateDelayMillis() { return updateDelayMillis; } public void setUpdateDelayMillis(long updateDelayMillis) { this.updateDelayMillis = updateDelayMillis; } public long getDeleteDelayMillis() { return deleteDelayMillis; } public void setDeleteDelayMillis(long deleteDelayMillis) { this.deleteDelayMillis = deleteDelayMillis; } public long getQueryDelayMillis() { return queryDelayMillis; } public void setQueryDelayMillis(long queryDelayMillis) { this.queryDelayMillis = queryDelayMillis; } }