001    /**
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    package org.apache.geronimo.console.apache.jk;
018    
019    import java.io.IOException;
020    import java.util.List;
021    import javax.portlet.ActionRequest;
022    import javax.portlet.ActionResponse;
023    import javax.portlet.PortletException;
024    import javax.portlet.RenderRequest;
025    import javax.portlet.RenderResponse;
026    import org.apache.commons.logging.Log;
027    import org.apache.commons.logging.LogFactory;
028    import org.apache.geronimo.console.MultiPageModel;
029    import org.apache.geronimo.console.util.ConfigurationData;
030    import org.apache.geronimo.console.util.PortletManager;
031    import org.apache.geronimo.kernel.config.ConfigurationModuleType;
032    import org.apache.geronimo.management.geronimo.WebModule;
033    
034    /**
035     * Handler for the screen where you select the webapps to expose through Apache
036     *
037     * @version $Rev: 476061 $ $Date: 2006-11-17 01:36:50 -0500 (Fri, 17 Nov 2006) $
038     */
039    public class WebAppHandler extends BaseApacheHandler {
040        private final static Log log = LogFactory.getLog(WebAppHandler.class);
041    
042        public WebAppHandler() {
043            super(WEB_APP_MODE, "/WEB-INF/view/apache/jk/webApps.jsp");
044        }
045    
046        public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
047            return getMode();
048        }
049    
050        public void renderView(RenderRequest request, RenderResponse response, MultiPageModel amodel) throws PortletException, IOException {
051            ApacheModel model = (ApacheModel) amodel;
052            ConfigurationData[] webApps = PortletManager.getConfigurations(request, ConfigurationModuleType.WAR, true);
053            if(model.getWebApps().size() == 0) {
054                List list = model.getWebApps();
055                for (int i = 0; i < webApps.length; i++) {
056                    ConfigurationData app = webApps[i];
057                    WebAppData data = new WebAppData(app.getParentName().getArtifact(), app.getChildName(), app.getModuleBeanName() == null ? null : app.getModuleBeanName(), false, null, false);
058                    if (app.isRunning()) {
059                        WebModule web = (WebModule) PortletManager.getManagedBean(request, app.getModuleBeanName());
060                        data.setContextRoot(web.getContextPath());
061                        String path;
062                        if(web.getWARDirectory().getProtocol().equals("file")) {
063                            path = web.getWARDirectory().getPath();
064                        } else {
065                            path = "WARMustBeUnpacked";
066                        }
067    
068                        data.setWebAppDir(path);
069                    }
070                    list.add(data);
071                }
072            }
073            request.setAttribute("webApps", webApps);
074        }
075    
076        public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel amodel) throws PortletException, IOException {
077            return RESULTS_MODE+BEFORE_ACTION;
078        }
079    }