/home/wpollock1/public_html/AJava/ShowProps.java
// Property and environment lister demo (WebStart+ runnable Jar), as a
// Simple AWT app.
// Shows all system properties that an Applet/WebStaret app can look at.
// Can use this to experiment with Policy Files: Run, then
// re-run after granting this app read permission on some
// normally forbidden System Property. This program can also be downloaded
// and is a runnable Jar; in that mode, no properties are forbidden. Finally,
// We also show all accessible environment variables.
//
// (C) 2000-2018 by Wayne Pollock, Tampa Florida USA. All Rights Reserved.
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class ShowProps
{
private static final java.util.List<String> defaultListOfSystemProperties =
Arrays.asList(
"awt.toolkit", "file.encoding", "file.encoding.pkg", "file.separator",
"java.awt.graphicsenv", "java.awt.printerjob", "java.class.path",
"java.class.version", "java.home", "java.io.tmpdir",
"java.library.path", "java.runtime.name", "java.runtime.version",
"java.specification.name", "java.specification.vendor",
"java.specification.version", "java.vendor", "java.vendor.url",
"java.vendor.url.bug", "java.version", "java.vm.compressedOopsMode",
"java.vm.info", "java.vm.name",
"java.vm.specification.name", "java.vm.specification.vendor",
"java.vm.specification.version", "java.vm.vendor", "java.vm.version",
"jdk.debug", "line.separator", "os.arch", "os.name", "os.version",
"path.separator", "sun.arch.data.model", "sun.awt.enableExtraMouseButtons",
"sun.boot.library.path", "sun.cpu.endian", "sun.cpu.isalist",
"sun.desktop", "sun.io.unicode.encoding", "sun.java.command",
"sun.java.launcher", "sun.jnu.encoding", "sun.management.compiler",
"sun.os.patch.level", "sun.stderr.encoding", "sun.stdout.encoding",
"user.country", "user.dir", "user.home", "user.language",
"user.name", "user.script", "user.timezone", "user.variant"
);
public static void main ( String[] args) {
// Set up GUI:
Frame f = new Frame( "ShowProps" );
TextArea ta;
f.setLayout( new BorderLayout() );
f.setBackground( Color.white );
ta = new TextArea();
f.addWindowListener( new WindowAdapter() {
public void windowClosing ( WindowEvent we ) {
System.exit( 0 );
}
});
f.add( ta, BorderLayout.CENTER );
ta.setEditable( false );
f.setSize( 900, 800 ); // Height is a guess to fit on most monitors
f.setLocationRelativeTo(null); // Center on screen
ta.append( "======= System property list =======\n\n" );
// Obtain a sorted list of property names:
java.util.List<String> props = new ArrayList<>();
try {
Set<String> propNames= System.getProperties().stringPropertyNames();
for ( final String name : propNames ) {
props.add( name );
}
}
catch ( SecurityException se )
{ ta.append( " (Using default property list)\n\n" );
props = defaultListOfSystemProperties;
}
props.sort( String::compareToIgnoreCase );
// Add each property name and value (if not restricted) to the output:
for ( final String prop: props ) {
String value;
try { value = System.getProperty( prop ); }
catch ( SecurityException se ) { value = "***Restricted***"; }
ta.append( prop + " = \"" + value + "\"\n" );
}
// Append list of environment variables and their values
// (note these are sorted case-sensitively):
ta.append( "\n\n=======Environment variable list=======\n\n" );
try {
SortedMap<String,String> env = new TreeMap<>( System.getenv() );
for ( final String name : env.keySet() ) {
ta.append( name + " = \"" + env.get( name ) + "\"\n" );
}
} catch ( Exception e ) { ta.append( "\n***Restricted***\n" ); }
ta.append( "\n" );
ta.setCaretPosition( 0 ); // Scroll back to top
f.setVisible( true );
}
}