All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.grizzly.servlet.Registration Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.grizzly.servlet;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;

/**
 * Base class for all complex registrable components within a web application.
 *
 * @since 2.2
 */
public abstract class Registration {

    protected String name;
    protected String className;
    protected Map initParameters;
    protected final WebappContext ctx;

    // ------------------------------------------------------------ Constructors

    protected Registration(final WebappContext ctx, final String name, final String className) {
        this.ctx = ctx;
        this.name = name;
        this.className = className;
        initParameters = new LinkedHashMap<>(4, 1.0f);
    }

    // ---------------------------------------------------------- Public Methods

    /**
     * Gets the name of the Servlet or Filter that is represented by this Registration.
     *
     * @return the name of the Servlet or Filter that is represented by this Registration
     */
    public String getName() {
        return name;
    }

    /**
     * Gets the fully qualified class name of the Servlet or Filter that is represented by this Registration.
     *
     * @return the fully qualified class name of the Servlet or Filter that is represented by this Registration, or null if
     * this Registration is preliminary
     */
    public String getClassName() {
        return className;
    }

    /**
     * Sets the initialization parameter with the given name and value on the Servlet or Filter that is represented by this
     * Registration.
     *
     * @param name the initialization parameter name
     * @param value the initialization parameter value
     *
     * @return true if the update was successful, i.e., an initialization parameter with the given name did not already
     * exist for the Servlet or Filter represented by this Registration, and false otherwise
     *
     * @throws IllegalStateException if the WebappContext from which this Registration was obtained has already been
     * initialized
     * @throws IllegalArgumentException if the given name or value is null
     */
    public boolean setInitParameter(String name, String value) {
        if (ctx.deployed) {
            throw new IllegalStateException("WebappContext has already been deployed");
        }
        if (name == null) {
            throw new IllegalArgumentException("'name' cannot be null");
        }
        if (value == null) {
            throw new IllegalArgumentException("'value' cannot be null");
        }
        if (!initParameters.containsKey(name)) {
            initParameters.put(name, value);
            return true;
        }
        return false;
    }

    /**
     * Gets the value of the initialization parameter with the given name that will be used to initialize the Servlet or
     * Filter represented by this Registration object.
     *
     * @param name the name of the initialization parameter whose value is requested
     *
     * @return the value of the initialization parameter with the given name, or null if no initialization
     * parameter with the given name exists
     */
    public String getInitParameter(String name) {
        return name == null ? null : initParameters.get(name);
    }

    /**
     * Sets the given initialization parameters on the Servlet or Filter that is represented by this Registration.
     *
     * 

* The given map of initialization parameters is processed by-value, i.e., for each initialization parameter * contained in the map, this method calls {@link #setInitParameter(String,String)}. If that method would return false * for any of the initialization parameters in the given map, no updates will be performed, and false will be returned. * Likewise, if the map contains an initialization parameter with a null name or value, no updates will be * performed, and an IllegalArgumentException will be thrown. * * @param initParameters the initialization parameters * * @return the (possibly empty) Set of initialization parameter names that are in conflict * * @throws IllegalStateException if the WebappContext from which this Registration was obtained has already been * initialized * @throws IllegalArgumentException if the given map contains an initialization parameter with a null name or * value */ public Set setInitParameters(Map initParameters) { if (ctx.deployed) { throw new IllegalStateException("WebappContext has already been deployed"); } if (initParameters == null) { return Collections.emptySet(); } final Set conflicts = new LinkedHashSet<>(4, 1.0f); for (final Map.Entry entry : initParameters.entrySet()) { if (!setInitParameter(entry.getKey(), entry.getValue())) { conflicts.add(entry.getKey()); } } return conflicts; } /** * Gets an immutable (and possibly empty) Map containing the currently available initialization parameters that will be * used to initialize the Servlet or Filter represented by this Registration object. * * @return Map containing the currently available initialization parameters that will be used to initialize the Servlet * or Filter represented by this Registration object */ public Map getInitParameters() { return Collections.unmodifiableMap(initParameters); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof Registration)) { return false; } Registration that = (Registration) o; if (className != null ? !className.equals(that.className) : that.className != null) { return false; } if (ctx != null ? !ctx.equals(that.ctx) : that.ctx != null) { return false; } if (name != null ? !name.equals(that.name) : that.name != null) { return false; } return true; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (className != null ? className.hashCode() : 0); result = 31 * result + (ctx != null ? ctx.hashCode() : 0); return result; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy