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

org.apache.camel.component.jcache.JCacheConfiguration Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.apache.camel.component.jcache;

import java.util.LinkedList;
import java.util.List;
import java.util.Properties;

import javax.cache.Cache;
import javax.cache.CacheManager;
import javax.cache.configuration.Configuration;
import javax.cache.configuration.Factory;
import javax.cache.event.CacheEntryEventFilter;
import javax.cache.expiry.ExpiryPolicy;
import javax.cache.integration.CacheLoader;
import javax.cache.integration.CacheWriter;

import org.apache.camel.CamelContext;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
import org.apache.camel.support.EndpointHelper;

@UriParams
public class JCacheConfiguration {
    @UriParam(label = "common")
    private String cachingProvider;

    @UriParam
    private Configuration cacheConfiguration;

    @UriParam
    private Properties cacheConfigurationProperties;

    @UriParam
    private String configurationUri;

    @UriParam(label = "advanced")
    private Factory cacheLoaderFactory;

    @UriParam(label = "advanced")
    private Factory cacheWriterFactory;

    @UriParam(label = "advanced")
    private Factory expiryPolicyFactory;

    @UriParam
    private boolean readThrough;

    @UriParam
    private boolean writeThrough;

    @UriParam(defaultValue = "true")
    private boolean storeByValue = true;

    @UriParam
    private boolean statisticsEnabled;

    @UriParam
    private boolean managementEnabled;

    @UriParam(label = "consumer", enums = "CREATED,UPDATED,REMOVED,EXPIRED")
    private String filteredEvents;

    @UriParam(label = "consumer,advanced")
    private List eventFilters;

    @UriParam(label = "consumer")
    private boolean oldValueRequired;

    @UriParam(label = "consumer")
    private boolean synchronous;

    @UriParam(label = "producer")
    private String action;

    @UriParam(label = "advanced", defaultValue = "true")
    private boolean createCacheIfNotExists = true;

    @UriParam(label = "advanced")
    private boolean lookupProviders;

    private CamelContext camelContext;
    private String cacheName;

    public JCacheConfiguration() {
        this(null, null);
    }

    public JCacheConfiguration(String cacheName) {
        this(null, cacheName);
    }

    public JCacheConfiguration(CamelContext camelContext, String cacheName) {
        this.camelContext = camelContext;
        this.cacheName = cacheName;
    }

    public CamelContext getCamelContext() {
        return this.camelContext;
    }

    public void setCamelContext(CamelContext camelContext) {
        this.camelContext = camelContext;
    }

    public String getCacheName() {
        return this.cacheName;
    }

    public void setCacheName(String cacheName) {
        this.cacheName = cacheName;
    }

    public ClassLoader getApplicationContextClassLoader() {
        return this.camelContext != null
                ? this.camelContext.getApplicationContextClassLoader()
                : null;
    }

    /**
     * The fully qualified class name of the {@link javax.cache.spi.CachingProvider}
     */
    public String getCachingProvider() {
        return cachingProvider;
    }

    public void setCachingProvider(String cachingProvider) {
        this.cachingProvider = cachingProvider;
    }

    /**
     * A {@link Configuration} for the {@link Cache}
     */
    public Configuration getCacheConfiguration() {
        return cacheConfiguration;
    }

    public void setCacheConfiguration(Configuration cacheConfiguration) {
        this.cacheConfiguration = cacheConfiguration;
    }

    /**
     * The {@link Properties} for the {@link javax.cache.spi.CachingProvider} to create the {@link CacheManager}
     */
    public Properties getCacheConfigurationProperties() {
        return cacheConfigurationProperties;
    }

    public void setCacheConfigurationProperties(Properties cacheConfigurationProperties) {
        this.cacheConfigurationProperties = cacheConfigurationProperties;
    }

    /**
     * An implementation specific URI for the {@link CacheManager}
     */
    public String getConfigurationUri() {
        return configurationUri;
    }

    public void setConfigurationUri(String configurationUri) {
        this.configurationUri = configurationUri;
    }

    /**
     * The {@link CacheLoader} factory
     */
    public Factory getCacheLoaderFactory() {
        return cacheLoaderFactory;
    }

