org.coos.actorframe.RoleSpec Maven / Gradle / Ivy
/**
* COOS - Connected Objects Operating System (www.connectedobjects.org).
*
* Copyright (C) 2009 Telenor ASA and Tellu AS. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This library 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
* (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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
* You may also contact one of the following for additional information:
* Telenor ASA, Snaroyveien 30, N-1331 Fornebu, Norway (www.telenor.no)
* Tellu AS, Hagalokkveien 13, N-1383 Asker, Norway (www.tellu.no)
*/
package org.coos.actorframe;
import org.coos.util.serialize.StringHelper;
import org.coos.util.serialize.AFClassLoader;
import org.coos.util.serialize.AFSerializer;
import java.io.*;
/**
*
* @author Geir Melby, Tellu AS
*/
public class RoleSpec implements AFSerializer {
private String instance;
private String type;
private String roleClass;
private boolean persistent;
public RoleSpec() {
persistent = true;
}
public RoleSpec(String instance, String type, String roleClass) {
this.instance = instance;
this.roleClass = roleClass;
this.type = type;
}
public String getInstance() {
return instance;
}
public void setInstance(String instance) {
this.instance = instance;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getRoleClass() {
return roleClass;
}
public void setRoleClass(String roleClass) {
this.roleClass = roleClass;
}
public boolean isPersistent() {
return persistent;
}
public void setPersistent(boolean persistent) {
this.persistent = persistent;
}
public String toString() {
return "instance: " + instance + " type: " + type + " persistentSession: " + persistent + " class: "
+ roleClass; // To change body of overridden methods use File |
// Settings | File Templates.
}
/**
* This function must implement the serialization of the object.
*
* @return a byte array with the objects data
* @throws java.io.IOException
*/
public byte[] serialize() throws IOException {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(bout);
dout.write(StringHelper.persist(instance));
dout.write(StringHelper.persist(type));
dout.write(StringHelper.persist(roleClass));
dout.writeBoolean(persistent);
dout.flush();
return bout.toByteArray();
}
/**
* Use this function for resurrection of the object
*
* @param data
* The serialized data containing the object data
* @throws java.io.IOException
*/
public ByteArrayInputStream deSerialize(byte[] data, AFClassLoader cl) throws IOException {
ByteArrayInputStream bin = new ByteArrayInputStream(data);
DataInputStream din = new DataInputStream(bin);
instance = StringHelper.resurrect(din);
type = StringHelper.resurrect(din);
roleClass = StringHelper.resurrect(din);
persistent = din.readBoolean();
return bin;
}
}