Coverage Report - org.mule.transport.http.HttpsMessageReceiver
 
Classes in this File Line Coverage Branch Coverage Complexity
HttpsMessageReceiver
67%
2/3
N/A
1.6
HttpsMessageReceiver$HttpsWorker
0%
0/16
0%
0/4
1.6
 
 1  
 /*
 2  
  * $Id: HttpsMessageReceiver.java 10961 2008-02-22 19:01:02Z dfeist $
 3  
  * --------------------------------------------------------------------------------------
 4  
  * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
 5  
  *
 6  
  * The software in this package is published under the terms of the CPAL v1.0
 7  
  * license, a copy of which has been included with this distribution in the
 8  
  * LICENSE.txt file.
 9  
  */
 10  
 
 11  
 package org.mule.transport.http;
 12  
 
 13  
 import org.mule.api.MuleMessage;
 14  
 import org.mule.api.endpoint.InboundEndpoint;
 15  
 import org.mule.api.lifecycle.CreateException;
 16  
 import org.mule.api.service.Service;
 17  
 import org.mule.api.transport.Connector;
 18  
 
 19  
 import java.io.IOException;
 20  
 import java.net.Socket;
 21  
 import java.security.cert.Certificate;
 22  
 
 23  
 import javax.net.ssl.HandshakeCompletedEvent;
 24  
 import javax.net.ssl.HandshakeCompletedListener;
 25  
 import javax.net.ssl.SSLPeerUnverifiedException;
 26  
 import javax.net.ssl.SSLSocket;
 27  
 import javax.resource.spi.work.Work;
 28  
 
 29  
 public class HttpsMessageReceiver extends HttpMessageReceiver
 30  
 {
 31  
 
 32  
     public HttpsMessageReceiver(Connector connector, Service service, InboundEndpoint endpoint)
 33  
             throws CreateException
 34  
     {
 35  4
         super(connector, service, endpoint);
 36  4
     }
 37  
 
 38  
     // @Override
 39  
     protected Work createWork(Socket socket) throws IOException
 40  
     {
 41  0
         return new HttpsWorker(socket);
 42  
     }
 43  
 
 44  
 
 45  
     private class HttpsWorker extends HttpWorker implements HandshakeCompletedListener
 46  
     {
 47  
         private Certificate[] peerCertificateChain;
 48  
         private Certificate[] localCertificateChain;
 49  
 
 50  
         public HttpsWorker(Socket socket) throws IOException
 51  0
         {
 52  0
             super(socket);
 53  0
             ((SSLSocket) socket).addHandshakeCompletedListener(this);
 54  0
         }
 55  
 
 56  
         protected void preRouteMessage(MuleMessage message)
 57  
         {
 58  0
             super.preRouteMessage(message);
 59  
             
 60  0
             if (peerCertificateChain != null)
 61  
             {
 62  0
                 message.setProperty(HttpsConnector.PEER_CERTIFICATES, peerCertificateChain);
 63  
             }
 64  0
             if (localCertificateChain != null)
 65  
             {
 66  0
                 message.setProperty(HttpsConnector.LOCAL_CERTIFICATES, localCertificateChain);
 67  
             }
 68  0
         }
 69  
 
 70  
         public void handshakeCompleted(HandshakeCompletedEvent event)
 71  
         {
 72  0
             localCertificateChain = event.getLocalCertificates();
 73  
             try
 74  
             {
 75  0
                 peerCertificateChain = event.getPeerCertificates();
 76  
             }
 77  0
             catch (SSLPeerUnverifiedException e)
 78  
             {
 79  0
                 logger.debug("Cannot get peer certificate chain: "+ e.getMessage());
 80  0
             }
 81  0
         }
 82  
 
 83  
     }
 84  
 
 85  
 
 86  
 }