001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.profiler.rules;
018:
019: import java.io.Serializable;
020:
021: import org.apache.jetspeed.request.RequestContext;
022:
023: /**
024: * Resolves rule criterion based on a single criterion and
025: * runtime request context state. Note all resolvers should
026: * look at the criterion's value if they fail to find it
027: *
028: * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
029: * @version $Id: RuleCriterionResolver.java 516448 2007-03-09 16:25:47Z ate $
030: */
031: public interface RuleCriterionResolver extends Serializable {
032: /** resolve the parameter via the request parameter, then value */
033: public static final String REQUEST = "request";
034:
035: /** resolve the parameter via a session attribute */
036: public static final String SESSION = "session";
037:
038: /** look in the request first, then session */
039: public static final String REQUEST_SESSION = "request.session";
040:
041: /** look at hard-coded criterion value only */
042: public final static String HARD_CODED = "hard.coded";
043:
044: /** look for group, then role, then user */
045: public final static String GROUP_ROLE_USER = "group.role.user";
046:
047: /** first check request parameter, then check user in the request context */
048: public final static String USER = "user";
049:
050: /** first check request parameter, then check group in the request context */
051: public final static String GROUP = "group";
052:
053: /** first check request parameter, then check role in the request context */
054: public final static String ROLE = "role";
055:
056: /** first check request parameter, then check media type in the request context */
057: public final static String MEDIATYPE = "mediatype";
058:
059: /** first check request parameter, then check country code in the request context */
060: public final static String COUNTRY = "country";
061:
062: /** first check request parameter, then user agent in the request context */
063: public final static String USER_AGENT = "user.agent";
064:
065: /** first check request parameter, then check language in the request context */
066: public final static String LANGUAGE = "language";
067:
068: public final static String ROLE_FALLBACK = "roles";
069:
070: /** resolve the parameter via the request path, then value */
071: public static final String PATH = "path";
072:
073: /** resolve the parameter via the request path, then value */
074: public static final String PAGE = "page";
075:
076: /** look in the request path first, then session */
077: public static final String PATH_SESSION = "path.session";
078:
079: /** look in user attributes */
080: public static final String USER_ATTRIBUTE = "user.attribute";
081:
082: /** change the current navigation path */
083: public static final String NAVIGATION = "navigation";
084:
085: /**
086: * Resolver the value for a criterion.
087: *
088: * @param context The request context.
089: * @param criterion The criterion being evaluated.
090: * @return The value of the criterion or null if not found.
091: * Returns null to indicate to subclasses to continue processing.
092: */
093: String resolve(RequestContext context, RuleCriterion criterion);
094:
095: /**
096: * Gets the control classification of the resolver.
097: *
098: * @return The control class flag
099: */
100: boolean isControl(RuleCriterion criterion);
101:
102: /**
103: * Gets the navigation classification of the resolver.
104: *
105: * @return The control class flag
106: */
107: boolean isNavigation(RuleCriterion criterion);
108:
109: }
|