m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-11-03 16:39:58 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-11-03 16:39:58 +0100
commit362310157373eef80f49ea6023b1666b3883f4b1 (patch)
treed8a62dae2dd8d86b07586db2fdc191eb3a8ae92d /src/main/java/pl
parent9812ed30bd15324d2a337c8d838786a93f9df69f (diff)
Implement ZMI serialization
Diffstat (limited to 'src/main/java/pl')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/Attribute.java5
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueBoolean.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueContact.java7
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDouble.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDuration.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueInt.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueList.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSet.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSimple.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueString.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueTime.java4
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ZMI.java20
12 files changed, 68 insertions, 0 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/Attribute.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/Attribute.java
index 46ffab3..aa0cb64 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/Attribute.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/Attribute.java
@@ -48,6 +48,11 @@ public class Attribute {
this.name = name;
}
+ /* Kryo needs a no-args constructor */
+ private Attribute() {
+ this.name = "";
+ }
+
/**
* Indicates whether an <code>attribute</code> represents a query. This is true if and only if the attribute's name starts with an ampersand.
*
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueBoolean.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueBoolean.java
index 57078c2..6ad3500 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueBoolean.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueBoolean.java
@@ -40,6 +40,10 @@ public class ValueBoolean extends ValueSimple<Boolean> {
super(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueBoolean() {
+ }
+
@Override
public Type getType() {
return TypePrimitive.BOOLEAN;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueContact.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueContact.java
index 670a025..c554777 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueContact.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueContact.java
@@ -25,6 +25,7 @@
package pl.edu.mimuw.cloudatlas.model;
import java.net.InetAddress;
+import java.net.UnknownHostException;
import pl.edu.mimuw.cloudatlas.model.Value;
import pl.edu.mimuw.cloudatlas.model.ValueContact;
@@ -50,6 +51,12 @@ public class ValueContact extends Value {
this.address = address;
}
+ /* Kryo needs a no-args constructor */
+ private ValueContact() throws UnknownHostException {
+ name = new PathName("");
+ address = InetAddress.getByAddress(new byte[] {0, 0, 0, 0});
+ }
+
@Override
public Value getDefaultValue() {
return new ValueContact(null, null);
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDouble.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDouble.java
index 920a8ef..7d331c9 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDouble.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDouble.java
@@ -40,6 +40,10 @@ public class ValueDouble extends ValueSimple<Double> {
super(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueDouble() {
+ }
+
@Override
public Type getType() {
return TypePrimitive.DOUBLE;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDuration.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDuration.java
index 444ce78..7022bbd 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDuration.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueDuration.java
@@ -55,6 +55,10 @@ public class ValueDuration extends ValueSimple<Long> {
super(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueDuration() {
+ }
+
@Override
public Type getType() {
return TypePrimitive.DURATION;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueInt.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueInt.java
index 8811d57..c5aa1c6 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueInt.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueInt.java
@@ -41,6 +41,10 @@ public class ValueInt extends ValueSimple<Long> {
super(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueInt() {
+ }
+
@Override
public Type getType() {
return TypePrimitive.INTEGER;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueList.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueList.java
index 76d59ff..8414cc4 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueList.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueList.java
@@ -60,6 +60,10 @@ public class ValueList extends ValueSimple<List<Value>> implements List<Value> {
setValue(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueList() {
+ }
+
/**
* Creates an empty list.
*
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSet.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSet.java
index 9843cd4..91524af 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSet.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSet.java
@@ -59,6 +59,10 @@ public class ValueSet extends ValueSimple<Set<Value>> implements Set<Value> {
setValue(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueSet() {
+ }
+
/**
* Creates an empty set.
*
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSimple.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSimple.java
index 803510f..a320e43 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSimple.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueSimple.java
@@ -43,6 +43,10 @@ abstract class ValueSimple<T> extends Value {
setValue(value);
}
+ /* Kryo needs a no-args constructor */
+ protected ValueSimple() {
+ }
+
/**
* Returns a hash code value for this object. This is a hash code of underlying wrapped object.
*
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueString.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueString.java
index 314c602..20a083f 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueString.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueString.java
@@ -47,6 +47,10 @@ public class ValueString extends ValueSimple<String> {
super(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueString() {
+ }
+
@Override
public Type getType() {
return TypePrimitive.STRING;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueTime.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueTime.java
index 8dd04fc..0b9a843 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueTime.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueTime.java
@@ -49,6 +49,10 @@ public class ValueTime extends ValueSimple<Long> {
super(value);
}
+ /* Kryo needs a no-args constructor */
+ private ValueTime() {
+ }
+
@Override
public Type getType() {
return TypePrimitive.TIME;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ZMI.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ZMI.java
index a6b78da..5a560ae 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ZMI.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ZMI.java
@@ -24,12 +24,18 @@
package pl.edu.mimuw.cloudatlas.model;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+
/**
* A zone management information object. This object is a single node in a zone hierarchy. It stores zone attributes as well as
* references to its father and sons in the tree.
@@ -163,4 +169,18 @@ public class ZMI implements Cloneable {
public String toString() {
return attributes.toString();
}
+
+ public static ZMI deserialize(InputStream in) {
+ Kryo kryo = new Kryo();
+ Input kryoInput = new Input(in);
+ ZMI zmi = kryo.readObject(kryoInput, ZMI.class);
+ return zmi;
+ }
+
+ public void serialize(OutputStream out) {
+ Kryo kryo = new Kryo();
+ Output kryoOut = new Output(out);
+ kryo.writeObject(kryoOut, this);
+ kryoOut.flush();
+ }
}