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

global.namespace.neuron.di.java.CachingStrategy Maven / Gradle / Ivy

/*
 * Copyright © 2016 - 2019 Schlichtherle IT Services
 *
 * 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
 *
 *     https://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 global.namespace.neuron.di.java;

/**
 * Enumerates strategies for caching the return values of synapse methods.
 */
public enum CachingStrategy {

    /**
     * Does not cache the return value of the synapse method.
     * 

* Suppose a synapse method without a {@link Caching} annotation returns a different instance on each call, that is, * it behaves like a factory. * Now if this strategy is applied instead and {@code n} threads each make {@code m} calls to this synapse method, * then exactly {@code n * m} different instances are returned. */ DISABLED { @Override public boolean isEnabled() { return false; } }, /** * Caches the return value of the synapse method so that it's not thread-safe. *

* Suppose a synapse method without a {@link Caching} annotation returns a different instance on each call, that is, * it behaves like a factory. * Now if this strategy is applied instead and {@code n} threads each make {@code m} calls to this synapse method, * then at most {@code n} different instances are returned. */ NOT_THREAD_SAFE, /** * Caches the return value of the synapse method so that it's thread-safe. *

* Suppose a synapse method without a {@link Caching} annotation returns a different instance on each call, that is, * it behaves like a factory. * Now if this strategy is applied instead and {@code n} threads each make {@code m} calls to this synapse method, * then exactly one instance is returned. */ THREAD_SAFE, /** * Caches the return value of the synapse method so that it's thread local. *

* Suppose a synapse method without a {@link Caching} annotation returns a different instance on each call, that is, * it behaves like a factory. * Now if this strategy is applied instead and {@code n} threads each make {@code m} calls to this synapse method, * then exactly {@code n} different instances are returned. */ THREAD_LOCAL; /** * Returns true iff the caching strategy is not {@link #DISABLED}. */ public boolean isEnabled() { return true; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy