com.hazelcast.cache.impl.CacheService Maven / Gradle / Ivy
/*
* Copyright (c) 2008-2015, Hazelcast, Inc. All Rights Reserved.
*
* 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 com.hazelcast.cache.impl;
import com.hazelcast.cache.impl.event.CacheWanEventPublisher;
import com.hazelcast.cache.impl.operation.CacheReplicationOperation;
import com.hazelcast.spi.Operation;
import com.hazelcast.spi.PartitionReplicationEvent;
/**
* Cache Service is the main access point of JCache implementation.
*
* This service is responsible for:
*
* - Creating and/or accessing the named {@link com.hazelcast.cache.impl.CacheRecordStore}.
* - Creating/Deleting the cache configuration of the named {@link com.hazelcast.cache.ICache}.
* - Registering/Deregistering of cache listeners.
* - Publish/dispatch cache events.
* - Enabling/Disabling statistic and management.
* - Data migration commit/rollback through {@link com.hazelcast.spi.MigrationAwareService}.
*
*
* WARNING:This service is an optionally registered service which is enabled when {@link javax.cache.Caching}
* class is found on the classpath.
*
* If registered, it will provide all the above cache operations for all partitions of the node which it
* is registered on.
*
* Distributed Cache Name is used for providing a unique name to a cache object to overcome cache manager
* scoping which depends on URI and class loader parameters. It's a simple concatenation of CacheNamePrefix and
* cache name where CacheNamePrefix is calculated by each cache manager
* using {@link AbstractHazelcastCacheManager#cacheNamePrefix()}.
*
*/
public class CacheService extends AbstractCacheService {
@Override protected CachePartitionSegment newPartitionSegment(int partitionId) {
return new CachePartitionSegment(this, partitionId);
}
@Override
protected ICacheRecordStore createNewRecordStore(String name, int partitionId) {
return new CacheRecordStore(name, partitionId, nodeEngine, this);
}
@Override
public Operation prepareReplicationOperation(PartitionReplicationEvent event) {
CachePartitionSegment segment = segments[event.getPartitionId()];
CacheReplicationOperation op = new CacheReplicationOperation(segment, event.getReplicaIndex());
return op.isEmpty() ? null : op;
}
@Override
public String toString() {
return "CacheService[" + SERVICE_NAME + ']';
}
@Override
public boolean isWanReplicationEnabled(String cacheName) {
return false;
}
@Override
public CacheWanEventPublisher getCacheWanEventPublisher() {
throw new UnsupportedOperationException("Wan replication is not supported");
}
}