blob: 78cf529bbcf4a5ff84926f67e45cd9919f4866b2 [file] [log] [blame]
/*
*
* Apache Geronimo JCache Spec 1.0
*
* Copyright (C) 2003 - 2014 The Apache Software Foundation
*
* 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 javax.cache.configuration;
import javax.cache.event.CacheEntryEventFilter;
import javax.cache.event.CacheEntryListener;
public class MutableCacheEntryListenerConfiguration<K, V> implements CacheEntryListenerConfiguration<K, V> {
public static final long serialVersionUID = 201403L;
private Factory<CacheEntryListener<? super K, ? super V>> listenerFactory;
private Factory<CacheEntryEventFilter<? super K, ? super V>> filterFactory;
private boolean isOldValueRequired;
private boolean isSynchronous;
public MutableCacheEntryListenerConfiguration(final CacheEntryListenerConfiguration<K, V> configuration) {
this.listenerFactory = configuration.getCacheEntryListenerFactory();
this.filterFactory = configuration.getCacheEntryEventFilterFactory();
this.isOldValueRequired = configuration.isOldValueRequired();
this.isSynchronous = configuration.isSynchronous();
}
public MutableCacheEntryListenerConfiguration(final Factory<? extends CacheEntryListener<? super K, ? super V>> listenerFactory,
final Factory<? extends CacheEntryEventFilter<? super K, ? super V>> filterFactory,
final boolean isOldValueRequired,
final boolean isSynchronous) {
this.listenerFactory = (Factory<CacheEntryListener<? super K, ? super V>>) listenerFactory;
this.filterFactory = (Factory<CacheEntryEventFilter<? super K, ? super V>>) filterFactory;
this.isOldValueRequired = isOldValueRequired;
this.isSynchronous = isSynchronous;
}
public Factory<CacheEntryListener<? super K, ? super V>> getCacheEntryListenerFactory() {
return listenerFactory;
}
public MutableCacheEntryListenerConfiguration<K, V> setCacheEntryListenerFactory(final Factory<? extends CacheEntryListener<? super K, ? super V>> listenerFactory) {
this.listenerFactory = (Factory<CacheEntryListener<? super K, ? super V>>) listenerFactory;
return this;
}
public Factory<CacheEntryEventFilter<? super K, ? super V>> getCacheEntryEventFilterFactory() {
return filterFactory;
}
public MutableCacheEntryListenerConfiguration<K, V> setCacheEntryEventFilterFactory(final Factory<? extends CacheEntryEventFilter<? super K, ? super V>> filterFactory) {
this.filterFactory = (Factory<CacheEntryEventFilter<? super K, ? super V>>) filterFactory;
return this;
}
public boolean isOldValueRequired() {
return isOldValueRequired;
}
public MutableCacheEntryListenerConfiguration<K, V> setOldValueRequired(final boolean isOldValueRequired) {
this.isOldValueRequired = isOldValueRequired;
return this;
}
public boolean isSynchronous() {
return isSynchronous;
}
public MutableCacheEntryListenerConfiguration<K, V> setSynchronous(final boolean isSynchronous) {
this.isSynchronous = isSynchronous;
return this;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((filterFactory == null) ? 0 : filterFactory.hashCode());
result = prime * result + (isOldValueRequired ? 1231 : 1237);
result = prime * result + (isSynchronous ? 1231 : 1237);
result = prime * result + ((listenerFactory == null) ? 0 : listenerFactory.hashCode());
return result;
}
@Override
public boolean equals(final Object object) {
if (this == object) {
return true;
}
if (object == null) {
return false;
}
if (!(object instanceof MutableCacheEntryListenerConfiguration)) {
return false;
}
final MutableCacheEntryListenerConfiguration<?, ?> other = (MutableCacheEntryListenerConfiguration<?, ?>) object;
if (filterFactory == null) {
if (other.filterFactory != null) {
return false;
}
} else if (!filterFactory.equals(other.filterFactory)) {
return false;
}
if (isOldValueRequired != other.isOldValueRequired) {
return false;
}
if (isSynchronous != other.isSynchronous) {
return false;
}
if (listenerFactory == null) {
if (other.listenerFactory != null) {
return false;
}
} else if (!listenerFactory.equals(other.listenerFactory)) {
return false;
}
return true;
}
}