KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > portlet > PageResolverContribution


1 // Copyright 2005 The Apache Software Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15 package org.apache.tapestry.portlet;
16
17 import javax.portlet.PortletRequest;
18
19 import org.apache.hivemind.impl.BaseLocatable;
20 import org.apache.hivemind.util.Defense;
21 import org.apache.hivemind.util.ToStringBuilder;
22
23 /**
24  * Contribution used for resolving requests to named pages.
25  *
26  * @author Howard M. Lewis Ship
27  * @since 4.0
28  */

29 public class PageResolverContribution extends BaseLocatable implements Comparable JavaDoc
30 {
31     private String JavaDoc _portletMode;
32
33     private String JavaDoc _windowState;
34
35     private String JavaDoc _mimeType;
36
37     private String JavaDoc _pageName;
38
39     public void setMimeType(String JavaDoc mimeType)
40     {
41         _mimeType = mimeType;
42     }
43
44     public void setPageName(String JavaDoc pageName)
45     {
46         _pageName = pageName;
47     }
48
49     public String JavaDoc getPageName()
50     {
51         return _pageName;
52     }
53
54     public void setPortletMode(String JavaDoc portletMode)
55     {
56         _portletMode = portletMode;
57     }
58
59     public void setWindowState(String JavaDoc windowState)
60     {
61         _windowState = windowState;
62     }
63
64     int sortScore()
65     {
66         int result = 0;
67
68         if (_mimeType != null)
69             result += 4;
70
71         if (_portletMode != null)
72             result += 2;
73
74         if (_windowState != null)
75             result += 1;
76
77         return result;
78     }
79
80     public String JavaDoc toString()
81     {
82         ToStringBuilder builder = new ToStringBuilder(this);
83
84         builder.append("mimeType", _mimeType);
85         builder.append("portletMode", _portletMode);
86         builder.append("windowState", _windowState);
87         builder.append("pageName", _pageName);
88
89         return builder.toString();
90     }
91
92     public int compareTo(Object JavaDoc o)
93     {
94         int thisScore = sortScore();
95         int otherScore = ((PageResolverContribution) o).sortScore();
96
97         // End result: sorted descending by specificity
98

99         return otherScore - thisScore;
100     }
101
102     public boolean match(PortletRequest request)
103     {
104         Defense.notNull(request, "request");
105
106         if (_mimeType != null && !_mimeType.equals(request.getResponseContentType()))
107             return false;
108
109         if (_portletMode != null && !_portletMode.equals(request.getPortletMode().toString()))
110             return false;
111
112         if (_windowState != null && !_windowState.equals(request.getWindowState().toString()))
113             return false;
114
115         return true;
116     }
117 }
118
Popular Tags