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.cocoon.portal;
018:
019: import java.util.List;
020:
021: import org.apache.avalon.framework.component.Component;
022: import org.apache.cocoon.portal.event.Event;
023:
024: /**
025: *
026: * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
027: * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
028: *
029: * @version CVS $Id: LinkService.java 433543 2006-08-22 06:22:54Z crossley $
030: */
031: public interface LinkService extends Component {
032:
033: String ROLE = LinkService.class.getName();
034:
035: String DEFAULT_REQUEST_EVENT_PARAMETER_NAME = "cocoon-portal-event";
036: String DEFAULT_CONVERTABLE_EVENT_PARAMETER_NAME = "javax.portlet.events";
037:
038: static class ParameterDescription {
039: public final String parameters;
040:
041: public ParameterDescription(String parameters) {
042: this .parameters = parameters;
043: }
044: }
045:
046: /**
047: * Get the uri for this coplet containing the additional event
048: * @param event The event to add (null is also allowed for convenience)
049: * @return A URI
050: */
051: String getLinkURI(Event event);
052:
053: /**
054: * Get the uri for this coplet containing the additional event and using a secure
055: * protocol if requested.
056: *
057: * @param event The event to add (null is also allowed for convenience)
058: * @param secure true if a secure protocol is required, false otherwise.
059: * @return A URI
060: */
061: String getLinkURI(Event event, Boolean secure);
062:
063: /**
064: * Get the uri for this coplet containing the additional events.
065: * @param events The events to add: These can either be {@link Event}s or {@link ParameterDescription}s.
066: * @return A URI
067: */
068: String getLinkURI(List events);
069:
070: /**
071: * Get a uri for this coplet containing the additional events. Use a secure
072: * protocol if requested.
073: * @param events The events to add: These can either be {@link Event}s or {@link ParameterDescription}s.
074: * @param secure true if a secure protocol is required, false otherwise.
075: * @return A URI
076: */
077: String getLinkURI(List events, Boolean secure);
078:
079: /**
080: * Add this event to the list of events contained in the uri
081: * @param event Event to add
082: */
083: void addEventToLink(Event event);
084:
085: /**
086: * Add this parameter to every link.
087: * If the link already contains a parameter with this name,
088: * then the link will have both parameters with the same
089: * name, but different values.
090: * @param name The request parameter name
091: * @param value The value for the parameter
092: * @see #addUniqueParameterToLink(String, String)
093: */
094: void addParameterToLink(String name, String value);
095:
096: /**
097: * Add this parameter to every link.
098: * If the link already contains a parameter with this name,
099: * then this old parameter will be removed and replaced by
100: * the new one.
101: * @param name The request parameter name
102: * @param value The value for the parameter
103: * @see #addUniqueParameterToLink(String, String)
104: */
105: void addUniqueParameterToLink(String name, String value);
106:
107: /**
108: * Get a link that simply refreshs the portal
109: * @return A URI
110: */
111: String getRefreshLinkURI();
112:
113: /**
114: * Get a link that simply refreshs the portal
115: * @param secure true if a secure protocol is required, false otherwise.
116: * @return A URI
117: */
118: String getRefreshLinkURI(Boolean secure);
119:
120: /**
121: * Determine whether the current url is using a secure protocol
122: * @return true if the current url is using a secure protocol
123: */
124: boolean isSecure();
125:
126: /**
127: * @param url The url to encode.
128: * @return The enocoded URL.
129: * @see javax.servlet.http.HttpServletResponse#encodeURL(java.lang.String)
130: */
131: String encodeURL(String url);
132: }
|