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.commons.util; 20 21 /** 22 * Represents the type of request currently in the ExternalContext. 23 * All servlet requests will be of the SERVLET requestType whereas 24 * all of the other RequestTypes will be portlet type requests. There 25 * are a number of convenience methods on the RequestType enumeration 26 * which can be used to determine the capabilities of the current request. 27 */ 28 public enum RequestType 29 { 30 /** 31 * The type for all servlet requests. SERVLET request types are 32 * both client requests and response writable. 33 */ 34 SERVLET(true, true, false), 35 36 /** 37 * The type for a portlet RenderRequest. RENDER request types are 38 * for portlets and are response writable but are NOT client 39 * requests. 40 */ 41 RENDER(false, true, true), 42 43 /** 44 * The type for a portlet ActionRequest. ACTION request types are 45 * for portlets and are client requests but are NOT response 46 * writable. 47 */ 48 ACTION(true, false, true), 49 50 /** 51 * The type for a portlet ResourceRequest. RESOURCE request types 52 * are for portlets and are both client requests and response 53 * writable. RESOURCE request types will only be returned in a 54 * Portlet 2.0 portlet container. 55 */ 56 RESOURCE(true, true, true), 57 58 /** 59 * The type for a portlet EventRequest. EVENT request types 60 * are for portlets and are neither client requests nor response 61 * writable. EVENT request types will only be returned in a 62 * Portlet 2.0 portlet container. 63 */ 64 EVENT(false, false, true); 65 66 private boolean _client; 67 private boolean _writable; 68 private boolean _portlet; 69 70 RequestType(boolean client, boolean writable, boolean portlet) 71 { 72 _client = client; 73 _writable = writable; 74 _portlet = portlet; 75 } 76 77 /** 78 * Returns <code>true</code> if this request was a direct 79 * result of a call from the client. This implies that 80 * the current application is the "owner" of the current 81 * request and that it has access to the inputStream, can 82 * get and set character encodings, etc. Currently all 83 * SERVLET, ACTION, and RESOURCE RequestTypes are client 84 * requests. 85 * 86 * @return <code>true</code> if the current request is a 87 * client data type request and <code>false</code> 88 * if it is not. 89 */ 90 public boolean isRequestFromClient() 91 { 92 return _client; 93 } 94 95 /** 96 * Returns <code>true</code> if the response for this 97 * RequestType is intended to produce output to the client. 98 * Currently the SERVLET, RENDER, and RESOURCE request are 99 * response writable. 100 * 101 * @return <code>true</code> if the current request is 102 * intended to produce output and <code>false</code> 103 * if it is not. 104 */ 105 public boolean isResponseWritable() 106 { 107 return _writable; 108 } 109 110 /** 111 * Returns <code>true</code> if the response for this 112 * RequestType originated from a JSR-168 or JSR-286 113 * portlet container. Currently RENDER, ACTION, 114 * RESOURCE, and EVENT RequestTypes are all portlet 115 * requests. 116 * 117 * @return <code>true</code> if the current request 118 * originated inside of a JSR-168 or JSR-286 119 * Portlet Container or <code>false</code> if 120 * it did not. 121 */ 122 public boolean isPortlet() 123 { 124 return _portlet; 125 } 126 }