001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019
020 package org.apache.geronimo.gshell.remote.server.handler;
021
022 import org.apache.geronimo.gshell.remote.message.CloseShellMessage;
023 import org.apache.geronimo.gshell.remote.message.EchoMessage;
024 import org.apache.mina.common.IoSession;
025 import org.codehaus.plexus.component.annotations.Component;
026
027 /**
028 * ???
029 *
030 * @version $Rev: 580731 $ $Date: 2007-09-30 07:52:42 -0700 (Sun, 30 Sep 2007) $
031 */
032 @Component(role=ServerMessageHandler.class, hint="close-shell")
033 public class CloseShellHandler
034 extends ServerMessageHandlerSupport<CloseShellMessage>
035 {
036 public CloseShellHandler() {
037 super(CloseShellMessage.class);
038 }
039
040 public void handle(final IoSession session, final ServerSessionContext context, final CloseShellMessage message) throws Exception {
041 context.shell.close();
042 context.shell = null;
043
044 context.container.disposeAllComponents();
045 context.container = null;
046
047 //
048 // TODO: Send a meaningful response
049 //
050
051 EchoMessage reply = new EchoMessage("CLOSE SHELL SUCCESS");
052 reply.setCorrelationId(message.getId());
053 session.write(reply);
054 }
055 }