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 */
017package org.apache.juneau.http.header;
018
019
020import java.util.function.*;
021
022/**
023 * Represents an HTTP <c>Origin</c> header.
024 *
025 * <p>
026 * Initiates a request for cross-origin resource sharing.
027 *
028 * <h5 class='section'>See Also:</h5><ul>
029 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/NextGenRestClient">Next-Generation REST Client</a>
030 * </ul>
031 *
032 * @since 9.2.1
033 */
034public class Origin extends HttpStringHeader {
035
036   /** The header name */
037   public static final String NAME = "Origin";
038
039   /**
040    * Constructor with an eager value.
041    *
042    * @param value The header value. May be <jk>null</jk>.
043    */
044   public Origin(String value) {
045      super(NAME, value);
046   }
047
048   /**
049    * Constructor with a lazy value supplier.
050    *
051    * @param valueSupplier Supplier for the header value. Must not be <jk>null</jk>.
052    */
053   public Origin(Supplier<String> valueSupplier) {
054      super(NAME, valueSupplier);
055   }
056
057   /**
058    * Static factory method with an eager value.
059    *
060    * @param value The header value. May be <jk>null</jk>.
061    * @return A new instance. Never <jk>null</jk>.
062    */
063   public static Origin of(String value) {
064      return new Origin(value);
065   }
066
067   /**
068    * Static factory method with a lazy value supplier.
069    *
070    * @param valueSupplier Supplier for the header value. Must not be <jk>null</jk>.
071    * @return A new instance. Never <jk>null</jk>.
072    */
073   public static Origin of(Supplier<String> valueSupplier) {
074      return new Origin(valueSupplier);
075   }
076}