Skip to content

Commit 3c3d36a

Browse files
committed
Moved serialization core to its own package; added tests for SerializerCore
1 parent a9546bd commit 3c3d36a

File tree

14 files changed

+203
-66
lines changed

14 files changed

+203
-66
lines changed

src/main/java/org/numenta/nupic/Persistable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public interface Persistable extends Serializable {
2525
* reified.
2626
*/
2727
@SuppressWarnings("unchecked")
28-
public default <T> T postDeSerialize() { return (T)this; }
28+
public default <T> T postDeSerialize() { return postDeSerialize((T)this); }
2929
/**
3030
* <em>FOR INTERNAL USE ONLY</em><p>
3131
* Called to implement a full or partial copy of an object
@@ -34,6 +34,6 @@ public interface Persistable extends Serializable {
3434
* @param t the instance of type &lt;T&gt;
3535
* @return a post serialized custom form of T
3636
*/
37-
public default <T> T postSerialize(T t) { return t; }
37+
public default <T> T postDeSerialize(T t) { return t; }
3838

3939
}

src/main/java/org/numenta/nupic/network/Layer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ public Layer<T> postDeSerialize() {
323323

324324
FunctionFactory old = factory;
325325
factory = new FunctionFactory();
326-
factory.inference = old.inference.postSerialize(old.inference);
326+
factory.inference = old.inference.postDeSerialize(old.inference);
327327

328328
checkPointOpObservers = new ArrayList<>();
329329

src/main/java/org/numenta/nupic/network/ManualInput.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public ManualInput() {}
102102
*/
103103
@SuppressWarnings("unchecked")
104104
@Override
105-
public <T> T postSerialize(T manualInput) {
105+
public <T> T postDeSerialize(T manualInput) {
106106
ManualInput mi = (ManualInput)manualInput;
107107

108108
ManualInput retVal = new ManualInput();
@@ -517,7 +517,7 @@ public boolean equals(Object obj) {
517517
return true;
518518
if(obj == null)
519519
return false;
520-
if(getClass() != obj.getClass())
520+
if(!Inference.class.isAssignableFrom(obj.getClass()))
521521
return false;
522522
ManualInput other = (ManualInput)obj;
523523
if(activeCells == null) {

src/main/java/org/numenta/nupic/network/Persistence.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import org.joda.time.format.DateTimeFormat;
4040
import org.joda.time.format.DateTimeFormatter;
4141
import org.numenta.nupic.Persistable;
42+
import org.numenta.nupic.serialize.SerialConfig;
43+
import org.numenta.nupic.serialize.SerializerCore;
4244
import org.slf4j.Logger;
4345
import org.slf4j.LoggerFactory;
4446

src/main/java/org/numenta/nupic/network/PersistenceAPI.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import java.util.List;
2727

2828
import org.numenta.nupic.Persistable;
29+
import org.numenta.nupic.serialize.SerialConfig;
30+
import org.numenta.nupic.serialize.SerializerCore;
2931

3032
/**
3133
* <p>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.numenta.nupic.serialize;
2+
3+
import java.io.IOException;
4+
import java.io.InputStream;
5+
6+
import org.numenta.nupic.Persistable;
7+
import org.nustaq.serialization.FSTObjectInput;
8+
9+
public class HTMObjectInput extends FSTObjectInput {
10+
public HTMObjectInput(InputStream in) throws IOException {
11+
super(in);
12+
}
13+
14+
@SuppressWarnings("rawtypes")
15+
public Object readObject(Class...classes) throws Exception {
16+
try {
17+
Object obj = super.readObject(classes);
18+
19+
if(obj instanceof Persistable) {
20+
((Persistable) obj).postDeSerialize();
21+
}
22+
return obj;
23+
}catch(Exception e) {
24+
throw new IOException(e);
25+
}
26+
}
27+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.numenta.nupic.serialize;
2+
3+
import java.io.IOException;
4+
import java.io.OutputStream;
5+
6+
import org.numenta.nupic.Persistable;
7+
import org.nustaq.serialization.FSTObjectOutput;
8+
9+
public class HTMObjectOutput extends FSTObjectOutput {
10+
public HTMObjectOutput(OutputStream out) {
11+
super(out);
12+
}
13+
14+
@SuppressWarnings("rawtypes")
15+
public void writeObject(Object t, Class... c) throws IOException {
16+
if(t instanceof Persistable) {
17+
((Persistable) t).preSerialize();
18+
}
19+
20+
super.writeObject(t, c);
21+
}
22+
}

src/main/java/org/numenta/nupic/network/SerialConfig.java renamed to src/main/java/org/numenta/nupic/serialize/SerialConfig.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* http://numenta.org/licenses/
2020
* ---------------------------------------------------------------------
2121
*/
22-
package org.numenta.nupic.network;
22+
package org.numenta.nupic.serialize;
2323

2424

2525
import java.io.File;
@@ -42,6 +42,12 @@
4242
import org.numenta.nupic.model.ProximalDendrite;
4343
import org.numenta.nupic.model.Segment;
4444
import org.numenta.nupic.model.Synapse;
45+
import org.numenta.nupic.network.Inference;
46+
import org.numenta.nupic.network.Layer;
47+
import org.numenta.nupic.network.ManualInput;
48+
import org.numenta.nupic.network.Network;
49+
import org.numenta.nupic.network.NetworkTest;
50+
import org.numenta.nupic.network.Region;
4551
import org.numenta.nupic.util.NamedTuple;
4652
import org.numenta.nupic.util.Tuple;
4753
import org.slf4j.Logger;

src/main/java/org/numenta/nupic/network/SerializerCore.java renamed to src/main/java/org/numenta/nupic/serialize/SerializerCore.java

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,16 @@
1919
* http://numenta.org/licenses/
2020
* ---------------------------------------------------------------------
2121
*/
22-
package org.numenta.nupic.network;
22+
package org.numenta.nupic.serialize;
2323

2424
import java.io.IOException;
2525
import java.io.InputStream;
2626
import java.io.ObjectInputStream;
2727
import java.io.OutputStream;
2828

2929
import org.numenta.nupic.Persistable;
30+
import org.numenta.nupic.network.PersistenceAPI;
3031
import org.nustaq.serialization.FSTConfiguration;
31-
import org.nustaq.serialization.FSTObjectInput;
32-
import org.nustaq.serialization.FSTObjectOutput;
3332
import org.slf4j.Logger;
3433
import org.slf4j.LoggerFactory;
3534

@@ -147,38 +146,11 @@ public <T extends Persistable> T deSerialize(byte[] bytes) {
147146
return retVal.postDeSerialize();
148147
}
149148

150-
public static class HTMObjectInput extends FSTObjectInput {
151-
public HTMObjectInput(InputStream in) throws IOException {
152-
super(in);
153-
}
154-
155-
@SuppressWarnings("rawtypes")
156-
public Object readObject(Class...classes) throws Exception {
157-
try {
158-
Object obj = super.readObject(classes);
159-
160-
if(obj instanceof Persistable) {
161-
((Persistable) obj).postDeSerialize();
162-
}
163-
return obj;
164-
}catch(Exception e) {
165-
throw new IOException(e);
166-
}
167-
}
168-
}
169-
170-
public static class HTMObjectOutput extends FSTObjectOutput {
171-
public HTMObjectOutput(OutputStream out) {
172-
super(out);
173-
}
174-
175-
@SuppressWarnings("rawtypes")
176-
public void writeObject(Object t, Class... c) throws IOException {
177-
if(t instanceof Persistable) {
178-
((Persistable) t).preSerialize();
179-
}
180-
181-
super.writeObject(t, c);
182-
}
149+
/**
150+
* For testing only!
151+
* @return
152+
*/
153+
FSTConfiguration getSerialScheme() {
154+
return fastSerialConfig;
183155
}
184156
}

src/test/java/org/numenta/nupic/network/PersistenceAPITest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import org.numenta.nupic.network.sensor.Sensor;
8181
import org.numenta.nupic.network.sensor.SensorParams;
8282
import org.numenta.nupic.network.sensor.SensorParams.Keys;
83+
import org.numenta.nupic.serialize.SerialConfig;
8384
import org.numenta.nupic.util.ArrayUtils;
8485
import org.numenta.nupic.util.Condition;
8586
import org.numenta.nupic.util.FastRandom;

0 commit comments

Comments
 (0)