/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.policy.Policy
 *  org.springframework.context.ApplicationEvent
 */
package com.l7tech.server.event;

import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.Policy;
import org.springframework.context.ApplicationEvent;

public abstract class PolicyCacheEvent
extends ApplicationEvent {
    private final Policy policy;
    static final long serialVersionUID = -6822791927764024498L;

    public Policy getPolicy() {
        return this.policy;
    }

    private PolicyCacheEvent(Object object, Policy policy) {
        super(object);
        this.policy = policy;
    }

    public static class Reset
    extends PolicyCacheEvent {
        static final long serialVersionUID = -3117955541872448408L;

        public Reset(Object object) {
            super(object, null);
        }
    }

    public static class Started
    extends PolicyCacheEvent {
        static final long serialVersionUID = -6929803723654742758L;

        public Started(Object object) {
            super(object, null);
        }
    }

    public static class Invalid
    extends PolicyCacheEvent {
        private final Goid policyId;
        private final Exception exception;
        static final long serialVersionUID = -8001784004408754966L;

        public Invalid(Object object, Goid goid, Exception exception) {
            super(object, null);
            this.policyId = goid;
            this.exception = exception;
        }

        public Goid getPolicyId() {
            return this.policyId;
        }

        public Exception getException() {
            return this.exception;
        }
    }

    public static class Updated
    extends PolicyCacheEvent {
        static final long serialVersionUID = -8653115275541950755L;

        public Updated(Object object, Policy policy) {
            super(object, policy);
        }
    }

    public static class Deleted
    extends PolicyCacheEvent {
        static final long serialVersionUID = 2029895278532743555L;

        public Deleted(Object object, Policy policy) {
            super(object, policy);
        }
    }
}

