All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.admingui.common.handlers.ResourceHandlers Maven / Gradle / Ivy

There is a newer version: 7.2024.1.Alpha1
Show newest version
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2010-2013 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

package org.glassfish.admingui.common.handlers;

import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.List;

import com.sun.jsftemplating.annotation.Handler;
import com.sun.jsftemplating.annotation.HandlerInput;
import com.sun.jsftemplating.annotation.HandlerOutput;
import com.sun.jsftemplating.layout.descriptors.handler.HandlerContext;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import org.glassfish.admingui.common.util.DeployUtil;
import org.glassfish.admingui.common.util.GuiUtil;
import org.glassfish.admingui.common.util.TargetUtil;


/**
 *
 * @author Anissa Lam
 */
public class ResourceHandlers {

    /*
     * This handler takes in a list of rows, there should be 'Enabled' attribute in each row.
     * Get the resource-ref of this resource and do a logical And with this Enabled attribute
     * to get the real status
     */
    @Handler(id = "gf.getResourceRealStatus",
        input = {
            @HandlerInput(name = "endpoint", type = String.class),
            @HandlerInput(name = "rows", type = java.util.List.class, required = true)},
        output = {
            @HandlerOutput(name = "result", type = List.class)})
    public static void getResourceRealStatus(HandlerContext handlerCtx) {
        List rows = (List) handlerCtx.getInputValue("rows");
        Map targetsMap = new HashMap();
        for (Map oneRow : rows) {
            try {
                String name = (String) oneRow.get("name");
                String encodedName = URLEncoder.encode(name, "UTF-8");
                List targets = DeployUtil.getApplicationTarget(name, "resource-ref");
                if (targets.size() == 0) {
                    continue; //The resource is only created on domain, no source-ref exists.
                }
                String enabledStr = DeployUtil.getTargetEnableInfo(encodedName, false, false);
                List targetUrls = new ArrayList();
                for (String target : targets) {
                    if (TargetUtil.isCluster(target)) {
                        targetsMap.put(GuiUtil.getSessionValue("REST_URL") + "/clusters/cluster/" + target, target);
                        targetUrls.add(GuiUtil.getSessionValue("REST_URL") + "/clusters/cluster/" + target);
                    } else {
                        targetsMap.put(GuiUtil.getSessionValue("REST_URL") + "/servers/server/" + target, target);
                        targetUrls.add(GuiUtil.getSessionValue("REST_URL") + "/servers/server/" + target);
                    }
                }
                oneRow.put("targetUrls", targetUrls);
                oneRow.put("targetsMap", targetsMap);
                oneRow.put("enabled", enabledStr);
            } catch (Exception ex) {
                GuiUtil.handleException(handlerCtx, ex);
            }
        }
        handlerCtx.setOutputValue("result", rows);
    }
    
    
    /**
     *	

This handler looks into the config properties, and confidential list, and returns a List of Map for populating the properties table.

* This is called for creating new objects. */ @Handler(id="gf.getConfigPropsInfo", input={ @HandlerInput(name="extraProps", type=java.util.Map.class), @HandlerInput(name="key", type=String.class), @HandlerInput(name="confidentialKey", type=String.class, defaultValue="confidentialConfigProps")}, output={ @HandlerOutput(name="result", type=java.util.List.class), @HandlerOutput(name="hasConfidentialProps", type=java.lang.Boolean.class)}) public static void getConfigPropsInfo(HandlerContext handlerCtx) { Map extraProps = (Map) handlerCtx.getInputValue("extraProps"); String key = (String) handlerCtx.getInputValue("key"); String confidentialKey = (String) handlerCtx.getInputValue("confidentialKey"); Boolean hasConfidential = true; Map allProps = (Map) extraProps.get(key); List confidentialPropsNames = (List) extraProps.get(confidentialKey); if (confidentialPropsNames == null || confidentialPropsNames.isEmpty()){ hasConfidential = false; } List result = new ArrayList(); for(Map.Entry e : allProps.entrySet()){ Map oneRow = new HashMap(); String name = e.getKey(); String value = (e.getValue() == null) ? "" : e.getValue(); oneRow.put("selected", false); oneRow.put("name", name); if ( hasConfidential && confidentialPropsNames.contains(name)){ oneRow.put("value", ""); oneRow.put("confValue", value); oneRow.put("confValue2", value); oneRow.put("isConfidential", true); }else{ oneRow.put("value", value); oneRow.put("confValue", ""); oneRow.put("confValue2", ""); oneRow.put("isConfidential", false); } result.add(oneRow); } handlerCtx.setOutputValue("result", result); handlerCtx.setOutputValue("hasConfidentialProps", hasConfidential); } /* This method goes through the table list, if there is confidential properties, will ensure that the masked value1 and value2 is the same. * And will copy this to the property value column to continue processing. * This method is called just before saving the properties. */ @Handler(id="gf.combineProperties", input={ @HandlerInput(name="tableList", type=java.util.List.class)}, output={ @HandlerOutput(name="combined", type=java.util.List.class)}) public static void combineProperties(HandlerContext handlerCtx) { List tableList = (List) handlerCtx.getInputValue("tableList"); List combined = new ArrayList(); for(Map oneRow: tableList){ Map newRow = new HashMap(); boolean isC = (Boolean) oneRow.get("isConfidential"); String name = (String)oneRow.get("name"); newRow.put("name", name); if (GuiUtil.isEmpty(name)){ continue; } if(isC){ String v1 = (String) oneRow.get("confValue"); String v2 = (String) oneRow.get("confValue2"); if(v1 == null){ if (v2 != null){ GuiUtil.handleError(handlerCtx, "Confidential property '" + name + "' does not match."); return; } continue; } if(! v1.equals(v2)){ GuiUtil.handleError(handlerCtx, "Confidential property '" + name + "' does not match."); return; } newRow.put("value",v1); }else{ newRow.put("value", oneRow.get("value")); } combined.add(newRow); } handlerCtx.setOutputValue("combined", combined); } @Handler(id="gf.buildConfidentialPropsTable", input={ @HandlerInput(name="propsMaps", type=List.class), @HandlerInput(name="confidentialList", type=java.util.List.class)}, output={ @HandlerOutput(name="result", type=java.util.List.class), @HandlerOutput(name="hasConfidentialProps", type=Boolean.class) }) public static void buildConfidentialPropsTable(HandlerContext handlerCtx) { List confidentialList = (List) handlerCtx.getInputValue("confidentialList"); List> propsMaps = (List>) handlerCtx.getInputValue("propsMaps"); Boolean hasConfidential = true; if (confidentialList == null || confidentialList.isEmpty()){ hasConfidential = false; } Boolean hasConf = false; List result = new ArrayList(); for( Map oneProp : propsMaps){ Map oneRow = new HashMap(); String name = oneProp.get("name"); String value = oneProp.get("value"); if (value == null) value=""; oneRow.put("selected", false); oneRow.put("name", name); if ( hasConfidential && confidentialList.contains(name)){ oneRow.put("value", ""); oneRow.put("confValue", value); oneRow.put("confValue2", value); oneRow.put("isConfidential", true); hasConf = true; }else{ oneRow.put("value", value); oneRow.put("confValue", ""); oneRow.put("confValue2", ""); oneRow.put("isConfidential", false); } result.add(oneRow); } handlerCtx.setOutputValue("result", result); handlerCtx.setOutputValue("hasConfidentialProps", hasConf); } //getLogicalJndiName(logicalMap="#{requestScope.tmpJMap.data.extraProperties.#{pageSession.logicalJndiMapKey}}", listRow="#{pageSession.listOfRows}"); @Handler(id="gf.getLogicalJndiName", input={ @HandlerInput(name="logicalMapList", type=List.class, required=true), @HandlerInput(name="listRow", type=java.util.List.class)}, output={ @HandlerOutput(name="result", type=java.util.List.class) }) public static void getLogicalJndiName(HandlerContext handlerCtx) { List> logicalMapList = (List>) handlerCtx.getInputValue("logicalMapList"); List> listRow = (List>) handlerCtx.getInputValue("listRow"); if (listRow==null || listRow.isEmpty()){ handlerCtx.setOutputValue("result", listRow); return; } //listRow is the row for each resource table, need to extract its logical jndi name for logicalMapList and add that to the row. try{ for(Map onerow: listRow){ String name= (String) onerow.get("name"); onerow.put("logicalJndiName", ""); onerow.put("encodedLogicalJndiName", ""); for(Map logicalMap : logicalMapList){ if(name.equals(logicalMap.get("name"))){ String lname = logicalMap.get("logical-jndi-name"); if (!GuiUtil.isEmpty(lname)){ onerow.put("logicalJndiName", lname); onerow.put("encodedLogicalJndiName", URLEncoder.encode(lname, "UTF-8")); } break; } } } handlerCtx.setOutputValue("result", listRow); } catch (Exception ex) { GuiUtil.handleException(handlerCtx, ex); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy