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

org.acegisecurity.util.PortMapperImpl Maven / Gradle / Ivy

There is a newer version: 1.0.7
Show newest version
/* Copyright 2004 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.acegisecurity.util;

import org.springframework.util.Assert;

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


/**
 * 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 * @version $Id: PortMapperImpl.java,v 1.4 2005/11/25 04:29:32 benalex Exp $ */ public class PortMapperImpl implements PortMapper { //~ Instance fields ======================================================== private Map httpsPortMappings; //~ Constructors =========================================================== public PortMapperImpl() { httpsPortMappings = new HashMap(); httpsPortMappings.put(new Integer(80), new Integer(443)); httpsPortMappings.put(new Integer(8080), new Integer(8443)); } //~ Methods ================================================================ /** *

* 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"); httpsPortMappings.clear(); Iterator it = newMappings.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Integer httpPort = new Integer((String) entry.getKey()); Integer httpsPort = new Integer((String) 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); } httpsPortMappings.put(httpPort, httpsPort); } if (httpsPortMappings.size() < 1) { throw new IllegalArgumentException("must map at least one port"); } } /** * Returns the translated (Integer -> Integer) version of the original port * mapping specified via setHttpsPortMapping() * * @return DOCUMENT ME! */ public Map getTranslatedPortMappings() { return httpsPortMappings; } public Integer lookupHttpPort(Integer httpsPort) { Iterator iter = httpsPortMappings.keySet().iterator(); while (iter.hasNext()) { Integer httpPort = (Integer) iter.next(); if (httpsPortMappings.get(httpPort).equals(httpsPort)) { return httpPort; } } return null; } public Integer lookupHttpsPort(Integer httpPort) { return (Integer) httpsPortMappings.get(httpPort); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy