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.configcreator;
018
019 import java.io.IOException;
020 import java.util.HashSet;
021 import java.util.List;
022
023 import javax.portlet.ActionRequest;
024 import javax.portlet.ActionResponse;
025 import javax.portlet.PortletException;
026 import javax.portlet.RenderRequest;
027 import javax.portlet.RenderResponse;
028
029 import org.apache.commons.logging.Log;
030 import org.apache.commons.logging.LogFactory;
031 import org.apache.geronimo.console.MultiPageModel;
032
033 /**
034 * A handler for ...
035 *
036 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
037 */
038 public class ReferencesHandler extends AbstractHandler {
039 private static final Log log = LogFactory.getLog(ReferencesHandler.class);
040
041 public ReferencesHandler() {
042 super(REFERENCES_MODE, "/WEB-INF/view/configcreator/references.jsp");
043 }
044
045 public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model)
046 throws PortletException, IOException {
047 return getMode();
048 }
049
050 public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model)
051 throws PortletException, IOException {
052 WARConfigData data = getSessionData(request);
053 request.setAttribute(DATA_PARAMETER, data);
054 request.setAttribute(DEPLOYED_EJBS_PARAMETER, JSR77_Util.getDeployedEJBs(request));
055 request.setAttribute(DEPLOYED_JDBC_CONNECTION_POOLS_PARAMETER, JSR77_Util.getJDBCConnectionPools(request));
056 request.setAttribute(DEPLOYED_JMS_CONNECTION_FACTORIES_PARAMETER, JSR77_Util.getJMSConnectionFactories(request));
057 request.setAttribute(DEPLOYED_JMS_DESTINATIONS_PARAMETER, JSR77_Util.getJMSDestinations(request));
058 request.setAttribute(DEPLOYED_JAVAMAIL_SESSIONS_PARAMETER, JSR77_Util.getJavaMailSessions(request));
059 }
060
061 public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model)
062 throws PortletException, IOException {
063 WARConfigData data = getSessionData(request);
064 data.readReferencesData(request);
065 HashSet dependenciesSet = new HashSet();
066 if (processRefs(data.getEjbRefs(), dependenciesSet)
067 && processRefs(data.getEjbLocalRefs(), dependenciesSet)
068 && processRefs(data.getJdbcPoolRefs(), dependenciesSet)
069 && processRefs(data.getJavaMailSessionRefs(), dependenciesSet)
070 && processRefs(data.getJmsConnectionFactoryRefs(), dependenciesSet)
071 && processRefs(data.getJmsDestinationRefs(), dependenciesSet)) {
072 data.getDependencies().clear();
073 data.getDependencies().addAll(dependenciesSet);
074 if (data.getSecurity() != null) {
075 return SECURITY_MODE + "-before";
076 }
077 return DEPENDENCIES_MODE + "-before";
078 }
079 data.setReferenceNotResolved(true);
080 return getMode() + "-before";
081 }
082
083 private boolean processRefs(List refList, HashSet dependenciesSet) {
084 for (int i = 0; i < refList.size(); i++) {
085 ReferenceData referenceData = (ReferenceData) refList.get(i);
086 String referenceLink = referenceData.getRefLink();
087 if (referenceLink == null || referenceLink.length() <= 0) {
088 return false;
089 }
090 dependenciesSet.add(JSR88_Util.getDependencyString(referenceLink));
091 }
092 return true;
093 }
094 }