View Javadoc
1   package org.apache.commons.jcs3.auxiliary.remote.util;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.Set;
23  
24  import org.apache.commons.jcs3.auxiliary.remote.value.RemoteCacheRequest;
25  import org.apache.commons.jcs3.auxiliary.remote.value.RemoteRequestType;
26  import org.apache.commons.jcs3.engine.behavior.ICacheElement;
27  import org.apache.commons.jcs3.log.Log;
28  import org.apache.commons.jcs3.log.LogManager;
29  
30  /**
31   * This creates request objects. You could write your own client and use the objects from this
32   * factory.
33   */
34  public class RemoteCacheRequestFactory
35  {
36      /** The Logger. */
37      private static final Log log = LogManager.getLog( RemoteCacheRequestFactory.class );
38  
39      /**
40       * Create generic request
41       * @param cacheName cache name
42       * @param requestType type of request
43       * @param requesterId id of requester
44       * @return the request
45       */
46      private static <K, V> RemoteCacheRequest<K, V> createRequest(final String cacheName, final RemoteRequestType requestType, final long requesterId)
47      {
48          final RemoteCacheRequest<K, V> request = new RemoteCacheRequest<>();
49          request.setCacheName( cacheName );
50          request.setRequestType( requestType );
51          request.setRequesterId( requesterId );
52  
53          log.debug( "Created: {0}", request );
54  
55          return request;
56      }
57  
58      /**
59       * Creates a get Request.
60       * <p>
61       * @param cacheName
62       * @param key
63       * @param requesterId
64       * @return RemoteHttpCacheRequest
65       */
66      public static <K, V> RemoteCacheRequest<K, V> createGetRequest( final String cacheName, final K key, final long requesterId )
67      {
68          final RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET, requesterId);
69          request.setKey( key );
70  
71          return request;
72      }
73  
74      /**
75       * Creates a getMatching Request.
76       * <p>
77       * @param cacheName
78       * @param pattern
79       * @param requesterId
80       * @return RemoteHttpCacheRequest
81       */
82      public static <K, V> RemoteCacheRequest<K, V> createGetMatchingRequest( final String cacheName, final String pattern, final long requesterId )
83      {
84          final RemoteCacheRequest<K, V> request = createRequest(cacheName, RemoteRequestType.GET_MATCHING, requesterId);
85          request.setPattern( pattern );
86  
87          return request;
88      }
89  
90      /**
91       * Creates a getMultiple Request.
92       * <p>
93       * @param cacheName
94       * @param keys
95       * @param requesterId
96       * @return RemoteHttpCacheRequest
97       */
98      public static <K, V> RemoteCacheRequest<K, V> createGetMultipleRequest( final String cacheName, final Set<K> keys, final long requesterId )
99      {
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 }