/*
* Copyright Ericsson AB 2011-2014. All Rights Reserved.
*
* The contents of this file are subject to the Lesser GNU Public License,
* (the "License"), either version 2.1 of the License, or
* (at your option) any later version.; you may not use this file except in
* compliance with the License. You should have received a copy of the
* License along with this software. If not, it can be
* retrieved online at https://www.gnu.org/licenses/lgpl.html. Moreover
* it could also be requested from Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
* WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
* EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
* OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND,
* EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
* LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE,
* YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
*
* IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
* WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
* REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
* DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
* DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY
* (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
* INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE
* OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
* HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
*/
package com.ericsson.deviceaccess.spi.impl.genericdevice;
import com.ericsson.common.util.serialization.Format;
import com.ericsson.common.util.serialization.SerializationException;
import com.ericsson.common.util.serialization.SerializationUtil;
import com.ericsson.deviceaccess.api.genericdevice.GDAccessPermission.Type;
import com.ericsson.deviceaccess.api.genericdevice.GDActionContext;
import com.ericsson.deviceaccess.api.genericdevice.GDActionResult;
import com.ericsson.deviceaccess.api.genericdevice.GDException;
import com.ericsson.deviceaccess.api.genericdevice.GDProperties;
import com.ericsson.deviceaccess.spi.genericdevice.GDAccessSecurity;
public class GDActionContextImpl extends GDActionContext.Stub implements GDActionContext {
private String requester;
private String requesterContact;
private String owner;
private String device;
private String service;
private String action;
private boolean isAuthorized = true;
private boolean isFirstTime = true;
private boolean isExecuted = false;
private boolean isFailed = false;
private long messageThreadId = this.hashCode();
private final GDProperties arguments;
private GDActionResult result;
/**
* @param arguments
* @param result
*/
public GDActionContextImpl(GDProperties arguments, GDProperties result) {
super();
this.arguments = arguments;
this.result = new GDActionResultImpl(result);
}
@Override
public void setRequester(String requester) {
this.requester = requester;
}
@Override
public String getRequester() {
return requester;
}
@Override
public void setDevice(String device) {
this.device = device;
}
@Override
public String getDevice() {
return device;
}
@Override
public void setService(String service) {
this.service = service;
}
@Override
public String getService() {
return service;
}
@Override
public void setOwner(String owner) {
this.owner = owner;
}
@Override
public String getOwner() {
return owner;
}
@Override
public void setAction(String action) {
this.action = action;
}
@Override
public String getAction() {
return action;
}
@Override
public void setAuthorized(boolean isAuthorized) {
this.isAuthorized = isAuthorized;
}
@Override
public boolean isAuthorized() {
if (getRequester() != null && getRequester().equals(getOwner())) {
return true;
} else {
return this.isAuthorized;
}
}
@Override
public void setFirstTime(boolean isFirstTime) {
this.isFirstTime = isFirstTime;
}
@Override
public boolean isFirstTime() {
return isFirstTime;
}
public long getMessageThreadId() {
return messageThreadId;
}
public void setMessageThreadId(long id) {
this.messageThreadId = id;
}
public void setExecuted(boolean isExecuted) {
this.isExecuted = isExecuted;
}
public boolean isExecuted() {
return isExecuted;
}
public void setFailed(boolean isFailed) {
this.isFailed = isFailed;
}
public boolean isFailed() {
return isFailed;
}
@Override
public GDActionResult getResult() {
return result;
}
@Override
public void setRequesterContact(String requesterContact) {
this.requesterContact = requesterContact;
}
@Override
public String getRequesterContact() {
return requesterContact;
}
@Override
public GDProperties getArguments() {
return arguments;
}
public void setResult(GDActionResult result) {
this.result = result;
}
@Override
public String serialize(Format format) throws GDException {
GDAccessSecurity.checkPermission(getClass(), Type.GET);
try {
return SerializationUtil.execute(format, mapper -> mapper.writeValueAsString(this));
} catch (SerializationException ex) {
throw new GDException(ex.getMessage(), ex);
}
}
}