001package org.apache.commons.jcs3.auxiliary.remote.util; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import java.util.Set; 023 024import org.apache.commons.jcs3.auxiliary.remote.value.RemoteCacheRequest; 025import org.apache.commons.jcs3.auxiliary.remote.value.RemoteRequestType; 026import org.apache.commons.jcs3.engine.behavior.ICacheElement; 027import org.apache.commons.jcs3.log.Log; 028import org.apache.commons.jcs3.log.LogManager; 029 030/** 031 * This creates request objects. You could write your own client and use the objects from this 032 * factory. 033 */ 034public class RemoteCacheRequestFactory 035{ 036 /** The Logger. */ 037 private static final Log log = LogManager.getLog( RemoteCacheRequestFactory.class ); 038 039 /** 040 * Create generic request 041 * @param cacheName cache name 042 * @param requestType type of request 043 * @param requesterId id of requester 044 * @return the request 045 */ 046 private static <K, V> RemoteCacheRequest<K, V> createRequest(final String cacheName, final RemoteRequestType requestType, final long requesterId) 047 { 048 final RemoteCacheRequest<K, V> request = new RemoteCacheRequest<>(); 049 request.setCacheName( cacheName ); 050 request.setRequestType( requestType ); 051 request.setRequesterId( requesterId ); 052 053 log.debug( "Created: {0}", request ); 054 055 return request; 056 } 057 058 /** 059 * Creates a get Request. 060 * <p> 061 * @param cacheName 062 * @param key 063 * @param requesterId 064 * @return RemoteHttpCacheRequest 065 */ 066 public static <K, V> RemoteCacheRequest<K, V> createGetRequest( final String cacheName, final K key, final long requesterId ) 067 { 068 final RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET, requesterId); 069 request.setKey( key ); 070 071 return request; 072 } 073 074 /** 075 * Creates a getMatching Request. 076 * <p> 077 * @param cacheName 078 * @param pattern 079 * @param requesterId 080 * @return RemoteHttpCacheRequest 081 */ 082 public static <K, V> RemoteCacheRequest<K, V> createGetMatchingRequest( final String cacheName, final String pattern, final long requesterId ) 083 { 084 final RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET_MATCHING, requesterId); 085 request.setPattern( pattern ); 086 087 return request; 088 } 089 090 /** 091 * Creates a getMultiple Request. 092 * <p> 093 * @param cacheName 094 * @param keys 095 * @param requesterId 096 * @return RemoteHttpCacheRequest 097 */ 098 public static <K, V> RemoteCacheRequest<K, V> createGetMultipleRequest( final String cacheName, final Set<K> keys, final long requesterId ) 099 { 100 final RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET_MULTIPLE, requesterId); 101 request.setKeySet(keys); 102 103 return request; 104 } 105 106 /** 107 * Creates a remove Request. 108 * <p> 109 * @param cacheName 110 * @param key 111 * @param requesterId 112 * @return RemoteHttpCacheRequest 113 */ 114 public static <K, V> RemoteCacheRequest<K, V> createRemoveRequest( final String cacheName, final K key, final long requesterId ) 115 { 116 final RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.REMOVE, requesterId); 117 request.setKey( key ); 118 119 return request; 120 } 121 122 /** 123 * Creates a GetKeySet Request. 124 * <p> 125 * @param cacheName 126 * @param requesterId 127 * @return RemoteHttpCacheRequest 128 */ 129 public static RemoteCacheRequest<String, String> createGetKeySetRequest( final String cacheName, final long requesterId ) 130 { 131 final RemoteCacheRequest<String, String> request = createRequest(cacheName, RemoteRequestType.GET_KEYSET, requesterId); 132 request.setKey( cacheName ); 133 134 return request; 135 } 136 137 /** 138 * Creates a removeAll Request. 139 * <p> 140 * @param cacheName 141 * @param requesterId 142 * @return RemoteHttpCacheRequest 143 */ 144 public static <K, V> RemoteCacheRequest<K, V> createRemoveAllRequest( final String cacheName, final long requesterId ) 145 { 146 147 return createRequest(cacheName, RemoteRequestType.REMOVE_ALL, requesterId); 148 } 149 150 /** 151 * Creates a dispose Request. 152 * <p> 153 * @param cacheName 154 * @param requesterId 155 * @return RemoteHttpCacheRequest 156 */ 157 public static <K, V> RemoteCacheRequest<K, V> createDisposeRequest( final String cacheName, final long requesterId ) 158 { 159 160 return createRequest(cacheName, RemoteRequestType.DISPOSE, requesterId); 161 } 162 163 /** 164 * Creates an Update Request. 165 * <p> 166 * @param cacheElement 167 * @param requesterId 168 * @return RemoteHttpCacheRequest 169 */ 170 public static <K, V> RemoteCacheRequest<K, V> createUpdateRequest( final ICacheElement<K, V> cacheElement, final long requesterId ) 171 { 172 final RemoteCacheRequest<K, V> request = createRequest(null, RemoteRequestType.UPDATE, requesterId); 173 if ( cacheElement != null ) 174 { 175 request.setCacheName( cacheElement.getCacheName() ); 176 request.setCacheElement( cacheElement ); 177 request.setKey( cacheElement.getKey() ); 178 } 179 else 180 { 181 log.error( "Can't create a proper update request for a null cache element." ); 182 } 183 184 return request; 185 } 186 187 /** 188 * Creates an alive check Request. 189 * <p> 190 * @param requesterId 191 * @return RemoteHttpCacheRequest 192 */ 193 public static <K, V> RemoteCacheRequest<K, V> createAliveCheckRequest( final long requesterId ) 194 { 195 196 return createRequest(null, RemoteRequestType.ALIVE_CHECK, requesterId); 197 } 198}