]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph/src/org/simantics/graph/representation/TransferableGraphFileReader.java
Fixed various bugs in TG readers
[simantics/platform.git] / bundles / org.simantics.graph / src / org / simantics / graph / representation / TransferableGraphFileReader.java
index ae1ec711ce676e9d3932cbbbc10485601cbb2f1d..077eb6617a1703f3cbffa913633e2b4c738f95ab 100644 (file)
@@ -161,7 +161,7 @@ final public class TransferableGraphFileReader extends ByteFileReader {
 
                int resourceCount = safeInt();
                
-               List<Object> idcontext = new ArrayList<Object>(); 
+               List<Object> idcontext = new ArrayList<>(); 
                dis = new DataInputStream(in);
                Extensions extensions = (Extensions)Bindings.getSerializerUnchecked(Extensions.class).deserialize((DataInput)dis, idcontext);
                
@@ -174,27 +174,27 @@ final public class TransferableGraphFileReader extends ByteFileReader {
 //             long duration = System.nanoTime() - start;
 //             LOGGER.warn("start in " + 1e-9*duration + "s.");
 //             start = System.nanoTime();
-               
+
                for(int i=0;i<identities;i++) {
                        int rid = safeInt();
                        byte type = bytes[byteIndex++];
                        // External
                        if(type == 1) {
-                               
+
                                int parent = safeInt();
                                int nameLen = getDynamicUInt32();
-                               
+
                                if(byteIndex+nameLen < SIZE) {
                                        ids[i] = new Identity(rid, new External(parent, utf(bytes, byteIndex, byteIndex + nameLen)));
                                        byteIndex += nameLen;
                                } else {
                                        ids[i] = new Identity(rid, new External(parent, utf(safeBytes(nameLen), 0, nameLen)));
                                }
-                               
+
                        } 
                        // Internal
                        else if(type == 3) {
-                               
+
                                int parent = safeInt();
                                int nameLen = getDynamicUInt32();
                                if(byteIndex+nameLen < SIZE) {
@@ -215,6 +215,8 @@ final public class TransferableGraphFileReader extends ByteFileReader {
 
                        } else if(type == 2) {
                                throw new UnsupportedOperationException();
+                       } else {
+                               throw new IllegalStateException();
                        }
 
                }
@@ -257,11 +259,11 @@ final public class TransferableGraphFileReader extends ByteFileReader {
 
                Serializer variantSerializer = Bindings.getSerializerUnchecked(Bindings.VARIANT);
                
-               idcontext = new ArrayList<Object>(); 
                dis = new DataInputStream(in);
                
                for(int i=0;i<valueLength;i++) {
                        int resource = safeInt();
+                       idcontext.clear();
                        Variant value = (Variant)variantSerializer
                                .deserialize((DataInput)dis, idcontext);
                        values[i] = new Value(resource, value);