|
Glassfish example source code file (ASenvPropertyReader.java)
The Glassfish ASenvPropertyReader.java source code/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2010 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 com.sun.enterprise.universal.glassfish; import com.sun.enterprise.universal.io.SmartFile; import static com.sun.enterprise.util.SystemPropertyConstants.*; import com.sun.enterprise.util.net.NetUtils; import java.io.*; import java.util.*; /** * Class ASenvPropertyReader * * This class converts the variables stored in asenv.conf (UNIX) * or asenv.bat (WINDOWS) into their equivalent system properties. * <p>This class guarantees that no Exception will get thrown back. * You may however, have a bad javaRoot set even though we tried everything to find * one */ public class ASenvPropertyReader { /** * Read and process the information in asenv * There are no arguments because the installation directory is calculated * relative to the jar file you are calling from. * Unlike V2 this class will not set any System Properties. Instead it will * give you a Map<String,String> containing the properties. * <p>To use the class, create an instance and then call getProps(). */ public ASenvPropertyReader() { this(GFLauncherUtils.getInstallDir()); } /** * Read and process the information in asenv.[bat|conf] * This constructor should normally not be called. It is designed for * unit test classes that are not running from an official installation. * @param installDir The Glassfish installation directory */ public ASenvPropertyReader(File installDir) { synchronized (propsMap) { try { installDir = SmartFile.sanitize(installDir); props = propsMap.get(installDir); if (props == null) { props = new ASenvMap(installDir); propsMap.put(installDir, props); } } catch(Exception e) { // ignore -- this is universal utility code there isn't much we can // do. } } } /** * Returns the properties that were processed. This includes going to a bit of * trouble setting up the hostname and java root. * @return A Map<String,String> with all the properties */ public Map<String, String> getProps() { return props; } /** * Returns a string representation of the properties in the Map<String,String>. * Format: name=value\nname2=value2\n etc. * @return the string representation. */ @Override public String toString() { StringBuilder sb = new StringBuilder(); Set<String> keys = props.keySet(); for (String key : keys) { sb.append(key).append("=").append(props.get(key)).append('\n'); } return sb.toString(); } /* * ASenvMap is a "lazy-evaluation" map, i.e., for values that are * expensive to calculate, the value is not calculated until it is actually * used. */ static class ASenvMap extends HashMap<String, String> { // If we find a token in a set property, this is set to true. boolean foundToken = false; ASenvMap(File installDir) { put(INSTALL_ROOT_PROPERTY, installDir.getPath()); File configDir = SmartFile.sanitize(new File(installDir, "config")); put(CONFIG_ROOT_PROPERTY, configDir.getPath()); setProperties(configDir); postProcess(configDir); // Product root is defined to be the parent of the install root. // While tempting to just use installDir.getParent() we go through // these gyrations just in case setProperties() changed the value // of the INSTALL_ROOT_PROPERTY property. File installRoot = new File(super.get(INSTALL_ROOT_PROPERTY)); put(PRODUCT_ROOT_PROPERTY, installRoot.getParent()); } @Override public String get(Object k) { String v = super.get(k); if (v != null) return v; if (k.equals(HOST_NAME_PROPERTY)) { v = getHostname(); put(HOST_NAME_PROPERTY, v); } else if (k.equals(JAVA_ROOT_PROPERTY)) { v = getJavaRoot(super.get(JAVA_ROOT_PROPERTY_ASENV)); put(JAVA_ROOT_PROPERTY, v); } return v; } @Override public Set<String> keySet() { completeMap(); return super.keySet(); } @Override public Set<Map.Entry Other Glassfish examples (source code examples)Here is a short list of links related to this Glassfish ASenvPropertyReader.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.