    public void setCacheLoaderFactory(Factory cacheLoaderFactory) {
        this.cacheLoaderFactory = cacheLoaderFactory;
    }

    /**
     * The {@link CacheWriter} factory
     */
    public Factory getCacheWriterFactory() {
        return cacheWriterFactory;
    }

    public void setCacheWriterFactory(Factory cacheWriterFactory) {
        this.cacheWriterFactory = cacheWriterFactory;
    }

    /**
     * The {@link ExpiryPolicy} factory
     */
    public Factory getExpiryPolicyFactory() {
        return expiryPolicyFactory;
    }

    public void setExpiryPolicyFactory(Factory expiryPolicyFactory) {
        this.expiryPolicyFactory = expiryPolicyFactory;
    }

    /**
     * If read-through caching should be used
     */
    public boolean isReadThrough() {
        return readThrough;
    }

    public void setReadThrough(boolean readThrough) {
        this.readThrough = readThrough;
    }

    /**
     * If write-through caching should be used
     */
    public boolean isWriteThrough() {
        return writeThrough;
    }

    public void setWriteThrough(boolean writeThrough) {
        this.writeThrough = writeThrough;
    }

    /**
     * If cache should use store-by-value or store-by-reference semantics
     */
    public boolean isStoreByValue() {
        return storeByValue;
    }

    public void setStoreByValue(boolean storeByValue) {
        this.storeByValue = storeByValue;
    }

    /**
     * Whether statistics gathering is enabled
     */
    public boolean isStatisticsEnabled() {
        return statisticsEnabled;
    }

    public void setStatisticsEnabled(boolean statisticsEnabled) {
        this.statisticsEnabled = statisticsEnabled;
    }

    /**
     * Whether management gathering is enabled
     */
    public boolean isManagementEnabled() {
        return managementEnabled;
    }

    public void setManagementEnabled(boolean managementEnabled) {
        this.managementEnabled = managementEnabled;
    }

    /**
     * Events a consumer should filter (multiple events can be separated by comma). If using filteredEvents option, then
     * eventFilters one will be ignored
     */
    public String getFilteredEvents() {
        return filteredEvents;
    }

    public void setFilteredEvents(String filteredEvents) {
        this.filteredEvents = filteredEvents;
    }

    /**
     * The CacheEntryEventFilter. If using eventFilters option, then filteredEvents one will be ignored
     */
    public List getEventFilters() {
        return eventFilters;
    }

    public void setEventFilters(List eventFilters) {
        if (eventFilters != null) {
            this.eventFilters = new LinkedList<>(eventFilters);
        }
    }

    public void setEventFilters(String eventFilter) {
        this.eventFilters
                = EndpointHelper.resolveReferenceListParameter(camelContext, eventFilter, CacheEntryEventFilter.class);
    }

    /**
     * if the old value is required for events
     */
    public boolean isOldValueRequired() {
        return oldValueRequired;
    }

    public void setOldValueRequired(boolean oldValueRequired) {
        this.oldValueRequired = oldValueRequired;
    }

    /**
     * if the event listener should block the thread causing the event
     */
    public boolean isSynchronous() {
        return synchronous;
    }

    public void setSynchronous(boolean synchronous) {
        this.synchronous = synchronous;
    }

    public String getAction() {
        return action;
    }

    /**
     * To configure using a cache operation by default. If an operation in the message header, then the operation from
     * the header takes precedence.
     */
    public void setAction(String action) {
        this.action = action;
    }

    public boolean isCreateCacheIfNotExists() {
        return createCacheIfNotExists;
    }

    /**
     * Configure if a cache need to be created if it does exist or can't be pre-configured.
     */
    public void setCreateCacheIfNotExists(boolean createCacheIfNotExists) {
        this.createCacheIfNotExists = createCacheIfNotExists;
    }

    public boolean isLookupProviders() {
        return lookupProviders;
    }

    /**
     * Configure if a camel-cache should try to find implementations of jcache api in runtimes like OSGi.
     */
    public void setLookupProviders(boolean lookupProviders) {
        this.lookupProviders = lookupProviders;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy