# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /home/oleksiys/Projects/glassfish/v3.trunk # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: appserver/web/web-core/src/main/java/org/apache/catalina/connector/OutputBuffer.java --- appserver/web/web-core/src/main/java/org/apache/catalina/connector/OutputBuffer.java Base (BASE) +++ appserver/web/web-core/src/main/java/org/apache/catalina/connector/OutputBuffer.java Locally Modified (Based On LOCAL) @@ -91,7 +91,7 @@ private static final String SET_COOKIE_HEADER = "Set-Cookie"; public static final String DEFAULT_ENCODING = - org.glassfish.grizzly.http.server.Constants.DEFAULT_CHARACTER_ENCODING; + org.glassfish.grizzly.http.util.Constants.DEFAULT_HTTP_CHARACTER_ENCODING; public static final int DEFAULT_BUFFER_SIZE = 8*1024; static final int debug = 0; Index: appserver/web/web-core/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java --- appserver/web/web-core/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java Base (BASE) +++ appserver/web/web-core/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java Locally Modified (Based On LOCAL) @@ -284,7 +284,7 @@ if (queryString != null) { // Use default as a last resort String queryStringEncoding = - Constants.DEFAULT_CHARACTER_ENCODING; + org.glassfish.grizzly.http.util.Constants.DEFAULT_HTTP_CHARACTER_ENCODING; /*String uriEncoding = null; boolean useBodyEncodingForURI = false; Index: appserver/web/web-core/src/main/java/org/apache/catalina/valves/ErrorReportValve.java --- appserver/web/web-core/src/main/java/org/apache/catalina/valves/ErrorReportValve.java Base (BASE) +++ appserver/web/web-core/src/main/java/org/apache/catalina/valves/ErrorReportValve.java Locally Modified (Based On LOCAL) @@ -199,7 +199,7 @@ * locale (see 6412710) */ if (responseCharEnc != null && !responseCharEnc.equals( - org.glassfish.grizzly.http.server.Constants.DEFAULT_CHARACTER_ENCODING)) { + org.glassfish.grizzly.http.util.Constants.DEFAULT_HTTP_CHARACTER_ENCODING)) { sresp.setCharacterEncoding(responseCharEnc); } // END PWC 6254469 Index: nucleus/common/glassfish-api/src/main/java/org/glassfish/api/container/Adapter.java --- nucleus/common/glassfish-api/src/main/java/org/glassfish/api/container/Adapter.java Base (BASE) +++ nucleus/common/glassfish-api/src/main/java/org/glassfish/api/container/Adapter.java Locally Modified (Based On LOCAL) @@ -58,9 +58,9 @@ public interface Adapter { /** - * Get the underlying Grizzly HttpService. + * Get the underlying Grizzly {@link HttpHandler}. * - * @return the underlying Grizzly HttpService. + * @return the underlying Grizzly {@link HttpHandler}. */ public abstract HttpHandler getHttpService(); Index: nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/ContainerMapper.java --- nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/ContainerMapper.java Base (BASE) +++ nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/ContainerMapper.java Locally Modified (Based On LOCAL) @@ -491,6 +491,52 @@ } } + public void register(final Endpoint endpoint) { + if (LOGGER.isLoggable(Level.FINE)) { + LOGGER.log(Level.FINE, "MAPPER({0}) REGISTER endpoint: {1}", endpoint); + } + /* + * In the case of CoyoteAdapter, return, because the context will + * have already been registered with the mapper by the connector's + * MapperListener, in response to a JMX event + */ + if ("org.apache.catalina.connector.CoyoteAdapter".equals( + endpoint.getEndpointHandler().getClass().getName())) { + return; + } + + mapMultipleAdapter = true; +// String ctx = getContextPath(contextRoot); +// String wrapper = getWrapperPath(ctx, contextRoot); + final String contextRoot = endpoint.getContextRoot(); + final Collection vs = endpoint.getVirtualServers(); + + ContextRootInfo c = new ContextRootInfo(new ContextRootInfo.Holder() { + @Override + public HttpHandler getHttpHandler() { + return endpoint.getEndpointHandler(); + } + + @Override + public Object getContainer() { + return endpoint.getContainer(); + } + }); + + for (String host : vs) { + mapper.addContext(host, contextRoot, c, new String[0], null); + /* + if (adapter instanceof StaticResourcesAdapter) { + mapper.addWrapper(host, ctx, wrapper, c); + } + */ + } + } + + public void unregister(final Endpoint endpoint) { + unregister(endpoint.getContextRoot()); + } + private static final class AfterServiceListenerImpl implements AfterServiceListener { @Override Index: nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/Endpoint.java --- nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/Endpoint.java Locally New +++ nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/Endpoint.java Locally New @@ -0,0 +1,141 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ +package com.sun.enterprise.v3.services.impl; + +import java.net.InetAddress; +import java.util.Collection; +import org.glassfish.api.container.Adapter; +import org.glassfish.api.deployment.ApplicationContainer; +import org.glassfish.grizzly.http.server.HttpHandler; + +/** + * Abstraction represents an endpoint, which could be registered on {@link NetworkProxy}. + * + * @author Alexey Stashok + */ +public abstract class Endpoint { + + /** + * Creates Endpoint based on the passed {@link Adapter} descriptor. + * @param {@link Adapter} + * @return {@link Endpoint}, which can be registered on {@link NetworkProxy}. + */ + public static Endpoint createEndpoint(final Adapter adapter) { + return new AdapterEndpoint(adapter); + } + + /** + * @return the {@link InetAddress} on which this endpoint is listening + */ + public abstract InetAddress getAddress(); + + /** + * Returns the listener port for this endpoint + * @return listener port + */ + public abstract int getPort(); + + /** + * Returns the context root for this endpoint + * @return context root + */ + public abstract String getContextRoot(); + + /** + * Get the underlying Grizzly {@link HttpHandler}. + * + * @return the underlying Grizzly {@link HttpHandler}. + */ + public abstract HttpHandler getEndpointHandler(); + + /** + * Returns the virtual servers supported by this endpoint + * @return List<String> the virtual server list supported by the endpoint + */ + public abstract Collection getVirtualServers(); + + /** + * Return the {@link ApplicationContainer} endpoint belongs to. + * @return the {@link ApplicationContainer} endpoint belongs to. + */ + public abstract ApplicationContainer getContainer(); + + + /** + * {@link Adapter} based Endpoint implementation. + */ + private static class AdapterEndpoint extends Endpoint { + private final Adapter adapter; + + public AdapterEndpoint(final Adapter adapter) { + this.adapter = adapter; + } + + @Override + public InetAddress getAddress() { + return adapter.getListenAddress(); + } + + @Override + public int getPort() { + return adapter.getListenPort(); + } + + @Override + public String getContextRoot() { + return adapter.getContextRoot(); + } + + @Override + public HttpHandler getEndpointHandler() { + return adapter.getHttpService(); + } + + @Override + public Collection getVirtualServers() { + return adapter.getVirtualServers(); + } + + @Override + public ApplicationContainer getContainer() { + return null; + } + } +} Index: nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/EndpointMapper.java --- nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/EndpointMapper.java Base (BASE) +++ nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/EndpointMapper.java Locally Modified (Based On LOCAL) @@ -64,8 +64,20 @@ /** - * Removes the contex-root from our list of endpoints. + * Removes the context-root from our list of endpoints. */ public void unregisterEndpoint(String contextRoot, ApplicationContainer app) throws EndpointRegistrationException; + /** + * Registers a new endpoint (proxy implementation) defined by the passed + * {@link Endpoint} object. + * @param endpoint {@link Endpoint} + */ + public void registerEndpoint(Endpoint endpoint) throws EndpointRegistrationException; + + /** + * Removes the {@link Endpoint} from our list of endpoints. + * @param endpoint {@link Endpoint} + */ + public void unregisterEndpoint(Endpoint endpoint) throws EndpointRegistrationException; } Index: nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyProxy.java --- nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyProxy.java Base (BASE) +++ nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyProxy.java Locally Modified (Based On LOCAL) @@ -204,7 +204,27 @@ } } + /** + * {@inheritDoc} + */ @Override + public void registerEndpoint(final Endpoint endpoint) { + final HttpAdapter httpAdapter = grizzlyListener.getAdapter(HttpAdapter.class); + if (httpAdapter != null) { + httpAdapter.getMapper().register(endpoint); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void unregisterEndpoint(final Endpoint endpoint) throws EndpointRegistrationException { + unregisterEndpoint(endpoint.getContextRoot(), endpoint.getContainer()); + } + + + @Override public Future> start() throws IOException { final FutureImpl> future = UnsafeFutureImpl.>create(); final long t1 = System.currentTimeMillis(); Index: nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyService.java --- nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyService.java Base (BASE) +++ nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyService.java Locally Modified (Based On LOCAL) @@ -550,6 +550,22 @@ } /** + * Registers a new endpoint for the given context root at the given port + * number. + */ +// @Override + public void registerEndpoint(final Endpoint endpoint) throws EndpointRegistrationException { + final InetAddress address = endpoint.getAddress(); + final int port = endpoint.getPort(); + + for (NetworkProxy proxy : proxies) { + if (proxy.getPort() == port && proxy.getAddress().equals(address)) { + proxy.registerEndpoint(endpoint); + } + } + } + + /** * Removes the context-root from our list of endpoints. */ @Override @@ -597,11 +613,8 @@ } private void registerAdapter(org.glassfish.api.container.Adapter a) throws EndpointRegistrationException { - int port = a.getListenPort(); - InetAddress address = a.getListenAddress(); - List vs = a.getVirtualServers(); - String cr = a.getContextRoot(); - registerEndpoint(cr, address, port, vs, a.getHttpService(), null); + Endpoint endpoint = Endpoint.createEndpoint(a); + registerEndpoint(endpoint); } // get the ports from the http listeners that are associated with Index: pom.xml --- pom.xml Base (BASE) +++ pom.xml Locally Modified (Based On LOCAL) @@ -109,7 +109,7 @@ 0.2 4.0.2.9 1.1 - 2.1.7 + 2.1.9-SNAPSHOT 1.0-MR1 1.3 1.6.29