cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cohei...@apache.org
Subject [3/6] cxf git commit: Fixing merge
Date Fri, 02 Dec 2016 14:11:18 GMT
Fixing merge


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/86a2293d
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/86a2293d
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/86a2293d

Branch: refs/heads/3.1.x-fixes
Commit: 86a2293dd6cfb7c6b71468f23ae1faf2a66b6ba4
Parents: 30c2ad0
Author: Colm O hEigeartaigh <coheigea@apache.org>
Authored: Fri Dec 2 14:10:18 2016 +0000
Committer: Colm O hEigeartaigh <coheigea@apache.org>
Committed: Fri Dec 2 14:10:18 2016 +0000

----------------------------------------------------------------------
 .../http_undertow/UndertowHTTPServerEngine.java | 541 -------------------
 .../atmosphere/DefaultProtocolInterceptor.java  |   6 +-
 2 files changed, 1 insertion(+), 546 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/86a2293d/rt/transports/http-undertow/src/main/java/org/apache/cxf/transport/http_undertow/UndertowHTTPServerEngine.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-undertow/src/main/java/org/apache/cxf/transport/http_undertow/UndertowHTTPServerEngine.java
b/rt/transports/http-undertow/src/main/java/org/apache/cxf/transport/http_undertow/UndertowHTTPServerEngine.java
deleted file mode 100644
index ad3a6a6..0000000
--- a/rt/transports/http-undertow/src/main/java/org/apache/cxf/transport/http_undertow/UndertowHTTPServerEngine.java
+++ /dev/null
@@ -1,541 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.cxf.transport.http_undertow;
-
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.ConcurrentMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.X509KeyManager;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.i18n.Message;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.util.PropertyUtils;
-import org.apache.cxf.common.util.SystemPropertyAction;
-import org.apache.cxf.configuration.jsse.TLSServerParameters;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.transport.HttpUriMapper;
-import org.apache.cxf.transport.https.AliasedX509ExtendedKeyManager;
-import org.xnio.Options;
-import org.xnio.Sequence;
-import org.xnio.SslClientAuthMode;
-
-import io.undertow.Handlers;
-import io.undertow.Undertow;
-import io.undertow.Undertow.Builder;
-import io.undertow.UndertowOptions;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.handlers.PathHandler;
-import io.undertow.servlet.api.DeploymentInfo;
-import io.undertow.servlet.api.DeploymentManager;
-import io.undertow.servlet.api.ServletContainer;
-import io.undertow.servlet.api.ServletInfo;
-import io.undertow.servlet.core.ServletContainerImpl;
-import io.undertow.servlet.handlers.ServletPathMatches;
-import io.undertow.util.CopyOnWriteMap;
-
-
-public class UndertowHTTPServerEngine implements ServerEngine {
-    
-    public static final String DO_NOT_CHECK_URL_PROP = "org.apache.cxf.transports.http_undertow.DontCheckUrl";
-    
-    private static final Logger LOG = LogUtils.getL7dLogger(UndertowHTTPServerEngine.class);
-    
-    /**
-     * This is the network port for which this engine is allocated.
-     */
-    private int port;
-    
-    /**
-     * This is the network address for which this engine is allocated.
-     */
-    private String host;
-
-    /**
-     * This field holds the protocol for which this engine is 
-     * enabled, i.e. "http" or "https".
-     */
-    private String protocol = "http"; 
-    
-    private int servantCount;
-    
-    private Undertow server;
-    
-    /**
-     * This field holds the TLS ServerParameters that are programatically
-     * configured. The tlsServerParamers (due to JAXB) holds the struct
-     * placed by SpringConfig.
-     */
-    private TLSServerParameters tlsServerParameters;
-    
-    private SSLContext sslContext;
-    
-    /**
-     * This boolean signfies that SpringConfig is over. finalizeConfig
-     * has been called.
-     */
-    private boolean configFinalized;
-    
-    private ConcurrentMap<String, UndertowHTTPHandler> registedPaths = 
-        new CopyOnWriteMap<String, UndertowHTTPHandler>();
-
-    private boolean continuationsEnabled = true;
-
-    private ServletContext servletContext;
-    
-    private PathHandler path;
-    
-    private int maxIdleTime = 200000;
-    
-    private org.apache.cxf.transport.http_undertow.ThreadingParameters threadingParameters;
-    
-    private List<CXFUndertowHttpHandler> handlers;
-
-    public UndertowHTTPServerEngine(String host, int port) {
-        this.host = host;
-        this.port = port;
-    }
-
-    public UndertowHTTPServerEngine() {
-
-    }
-
-    @Override
-    public void addServant(URL url, UndertowHTTPHandler handler) {
-        if (shouldCheckUrl(handler.getBus())) {
-            checkRegistedContext(url);
-        }
-                
-        if (server == null) {
-            try {
-                // create a new undertow server instance if there is no server there
-                String contextName = HttpUriMapper.getContextName(url.getPath());
-                servletContext = buildServletContext(contextName);
-                handler.setServletContext(servletContext);
-                server = createServer(url, handler);
-                server.start();
-            } catch (Exception e) {
-                LOG.log(Level.SEVERE, "START_UP_SERVER_FAILED_MSG", new Object[] {e.getMessage(),
port});
-                //problem starting server
-                try {                    
-                    server.stop();
-                } catch (Exception ex) {
-                    //ignore - probably wasn't fully started anyway
-                }
-                server = null;
-                throw new Fault(new Message("START_UP_SERVER_FAILED_MSG", LOG, e.getMessage(),
port), e);
-            }
-            
-        } else {
-            String contextName = HttpUriMapper.getContextName(url.getPath());
-            try {
-                servletContext = buildServletContext(contextName);
-            } catch (ServletException e) {
-                throw new Fault(new Message("START_UP_SERVER_FAILED_MSG", LOG, e.getMessage(),
port), e);
-            }
-            handler.setServletContext(servletContext);
-            
-            if (handler.isContextMatchExact()) {
-                path.addExactPath(url.getPath(), handler);
-            } else {
-                path.addPrefixPath(url.getPath(), handler);
-            }
-            
-        }
-        
-        final String smap = HttpUriMapper.getResourceBase(url.getPath());
-        handler.setName(smap);
-        registedPaths.put(url.getPath(), handler);
-        servantCount = servantCount + 1;
-    }
-    
-    
-    private ServletContext buildServletContext(String contextName) 
-        throws ServletException {
-        ServletContainer servletContainer = new ServletContainerImpl();
-        DeploymentInfo deploymentInfo = new DeploymentInfo();
-        deploymentInfo.setClassLoader(Thread.currentThread().getContextClassLoader());
-        deploymentInfo.setDeploymentName("cxf-undertow");
-        deploymentInfo.setContextPath(contextName);
-        ServletInfo asyncServlet = new ServletInfo(ServletPathMatches.DEFAULT_SERVLET_NAME,
CxfUndertowServlet.class);
-        deploymentInfo.addServlet(asyncServlet);
-        servletContainer.addDeployment(deploymentInfo);
-        DeploymentManager deploymentManager = servletContainer.getDeployment(deploymentInfo.getDeploymentName());
-        deploymentManager.deploy();
-        deploymentManager.start();
-        return deploymentManager.getDeployment().getServletContext();
-    }
-    
-    private Undertow createServer(URL url, UndertowHTTPHandler undertowHTTPHandler) throws
Exception {
-        Undertow.Builder result = Undertow.builder();
-        result.setServerOption(UndertowOptions.IDLE_TIMEOUT, getMaxIdleTime());
-        if (tlsServerParameters != null) { 
-            if (this.sslContext == null) {
-                this.sslContext = createSSLContext();
-            }
-            result = result.addHttpsListener(getPort(), getHost(), this.sslContext);
-        } else {
-            result = result.addHttpListener(getPort(), getHost());
-        }
-        path = Handlers.path(new NotFoundHandler());
-        
-        if (url.getPath().length() == 0) {
-            result = result.setHandler(Handlers.trace(undertowHTTPHandler));
-        } else {
-            if (undertowHTTPHandler.isContextMatchExact()) {
-                path.addExactPath(url.getPath(), undertowHTTPHandler);
-            } else {
-                path.addPrefixPath(url.getPath(), undertowHTTPHandler);
-            }
-            
-            result = result.setHandler(wrapHandler(path));
-        }
-        
-        result = decorateUndertowSocketConnection(result);
-        result = disableSSLv3(result);
-        result = configureThreads(result);
-        return result.build();
-    }
-    
-    private Builder configureThreads(Builder builder) {
-        if (this.threadingParameters != null) {
-            if (this.threadingParameters.isWorkerIOThreadsSet()) {
-                builder = builder.setWorkerOption(Options.WORKER_IO_THREADS, 
-                              this.threadingParameters.getWorkerIOThreads());
-            }
-            if (this.threadingParameters.isMinThreadsSet()) {
-                builder = builder.setWorkerOption(Options.WORKER_TASK_CORE_THREADS, 
-                              this.threadingParameters.getMinThreads());
-            }
-            if (this.threadingParameters.isMaxThreadsSet()) {
-                builder = builder.setWorkerOption(Options.WORKER_TASK_MAX_THREADS, 
-                              this.threadingParameters.getMaxThreads());
-            }
-        }
-        return builder;
-    }
-
-    private HttpHandler wrapHandler(HttpHandler handler) {
-        HttpHandler nextHandler = handler;
-        for (CXFUndertowHttpHandler h : getHandlers()) {
-            h.setNext(nextHandler);
-            nextHandler = h;
-        }
-        return nextHandler;
-    }
-    
-    private Builder disableSSLv3(Builder result) {
-        //SSLv3 isn't safe, disable it by default unless explicitly use it
-        if (tlsServerParameters != null 
-            && ("SSLv3".equals(tlsServerParameters.getSecureSocketProtocol())
-                || !tlsServerParameters.getIncludeProtocols().isEmpty())) {
-            List<String> protocols = new LinkedList<String>(Arrays.asList("TLSv1",
"TLSv1.1", "TLSv1.2", "SSLv3"));
-            for (String excludedProtocol : tlsServerParameters.getExcludeProtocols()) {
-                if (protocols.contains(excludedProtocol)) {
-                    protocols.remove(excludedProtocol);
-                }
-            }
-            Sequence<String> supportProtocols = Sequence.of(protocols);
-            return result.setSocketOption(Options.SSL_ENABLED_PROTOCOLS, supportProtocols);
-        } else {
-            Sequence<String> supportProtocols = Sequence.of("TLSv1", "TLSv1.1", "TLSv1.2");
-            return result.setSocketOption(Options.SSL_ENABLED_PROTOCOLS, supportProtocols);
-        }
-    }
-   
-
-    public Undertow.Builder decorateUndertowSocketConnection(Undertow.Builder builder) {
-        if (this.tlsServerParameters != null && this.tlsServerParameters.getClientAuthentication()
!= null 
-            && this.tlsServerParameters.getClientAuthentication().isRequired()) {
-            builder = builder.setSocketOption(Options.SSL_CLIENT_AUTH_MODE, SslClientAuthMode.REQUIRED);
-        }
-        if (this.tlsServerParameters != null && this.tlsServerParameters.getClientAuthentication()
!= null 
-            && this.tlsServerParameters.getClientAuthentication().isWant()) {
-            builder = builder.setSocketOption(Options.SSL_CLIENT_AUTH_MODE, SslClientAuthMode.REQUESTED);
-        }
-        return builder;
-    }
-
-    private boolean shouldCheckUrl(Bus bus) {
-        
-        Object prop = null;
-        if (bus != null) {
-            prop = bus.getProperty(DO_NOT_CHECK_URL_PROP);
-        }
-        if (prop == null) {
-            prop = SystemPropertyAction.getPropertyOrNull(DO_NOT_CHECK_URL_PROP);
-        }
-        return !PropertyUtils.isTrue(prop);
-    }
-    
-    protected void checkRegistedContext(URL url) {
-        
-        String urlPath = url.getPath();
-        for (String registedPath : registedPaths.keySet()) {
-            if (urlPath.equals(registedPath)) {
-                throw new Fault(new Message("ADD_HANDLER_CONTEXT_IS_USED_MSG", LOG, url,
registedPath));
-            }
-            // There are some context path conflicts which could cause the UndertowHTTPServerEngine

-            // doesn't route the message to the right UndertowHTTPHandler
-            if (urlPath.equals(HttpUriMapper.getContextName(registedPath))) {
-                throw new Fault(new Message("ADD_HANDLER_CONTEXT_IS_USED_MSG", LOG, url,
registedPath));
-            }
-            if (registedPath.equals(HttpUriMapper.getContextName(urlPath))) {
-                throw new Fault(new Message("ADD_HANDLER_CONTEXT_CONFILICT_MSG", LOG, url,
registedPath));
-            }
-        }
-        
-    }
-
-    @Override
-    public void removeServant(URL url) {
-        UndertowHTTPHandler handler = registedPaths.remove(url.getPath());
-        if (handler == null) {
-            return;
-        }       
-        --servantCount;
-        if (url.getPath().isEmpty()) {
-            return;
-        }
-        if (handler.isContextMatchExact()) {
-            path.removeExactPath(url.getPath());
-        } else {
-            path.removePrefixPath(url.getPath());
-        }
-    }
-
-    @Override
-    public UndertowHTTPHandler getServant(URL url) {
-        return registedPaths.get(url.getPath());
-    }
-
-    /**
-     * Returns the protocol "http" or "https" for which this engine
-     * was configured.
-     */
-    public String getProtocol() {
-        return protocol;
-    }
-    
-    /**
-     * Returns the port number for which this server engine was configured.
-     * @return
-     */
-    public int getPort() {
-        return port;
-    }
-    
-    /**
-     * Returns the host for which this server engine was configured.
-     * @return
-     */
-    public String getHost() {
-        return host;
-    }
-    
-    public void setPort(int p) {
-        port = p;
-    }
-
-    public void setHost(String host) {
-        this.host = host;
-    }
-
-    public void finalizeConfig() throws GeneralSecurityException,
-        IOException {
-        retrieveListenerFactory();
-        this.configFinalized = true;
-    }
-
-    /**
-     * This method is used to programmatically set the TLSServerParameters.
-     * This method may only be called by the factory.
-     * @throws IOException 
-     */
-    public void setTlsServerParameters(TLSServerParameters params) {
-        
-        tlsServerParameters = params;
-        if (this.configFinalized) {
-            this.retrieveListenerFactory();
-        }
-    }
-    
-    private void retrieveListenerFactory() {
-        if (tlsServerParameters != null) {
-            protocol = "https";
-            
-        } else {
-            protocol = "http";
-        }
-        LOG.fine("Configured port " + port + " for \"" + protocol + "\".");
-    }
-
-    
-    /**
-     * This method returns the programmatically set TLSServerParameters, not
-     * the TLSServerParametersType, which is the JAXB generated type used 
-     * in SpringConfiguration.
-     * @return
-     */
-    public TLSServerParameters getTlsServerParameters() {
-        return tlsServerParameters;
-    } 
-
-        
-    public void stop() {
-        if (this.server != null) {
-            this.server.stop();
-        }
-    }
-
-    /**
-     * This method will shut down the server engine and
-     * remove it from the factory's cache. 
-     */
-    public void shutdown() {
-        registedPaths.clear();
-        if (shouldDestroyPort()) {
-            if (servantCount == 0) {
-                UndertowHTTPServerEngineFactory.destroyForPort(port);
-            } else {
-                LOG.log(Level.WARNING, "FAILED_TO_SHUTDOWN_ENGINE_MSG", port);
-            }
-        }
-    }
-    
-    private boolean shouldDestroyPort() {
-        //if we shutdown the port, on SOME OS's/JVM's, if a client
-        //in the same jvm had been talking to it at some point and keep alives
-        //are on, then the port is held open for about 60 seconds
-        //afterwards and if we restart, connections will then 
-        //get sent into the old stuff where there are 
-        //no longer any servant registered.   They pretty much just hang.
-        
-        //this is most often seen in our unit/system tests that 
-        //test things in the same VM.
-        
-        String s = SystemPropertyAction
-                .getPropertyOrNull("org.apache.cxf.transports.http_undertow.DontClosePort."
+ port);
-        if (s == null) {
-            s = SystemPropertyAction
-                .getPropertyOrNull("org.apache.cxf.transports.http_undertow.DontClosePort");
-        }
-        return !Boolean.valueOf(s);
-    }
-    
-        
-    protected SSLContext createSSLContext() throws Exception  {
-        String proto = tlsServerParameters.getSecureSocketProtocol() == null
-            ? "TLS" : tlsServerParameters.getSecureSocketProtocol();
-                    
-        SSLContext context = tlsServerParameters.getJsseProvider() == null
-            ? SSLContext.getInstance(proto)
-                : SSLContext.getInstance(proto, tlsServerParameters.getJsseProvider());
-            
-        KeyManager[] keyManagers = tlsServerParameters.getKeyManagers();
-        if (tlsServerParameters.getCertAlias() != null) {
-            keyManagers = getKeyManagersWithCertAlias(keyManagers);
-        }
-        context.init(keyManagers, 
-                     tlsServerParameters.getTrustManagers(),
-                     tlsServerParameters.getSecureRandom());
-
-        return context;
-    }
-    
-    protected KeyManager[] getKeyManagersWithCertAlias(KeyManager keyManagers[]) throws Exception
{
-        if (tlsServerParameters.getCertAlias() != null) {
-            for (int idx = 0; idx < keyManagers.length; idx++) {
-                if (keyManagers[idx] instanceof X509KeyManager) {
-                    keyManagers[idx] = new AliasedX509ExtendedKeyManager(
-                        tlsServerParameters.getCertAlias(), (X509KeyManager)keyManagers[idx]);
-                }
-            }
-        }
-        return keyManagers;
-    }
-
-    /**
-     * This method sets the threading parameters for this particular 
-     * server engine.
-     * This method may only be called by the factory.
-     */
-    public void setThreadingParameters(ThreadingParameters params) {        
-        threadingParameters = params;
-    }
-    
-    /**
-     * This method returns whether the threading parameters are set.
-     */
-    public boolean isSetThreadingParameters() {
-        return threadingParameters != null;
-    }
-    
-    /**
-     * This method returns the threading parameters that have been set.
-     * This method may return null, if the threading parameters have not
-     * been set.
-     */
-    public ThreadingParameters getThreadingParameters() {
-        return threadingParameters;
-    }
-
-    public void setContinuationsEnabled(boolean enabled) {
-        continuationsEnabled  = enabled;
-    }
-    
-    public boolean getContinuationsEnabled() {
-        return continuationsEnabled;
-    }
-
-    public int getMaxIdleTime() {
-        return maxIdleTime;
-    }
-
-    public void setMaxIdleTime(int maxIdleTime) {
-        this.maxIdleTime = maxIdleTime;
-    }
-    
-        
-    /**
-     * set the Undertow server's handlers
-     * @param h
-     */
-    
-    public void setHandlers(List<CXFUndertowHttpHandler> h) {
-        handlers = h;
-    }
-    
-    public List<CXFUndertowHttpHandler> getHandlers() {
-        return handlers != null ? handlers : new ArrayList<CXFUndertowHttpHandler>();
-    }
-}

http://git-wip-us.apache.org/repos/asf/cxf/blob/86a2293d/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/DefaultProtocolInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/DefaultProtocolInterceptor.java
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/DefaultProtocolInterceptor.java
index 22e69f7..4f289e2 100644
--- a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/DefaultProtocolInterceptor.java
+++ b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/DefaultProtocolInterceptor.java
@@ -356,11 +356,7 @@ public class DefaultProtocolInterceptor extends AtmosphereInterceptorAdapter
{
     }
 
     // a workaround to flush the header data upon close when no write operation occurs  
-<<<<<<< HEAD
-    private class WrappedAtmosphereResponse extends AtmosphereResponse {
-=======
-    private static class WrappedAtmosphereResponse extends AtmosphereResponseImpl {
->>>>>>> a644c5d... Findbugs work on the transports
+    private static class WrappedAtmosphereResponse extends AtmosphereResponse {
         final AtmosphereResponse response;
         ServletOutputStream sout;
         WrappedAtmosphereResponse(AtmosphereResponse resp, AtmosphereRequest req) throws
IOException {


Mime
View raw message