/*
* Copyright 2015 JBoss Inc
*
* 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 io.apiman.manager.test.server;
import io.apiman.manager.api.beans.audit.AuditEntryBean;
import io.apiman.manager.api.beans.idm.PermissionBean;
import io.apiman.manager.api.beans.idm.RoleBean;
import io.apiman.manager.api.beans.idm.RoleMembershipBean;
import io.apiman.manager.api.beans.idm.UserBean;
import io.apiman.manager.api.beans.policies.PolicyType;
import io.apiman.manager.api.beans.search.PagingBean;
import io.apiman.manager.api.beans.search.SearchCriteriaBean;
import io.apiman.manager.api.beans.search.SearchResultsBean;
import io.apiman.manager.api.beans.summary.ApiPlanSummaryBean;
import io.apiman.manager.api.beans.summary.ApiRegistryBean;
import io.apiman.manager.api.beans.summary.ApiSummaryBean;
import io.apiman.manager.api.beans.summary.ApiVersionSummaryBean;
import io.apiman.manager.api.beans.summary.ClientSummaryBean;
import io.apiman.manager.api.beans.summary.ClientVersionSummaryBean;
import io.apiman.manager.api.beans.summary.ContractSummaryBean;
import io.apiman.manager.api.beans.summary.GatewaySummaryBean;
import io.apiman.manager.api.beans.summary.OrganizationSummaryBean;
import io.apiman.manager.api.beans.summary.PlanSummaryBean;
import io.apiman.manager.api.beans.summary.PlanVersionSummaryBean;
import io.apiman.manager.api.beans.summary.PluginSummaryBean;
import io.apiman.manager.api.beans.summary.PolicyDefinitionSummaryBean;
import io.apiman.manager.api.beans.summary.PolicySummaryBean;
import io.apiman.manager.api.core.IStorageQuery;
import io.apiman.manager.api.core.exceptions.StorageException;
import io.searchbox.client.JestClient;
import io.searchbox.indices.Refresh;
import java.util.List;
import java.util.Set;
/**
* @author eric.wittmann@redhat.com
*/
@SuppressWarnings("javadoc")
public class TestEsStorageQueryWrapper implements IStorageQuery {
private JestClient esClient;
private IStorageQuery delegate;
/**
* Constructor.
* @param esClient
* @param delegate
*/
public TestEsStorageQueryWrapper(JestClient esClient, IStorageQuery delegate) {
this.esClient = esClient;
this.delegate = delegate;
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#listPlugins()
*/
@Override
public List<PluginSummaryBean> listPlugins() throws StorageException {
refresh();
return this.delegate.listPlugins();
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#listGateways()
*/
@Override
public List<GatewaySummaryBean> listGateways() throws StorageException {
refresh();
return this.delegate.listGateways();
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#findOrganizations(io.apiman.manager.api.beans.search.SearchCriteriaBean)
*/
@Override
public SearchResultsBean<OrganizationSummaryBean> findOrganizations(SearchCriteriaBean criteria)
throws StorageException {
refresh();
return this.delegate.findOrganizations(criteria);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#findClients(io.apiman.manager.api.beans.search.SearchCriteriaBean)
*/
@Override
public SearchResultsBean<ClientSummaryBean> findClients(SearchCriteriaBean criteria)
throws StorageException {
refresh();
return this.delegate.findClients(criteria);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#findApis(io.apiman.manager.api.beans.search.SearchCriteriaBean)
*/
@Override
public SearchResultsBean<ApiSummaryBean> findApis(SearchCriteriaBean criteria)
throws StorageException {
refresh();
return this.delegate.findApis(criteria);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#findPlans(java.lang.String, io.apiman.manager.api.beans.search.SearchCriteriaBean)
*/
@Override
public SearchResultsBean<PlanSummaryBean> findPlans(String organizationId, SearchCriteriaBean criteria)
throws StorageException {
refresh();
return this.delegate.findPlans(organizationId, criteria);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#auditEntity(java.lang.String, java.lang.String, java.lang.String, java.lang.Class, io.apiman.manager.api.beans.search.PagingBean)
*/
@Override
public <T> SearchResultsBean<AuditEntryBean> auditEntity(String organizationId, String entityId,
String entityVersion, Class<T> type, PagingBean paging) throws StorageException {
refresh();
return this.delegate.auditEntity(organizationId, entityId, entityVersion, type, paging);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#auditUser(java.lang.String, io.apiman.manager.api.beans.search.PagingBean)
*/
@Override
public <T> SearchResultsBean<AuditEntryBean> auditUser(String userId, PagingBean paging)
throws StorageException {
refresh();
return this.delegate.auditUser(userId, paging);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getOrgs(java.util.Set)
*/
@Override
public List<OrganizationSummaryBean> getOrgs(Set<String> orgIds) throws StorageException {
refresh();
return this.delegate.getOrgs(orgIds);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getClientsInOrgs(java.util.Set)
*/
@Override
public List<ClientSummaryBean> getClientsInOrgs(Set<String> orgIds) throws StorageException {
refresh();
return this.delegate.getClientsInOrgs(orgIds);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getClientsInOrg(java.lang.String)
*/
@Override
public List<ClientSummaryBean> getClientsInOrg(String orgId) throws StorageException {
refresh();
return this.delegate.getClientsInOrg(orgId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getClientVersions(java.lang.String, java.lang.String)
*/
@Override
public List<ClientVersionSummaryBean> getClientVersions(String organizationId,
String clientId) throws StorageException {
refresh();
return this.delegate.getClientVersions(organizationId, clientId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getClientContracts(java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public List<ContractSummaryBean> getClientContracts(String organizationId, String clientId,
String version) throws StorageException {
refresh();
return this.delegate.getClientContracts(organizationId, clientId, version);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getApiRegistry(java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public ApiRegistryBean getApiRegistry(String organizationId, String clientId, String version)
throws StorageException {
refresh();
return this.delegate.getApiRegistry(organizationId, clientId, version);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getApisInOrgs(java.util.Set)
*/
@Override
public List<ApiSummaryBean> getApisInOrgs(Set<String> orgIds) throws StorageException {
refresh();
return this.delegate.getApisInOrgs(orgIds);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getApisInOrg(java.lang.String)
*/
@Override
public List<ApiSummaryBean> getApisInOrg(String orgId) throws StorageException {
refresh();
return this.delegate.getApisInOrg(orgId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getApiVersions(java.lang.String, java.lang.String)
*/
@Override
public List<ApiVersionSummaryBean> getApiVersions(String orgId, String apiId)
throws StorageException {
refresh();
return this.delegate.getApiVersions(orgId, apiId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getApiVersionPlans(java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public List<ApiPlanSummaryBean> getApiVersionPlans(String organizationId, String apiId,
String version) throws StorageException {
refresh();
return this.delegate.getApiVersionPlans(organizationId, apiId, version);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getPlansInOrgs(java.util.Set)
*/
@Override
public List<PlanSummaryBean> getPlansInOrgs(Set<String> orgIds) throws StorageException {
refresh();
return this.delegate.getPlansInOrgs(orgIds);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getPlansInOrg(java.lang.String)
*/
@Override
public List<PlanSummaryBean> getPlansInOrg(String orgId) throws StorageException {
refresh();
return this.delegate.getPlansInOrg(orgId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getPlanVersions(java.lang.String, java.lang.String)
*/
@Override
public List<PlanVersionSummaryBean> getPlanVersions(String organizationId, String planId)
throws StorageException {
refresh();
return this.delegate.getPlanVersions(organizationId, planId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getPolicies(java.lang.String, java.lang.String, java.lang.String, io.apiman.manager.api.beans.policies.PolicyType)
*/
@Override
public List<PolicySummaryBean> getPolicies(String organizationId, String entityId, String version,
PolicyType type) throws StorageException {
refresh();
return this.delegate.getPolicies(organizationId, entityId, version, type);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#listPolicyDefinitions()
*/
@Override
public List<PolicyDefinitionSummaryBean> listPolicyDefinitions() throws StorageException {
refresh();
return this.delegate.listPolicyDefinitions();
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getContracts(java.lang.String, java.lang.String, java.lang.String, int, int)
*/
@Override
public List<ContractSummaryBean> getContracts(String organizationId, String apiId,
String version, int page, int pageSize) throws StorageException {
refresh();
return this.delegate.getContracts(organizationId, apiId, version, page, pageSize);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getMaxPolicyOrderIndex(java.lang.String, java.lang.String, java.lang.String, io.apiman.manager.api.beans.policies.PolicyType)
*/
@Override
public int getMaxPolicyOrderIndex(String organizationId, String entityId, String entityVersion,
PolicyType type) throws StorageException {
refresh();
return this.delegate.getMaxPolicyOrderIndex(organizationId, entityId, entityVersion, type);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#listPluginPolicyDefs(java.lang.Long)
*/
@Override
public List<PolicyDefinitionSummaryBean> listPluginPolicyDefs(Long pluginId) throws StorageException {
refresh();
return this.delegate.listPluginPolicyDefs(pluginId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#findUsers(io.apiman.manager.api.beans.search.SearchCriteriaBean)
*/
@Override
public SearchResultsBean<UserBean> findUsers(SearchCriteriaBean criteria) throws StorageException {
refresh();
return this.delegate.findUsers(criteria);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#findRoles(io.apiman.manager.api.beans.search.SearchCriteriaBean)
*/
@Override
public SearchResultsBean<RoleBean> findRoles(SearchCriteriaBean criteria) throws StorageException {
refresh();
return this.delegate.findRoles(criteria);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getUserMemberships(java.lang.String)
*/
@Override
public Set<RoleMembershipBean> getUserMemberships(String userId) throws StorageException {
refresh();
return this.delegate.getUserMemberships(userId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getUserMemberships(java.lang.String, java.lang.String)
*/
@Override
public Set<RoleMembershipBean> getUserMemberships(String userId, String organizationId)
throws StorageException {
refresh();
return this.delegate.getUserMemberships(userId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getOrgMemberships(java.lang.String)
*/
@Override
public Set<RoleMembershipBean> getOrgMemberships(String organizationId) throws StorageException {
refresh();
return this.delegate.getOrgMemberships(organizationId);
}
/**
* @see io.apiman.manager.api.core.IStorageQuery#getPermissions(java.lang.String)
*/
@Override
public Set<PermissionBean> getPermissions(String userId) throws StorageException {
refresh();
return this.delegate.getPermissions(userId);
}
/**
* Force a refresh in elasticsearch so that the result of any indexing operations
* up to this point will be visible to searches.
*/
private void refresh() {
try {
esClient.execute(new Refresh.Builder().refresh(true).addIndex("apiman_manager").build()); //$NON-NLS-1$
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}