blob: 1de2457dd0da6e63fb52742f63df3e00c6d3038b [file] [log] [blame]
package org.apache.commons.jcs3.auxiliary.remote.util;
/*
* 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.
*/
import java.util.Set;
import org.apache.commons.jcs3.auxiliary.remote.value.RemoteCacheRequest;
import org.apache.commons.jcs3.auxiliary.remote.value.RemoteRequestType;
import org.apache.commons.jcs3.engine.behavior.ICacheElement;
import org.apache.commons.jcs3.log.Log;
import org.apache.commons.jcs3.log.LogManager;
/**
* This creates request objects. You could write your own client and use the objects from this
* factory.
*/
public class RemoteCacheRequestFactory
{
/** The Logger. */
private static final Log log = LogManager.getLog( RemoteCacheRequestFactory.class );
/**
* Create generic request
* @param cacheName cache name
* @param requestType type of request
* @param requesterId id of requester
* @return the request
*/
private static <K, V> RemoteCacheRequest<K, V> createRequest(String cacheName, RemoteRequestType requestType, long requesterId)
{
RemoteCacheRequest<K, V> request = new RemoteCacheRequest<>();
request.setCacheName( cacheName );
request.setRequestType( requestType );
request.setRequesterId( requesterId );
log.debug( "Created: {0}", request );
return request;
}
/**
* Creates a get Request.
* <p>
* @param cacheName
* @param key
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createGetRequest( String cacheName, K key, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET, requesterId);
request.setKey( key );
return request;
}
/**
* Creates a getMatching Request.
* <p>
* @param cacheName
* @param pattern
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createGetMatchingRequest( String cacheName, String pattern, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET_MATCHING, requesterId);
request.setPattern( pattern );
return request;
}
/**
* Creates a getMultiple Request.
* <p>
* @param cacheName
* @param keys
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createGetMultipleRequest( String cacheName, Set<K> keys, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET_MULTIPLE, requesterId);
request.setKeySet(keys);
return request;
}
/**
* Creates a remove Request.
* <p>
* @param cacheName
* @param key
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createRemoveRequest( String cacheName, K key, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.REMOVE, requesterId);
request.setKey( key );
return request;
}
/**
* Creates a GetKeySet Request.
* <p>
* @param cacheName
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static RemoteCacheRequest<String, String> createGetKeySetRequest( String cacheName, long requesterId )
{
RemoteCacheRequest<String, String> request = createRequest(cacheName, RemoteRequestType.GET_KEYSET, requesterId);
request.setKey( cacheName );
return request;
}
/**
* Creates a removeAll Request.
* <p>
* @param cacheName
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createRemoveAllRequest( String cacheName, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.REMOVE_ALL, requesterId);
return request;
}
/**
* Creates a dispose Request.
* <p>
* @param cacheName
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createDisposeRequest( String cacheName, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.DISPOSE, requesterId);
return request;
}
/**
* Creates an Update Request.
* <p>
* @param cacheElement
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createUpdateRequest( ICacheElement<K, V> cacheElement, long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(null, RemoteRequestType.UPDATE, requesterId);
if ( cacheElement != null )
{
request.setCacheName( cacheElement.getCacheName() );
request.setCacheElement( cacheElement );
request.setKey( cacheElement.getKey() );
}
else
{
log.error( "Can't create a proper update request for a null cache element." );
}
return request;
}
/**
* Creates an alive check Request.
* <p>
* @param requesterId
* @return RemoteHttpCacheRequest
*/
public static <K, V> RemoteCacheRequest<K, V> createAliveCheckRequest( long requesterId )
{
RemoteCacheRequest<K, V> request = createRequest(null, RemoteRequestType.ALIVE_CHECK, requesterId);
return request;
}
}