001package org.kuali.common.util.execute.impl;
002
003import java.nio.charset.Charset;
004import java.util.Locale;
005
006import org.apache.commons.lang3.StringUtils;
007import org.kuali.common.util.execute.Executable;
008import org.kuali.common.util.file.CanonicalFile;
009import org.kuali.common.util.log.LoggerUtils;
010import org.slf4j.Logger;
011
012public class ShowEnvExec implements Executable {
013
014        private static final Logger logger = LoggerUtils.make();
015
016        public ShowEnvExec() {
017                this(false);
018        }
019
020        public ShowEnvExec(boolean skip) {
021                this.skip = skip;
022        }
023
024        private final boolean skip;
025
026        @Override
027        public void execute() {
028                if (skip) {
029                        return;
030                }
031                Object[] java = { System.getProperty("java.runtime.version"), System.getProperty("java.vm.name"), System.getProperty("java.vm.vendor") };
032                Object[] javaHome = { new CanonicalFile(System.getProperty("java.home")) };
033                Object[] JAVA_HOME = getJavaHomeEnvironmentVariable();
034                Object[] other = { Locale.getDefault().toString(), Charset.defaultCharset().displayName() };
035                Object[] os = { System.getProperty("os.name"), System.getProperty("os.version"), System.getProperty("os.arch") };
036                logger.info("Java version: {}, name: {}, vendor: {}", java);
037                logger.info("Java home: {}", javaHome);
038                logger.info("JAVA_HOME: {}", JAVA_HOME);
039                logger.info("Default locale: {}, platform encoding: {}", other);
040                logger.info("OS name: {}, version: {}, arch: {}", os);
041        }
042
043        public Object[] getJavaHomeEnvironmentVariable() {
044                String javaHome = System.getenv("JAVA_HOME");
045                if (StringUtils.isBlank(javaHome)) {
046                        return new Object[] { "-- Not set --" };
047                } else {
048                        return new Object[] { new CanonicalFile(javaHome) };
049                }
050        }
051
052        public boolean isSkip() {
053                return skip;
054        }
055
056}