KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > services > impl > AbsoluteURLBuilderImpl


1 // Copyright 2004, 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.services.impl;
16
17 import org.apache.tapestry.services.AbsoluteURLBuilder;
18 import org.apache.tapestry.web.WebRequest;
19
20 /**
21  * @author Howard M. Lewis Ship
22  * @since 4.0
23  */

24 public class AbsoluteURLBuilderImpl implements AbsoluteURLBuilder
25 {
26     private WebRequest _request;
27
28     public String JavaDoc constructURL(String JavaDoc URI, String JavaDoc scheme, String JavaDoc server, int port)
29     {
30         // Though, really, what does a leading colon with no scheme before it
31
// mean?
32

33         if (URI.indexOf(':') >= 0)
34             return URI;
35
36         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
37
38         // Should check the length here, first.
39

40         if (URI.length()> 2 && URI.substring(0, 2).equals("//"))
41         {
42             buffer.append(scheme);
43             buffer.append(':');
44             buffer.append(URI);
45             return buffer.toString();
46         }
47
48         buffer.append(scheme);
49         buffer.append("://");
50         buffer.append(server);
51
52         if (port > 0)
53         {
54             buffer.append(':');
55             buffer.append(port);
56         }
57
58         if (URI.charAt(0) != '/')
59             buffer.append('/');
60
61         buffer.append(URI);
62
63         return buffer.toString();
64     }
65
66     public String JavaDoc constructURL(String JavaDoc URI)
67     {
68         String JavaDoc scheme = _request.getScheme();
69         String JavaDoc server = _request.getServerName();
70         int port = _request.getServerPort();
71
72         // Keep things simple ... port 80 is accepted as the
73
// standard port for http so it can be ommitted.
74
// Some of the Tomcat code indicates that port 443 is the default
75
// for https, and that needs to be researched.
76

77         if (scheme.equals("http") && port == 80)
78             port = 0;
79
80         return constructURL(URI, scheme, server, port);
81     }
82
83     public void setRequest(WebRequest request)
84     {
85         _request = request;
86     }
87 }
Popular Tags