View Javadoc

1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  package org.apache.http.cookie;
28  
29  import java.util.Locale;
30  
31  import org.apache.http.annotation.Immutable;
32  
33  /**
34   * CookieOrigin class encapsulates details of an origin server that
35   * are relevant when parsing, validating or matching HTTP cookies.
36   *
37   * @since 4.0
38   */
39  @Immutable
40  public final class CookieOrigin {
41  
42      private final String host;
43      private final int port;
44      private final String path;
45      private final boolean secure;
46  
47      public CookieOrigin(final String host, int port, final String path, boolean secure) {
48          super();
49          if (host == null) {
50              throw new IllegalArgumentException(
51                      "Host of origin may not be null");
52          }
53          if (host.trim().length() == 0) {
54              throw new IllegalArgumentException(
55                      "Host of origin may not be blank");
56          }
57          if (port < 0) {
58              throw new IllegalArgumentException("Invalid port: " + port);
59          }
60          if (path == null) {
61              throw new IllegalArgumentException(
62                      "Path of origin may not be null.");
63          }
64          this.host = host.toLowerCase(Locale.ENGLISH);
65          this.port = port;
66          if (path.trim().length() != 0) {
67              this.path = path;
68          } else {
69              this.path = "/";
70          }
71          this.secure = secure;
72      }
73  
74      public String getHost() {
75          return this.host;
76      }
77  
78      public String getPath() {
79          return this.path;
80      }
81  
82      public int getPort() {
83          return this.port;
84      }
85  
86      public boolean isSecure() {
87          return this.secure;
88      }
89  
90      @Override
91      public String toString() {
92          StringBuilder buffer = new StringBuilder();
93          buffer.append('[');
94          if (this.secure) {
95              buffer.append("(secure)");
96          }
97          buffer.append(this.host);
98          buffer.append(':');
99          buffer.append(Integer.toString(this.port));
100         buffer.append(this.path);
101         buffer.append(']');
102         return buffer.toString();
103     }
104 
105 }