View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.custom.conversation;
20  
21  import org.apache.myfaces.custom.requestParameterProvider.RequestParameterProvider;
22  
23  /**
24   * adds the required fields (conversationContext) to the request parameters.
25   * 
26   * @author imario@apache.org
27   */
28  public class ConversationRequestParameterProvider implements RequestParameterProvider
29  {
30      private final static String[] REQUEST_PARAMETERS = new String[]
31                 {
32          ConversationManager.CONVERSATION_CONTEXT_PARAM
33                 };
34      
35      public String getFieldValue(String field)
36      {
37          if (UISeparateConversationContext.isInSeparationMode())
38          {
39              return null;
40          }
41          
42          ConversationManager conversationManager = ConversationManager.getInstance();
43          if (conversationManager == null)
44          {
45              throw new IllegalStateException("can find the conversationManager");
46          }
47          if (!conversationManager.hasConversationContext())
48          {
49              return null;
50          }
51          
52          return Long.toString(conversationManager.getConversationContextId().longValue(), Character.MAX_RADIX);
53      }
54  
55      public String[] getFields()
56      {
57          if (UISeparateConversationContext.isInSeparationMode())
58          {
59              return null;
60          }
61  
62          ConversationManager conversationManager = ConversationManager.getInstance();
63          if (conversationManager == null)
64          {
65              throw new IllegalStateException("can find the conversationManager");
66          }
67          if (!conversationManager.hasConversationContext())
68          {
69              return null;
70          }
71          
72          return REQUEST_PARAMETERS; 
73      }
74  }