001 // Copyright 2010, 2011 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry5.internal.services;
016
017 import org.apache.tapestry5.Link;
018
019 /**
020 * Identifies how a {@link Link} should handle security.
021 *
022 * @since 5.2.2
023 */
024 public enum LinkSecurity
025 {
026 /** The request was insecure, but the targeted page was secure, so the URI should be absolute and secure. */
027 FORCE_SECURE,
028
029 /** The request was was secure but the targeted page is not, so the URI should be absolute and insecure. */
030 FORCE_INSECURE,
031
032 /**
033 * The request is insecure, which matches the targeted page security, so there's no explicit need for an absolute
034 * URI.
035 */
036 INSECURE,
037
038 /**
039 * The request is secure, which matches the targeted page security, so there's no explicit need for an absolute
040 * URI.
041 */
042 SECURE;
043
044 /** Promotes to either {@link #FORCE_SECURE} or {@link #FORCE_INSECURE}. */
045 public LinkSecurity promote()
046 {
047 switch (this)
048 {
049 case SECURE:
050 case FORCE_SECURE:
051 return FORCE_SECURE;
052
053 default:
054 return FORCE_INSECURE;
055 }
056 }
057
058 /** Does this value indicate forcing an absolute URI (one that includes scheme and hostname)? */
059 public boolean isAbsolute()
060 {
061 return this == FORCE_SECURE || this == FORCE_INSECURE;
062 }
063 }