/*
 * Copyright 2004-2014 ICEsoft Technologies Canada Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an "AS
 * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

package org.icefaces.impl.application;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.HashMap;
import java.util.LinkedList;

public class WindowState implements Externalizable {
    public HashMap windowScopedMaps = new HashMap();
    public LinkedList disposedWindowScopedMaps = new LinkedList();
    public long expirationPeriod;

    public WindowState() {
        //used by Java de-serialisation
    }

    WindowState(long expirationPeriod) {
        this.expirationPeriod = expirationPeriod;
    }

    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(windowScopedMaps);
        out.writeObject(disposedWindowScopedMaps);
        out.writeLong(expirationPeriod);
    }

    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        windowScopedMaps = (HashMap) in.readObject();
        disposedWindowScopedMaps = (LinkedList) in.readObject();
        expirationPeriod = in.readLong();
    }
}
