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

org.springframework.security.web.PortMapperImpl Maven / Gradle / Ivy

There is a newer version: 6.2.4
Show newest version
/*
 * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.security.web;

import java.util.HashMap;
import java.util.Map;

import org.springframework.util.Assert;

/**
 * Concrete implementation of {@link PortMapper} that obtains HTTP:HTTPS pairs from the
 * application context.
 * 

* By default the implementation will assume 80:443 and 8080:8443 are HTTP:HTTPS pairs * respectively. If different pairs are required, use {@link #setPortMappings(Map)}. * * @author Ben Alex * @author colin sampaleanu */ public class PortMapperImpl implements PortMapper { // ~ Instance fields // ================================================================================================ private final Map httpsPortMappings; // ~ Constructors // =================================================================================================== public PortMapperImpl() { this.httpsPortMappings = new HashMap<>(); this.httpsPortMappings.put(Integer.valueOf(80), Integer.valueOf(443)); this.httpsPortMappings.put(Integer.valueOf(8080), Integer.valueOf(8443)); } // ~ Methods // ======================================================================================================== /** * Returns the translated (Integer -> Integer) version of the original port mapping * specified via setHttpsPortMapping() */ public Map getTranslatedPortMappings() { return this.httpsPortMappings; } public Integer lookupHttpPort(Integer httpsPort) { for (Integer httpPort : this.httpsPortMappings.keySet()) { if (this.httpsPortMappings.get(httpPort).equals(httpsPort)) { return httpPort; } } return null; } public Integer lookupHttpsPort(Integer httpPort) { return this.httpsPortMappings.get(httpPort); } /** * Set to override the default HTTP port to HTTPS port mappings of 80:443, and * 8080:8443. In a Spring XML ApplicationContext, a definition would look something * like this: * *

	 *  <property name="portMappings">
	 *      <map>
	 *          <entry key="80"><value>443</value></entry>
	 *          <entry key="8080"><value>8443</value></entry>
	 *      </map>
	 * </property>
	 * 
* * @param newMappings A Map consisting of String keys and String values, where for * each entry the key is the string representation of an integer HTTP port number, and * the value is the string representation of the corresponding integer HTTPS port * number. * * @throws IllegalArgumentException if input map does not consist of String keys and * values, each representing an integer port number in the range 1-65535 for that * mapping. */ public void setPortMappings(Map newMappings) { Assert.notNull(newMappings, "A valid list of HTTPS port mappings must be provided"); this.httpsPortMappings.clear(); for (Map.Entry entry : newMappings.entrySet()) { Integer httpPort = Integer.valueOf(entry.getKey()); Integer httpsPort = Integer.valueOf(entry.getValue()); if ((httpPort.intValue() < 1) || (httpPort.intValue() > 65535) || (httpsPort.intValue() < 1) || (httpsPort.intValue() > 65535)) { throw new IllegalArgumentException( "one or both ports out of legal range: " + httpPort + ", " + httpsPort); } this.httpsPortMappings.put(httpPort, httpsPort); } if (this.httpsPortMappings.size() < 1) { throw new IllegalArgumentException("must map at least one port"); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy