001    /*
002     * Copyright 2010 the original author or authors.
003     * 
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package com.hs.mail.container.server.socket;
017    
018    import java.io.IOException;
019    import java.net.Socket;
020    
021    import org.apache.commons.io.IOUtils;
022    import org.apache.log4j.Logger;
023    
024    import com.hs.mail.container.server.ConnectionHandler;
025    
026    
027    /**
028     * 
029     * @author Won Chul Doh
030     * @since May 3, 2010
031     * 
032     */
033    public class SocketConnection implements Runnable {
034    
035        static Logger logger = Logger.getLogger(SocketConnection.class);
036        
037        private ConnectionHandler handler = null;
038        private Socket socket = null;
039            
040        public SocketConnection(ConnectionHandler handler, Socket socket) {
041            this.handler = handler;
042            this.socket = socket;
043        }
044    
045        public void run() {
046            try {
047                handler.handleConnection(socket);
048            } catch (Exception e) {
049                    logger.error(e.getMessage(), e);
050            } finally {
051                    if (socket != null) {
052                            try {
053                                    IOUtils.closeQuietly(socket.getInputStream ());
054                                    IOUtils.closeQuietly(socket.getOutputStream());
055                                            socket.close();
056                                    } catch (IOException e) {
057                                    }
058                            socket = null;
059                    }
060            }
061    
062            }
063    
064    }