All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.runtime.memento.CollectionData Maven / Gradle / Ivy

package org.nakedobjects.runtime.memento;

import org.nakedobjects.metamodel.adapter.ResolveState;
import org.nakedobjects.metamodel.adapter.oid.Oid;
import org.nakedobjects.metamodel.commons.debug.DebugString;
import org.nakedobjects.metamodel.commons.encoding.ByteDecoder;
import org.nakedobjects.metamodel.commons.encoding.ByteEncoder;


class CollectionData extends Data {
    private final static long serialVersionUID = 1L;
    final Data[] elements;

    public CollectionData(final Oid oid, ResolveState resolveState, final String className, final Data[] elements) {
        super(oid, resolveState.name(), className);
        this.elements = elements;
    }

    public CollectionData(final ByteDecoder decoder) {
        super(decoder);

        final int no = decoder.getInt();
        elements = new Data[no];
        for (int i = 0; i < no; i++) {
            elements[i] = (Data) decoder.getObject();
        }
    }

    @Override
    public void debug(final DebugString debug) {
        super.debug(debug);
        for (int i = 0; i < elements.length; i++) {
            debug.appendln("" + i + 1, elements[i]);

            // TODO recurse!
        }
    }

    @Override
    public String toString() {
        final StringBuffer str = new StringBuffer("(");
        for (int i = 0; i < elements.length; i++) {
            str.append((i > 0) ? "," : "");
            str.append(elements[i]);
        }
        str.append(")");
        return str.toString();
    }

    @Override
    public void encode(final ByteEncoder encoder) {
        super.encode(encoder);

        final int no = elements.length;
        encoder.add(no);
        for (int i = 0; i < no; i++) {
            elements[i].encode(encoder);
        }
    }
}
// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2025 Weber Informatics LLC | Privacy Policy