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

org.aspectj.util.FuzzyBoolean Maven / Gradle / Ivy

Go to download

The AspectJ matcher can be used for matching pointcuts independently of any AspectJ compilation or weaving steps. Most notably, this can be used by frameworks such as Spring AOP which utilise the @AspectJ pointcut syntax but implement aspect weaving in a way independent of AspectJ, e.g. using dynamic proxies.

There is a newer version: 1.9.22.1
Show newest version
/* *******************************************************************
 * Copyright (c) 1999-2001 Xerox Corporation,
 *               2002 Palo Alto Research Center, Incorporated (PARC).
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * Contributors:
 *     Xerox/PARC     initial implementation
 * ******************************************************************/
package org.aspectj.util;

/**
 * This class implements boolean that include a "maybe"
 */
public abstract class FuzzyBoolean {
    public abstract boolean alwaysTrue();
    public abstract boolean alwaysFalse();
    public abstract boolean maybeTrue();
    public abstract boolean maybeFalse();

    public abstract FuzzyBoolean and(FuzzyBoolean other);
    public abstract FuzzyBoolean or(FuzzyBoolean other);
    public abstract FuzzyBoolean not();

    private static class YesFuzzyBoolean extends FuzzyBoolean {
        public boolean alwaysFalse() {
            return false;
        }

        public boolean alwaysTrue() {
            return true;
        }

        public boolean maybeFalse() {
            return false;
        }

        public boolean maybeTrue() {
            return true;
        }

        public FuzzyBoolean and(FuzzyBoolean other) {
            return other;
        }

        public FuzzyBoolean not() {
            return FuzzyBoolean.NO;
        }

        public FuzzyBoolean or(FuzzyBoolean other) {
            return this;
        }

        public String toString() {
            return "YES";
        }
    }
    private static class NoFuzzyBoolean extends FuzzyBoolean {
        public boolean alwaysFalse() {
            return true;
        }

        public boolean alwaysTrue() {
            return false;
        }


        public boolean maybeFalse() {
            return true;
        }

        public boolean maybeTrue() {
            return false;
        }

        public FuzzyBoolean and(FuzzyBoolean other) {
            return this;
        }

        public FuzzyBoolean not() {
            return FuzzyBoolean.YES;
        }

        public FuzzyBoolean or(FuzzyBoolean other) {
            return other;
        }

        public String toString() {
            return "NO";
        }
    }
    private static class NeverFuzzyBoolean extends FuzzyBoolean {
        public boolean alwaysFalse() {
            return true;
        }

        public boolean alwaysTrue() {
            return false;
        }


        public boolean maybeFalse() {
            return true;
        }

        public boolean maybeTrue() {
            return false;
        }

        public FuzzyBoolean and(FuzzyBoolean other) {
            return this;
        }

        public FuzzyBoolean not() {
            return this;
        }

        public FuzzyBoolean or(FuzzyBoolean other) {
            return this;
        }

        public String toString() {
            return "NEVER";
        }
    }

    private static class MaybeFuzzyBoolean extends FuzzyBoolean {
        public boolean alwaysFalse() {
            return false;
        }

        public boolean alwaysTrue() {
            return false;
        }


        public boolean maybeFalse() {
            return true;
        }

        public boolean maybeTrue() {
            return true;
        }

        public FuzzyBoolean and(FuzzyBoolean other) {
            return other.alwaysFalse() ? other : this;
        }

        public FuzzyBoolean not() {
            return this;
        }

        public FuzzyBoolean or(FuzzyBoolean other) {
            return other.alwaysTrue() ? other : this;
        }

        public String toString() {
            return "MAYBE";
        }
    }

    public static final FuzzyBoolean YES   = new YesFuzzyBoolean();
    public static final FuzzyBoolean NO    = new NoFuzzyBoolean();
    public static final FuzzyBoolean MAYBE = new MaybeFuzzyBoolean();
    public static final FuzzyBoolean NEVER = new NeverFuzzyBoolean();

	public static final FuzzyBoolean fromBoolean(boolean b) {
		return b ? YES : NO;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy