/*
* Copyright (C) 2005 - 2014 Jaspersoft Corporation. All rights reserved.
* http://www.jaspersoft.com.
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.roles;
import com.jaspersoft.jasperserver.dto.authority.ClientRole;
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
import com.jaspersoft.jasperserver.jaxrs.client.core.Callback;
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
import com.jaspersoft.jasperserver.jaxrs.client.core.RequestExecution;
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
import com.jaspersoft.jasperserver.jaxrs.client.core.ThreadPoolUtil;
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
import java.util.ArrayList;
public class SingleRoleRequestAdapter extends AbstractAdapter {
private final ArrayList<String> roleUri = new ArrayList<String>();
public SingleRoleRequestAdapter(SessionStorage sessionStorage, String organizationId, String roleName) {
super(sessionStorage);
if (organizationId != null) {
roleUri.add("organizations");
roleUri.add(organizationId);
roleUri.add("roles");
roleUri.add(roleName);
} else {
roleUri.add("roles");
roleUri.add(roleName);
}
}
public OperationResult<ClientRole> get() {
return buildRequest().get();
}
public <R> RequestExecution asyncGet(final Callback<OperationResult<ClientRole>, R> callback) {
final JerseyRequest<ClientRole> request = buildRequest();
RequestExecution task = new RequestExecution(new Runnable() {
@Override
public void run() {
callback.execute(request.get());
}
});
ThreadPoolUtil.runAsynchronously(task);
return task;
}
public OperationResult<ClientRole> createOrUpdate(ClientRole user) {
return buildRequest().put(user);
}
public <R> RequestExecution asyncCreateOrUpdate(final ClientRole user, final Callback<OperationResult<ClientRole>, R> callback) {
final JerseyRequest<ClientRole> request = buildRequest();
RequestExecution task = new RequestExecution(new Runnable() {
@Override
public void run() {
callback.execute(request.put(user));
}
});
ThreadPoolUtil.runAsynchronously(task);
return task;
}
public OperationResult<ClientRole> delete() {
return buildRequest().delete();
}
public <R> RequestExecution asyncDelete(final Callback<OperationResult<ClientRole>, R> callback) {
final JerseyRequest<ClientRole> request = buildRequest();
RequestExecution task = new RequestExecution(new Runnable() {
@Override
public void run() {
callback.execute(request.delete());
}
});
ThreadPoolUtil.runAsynchronously(task);
return task;
}
private JerseyRequest<ClientRole> buildRequest() {
return JerseyRequest.buildRequest(sessionStorage, ClientRole.class, roleUri.toArray(new String[roleUri.size()]), new DefaultErrorHandler());
}
}