java.security.AccessControlException

"Chappelear, Jack" <[email protected]> Fri, 5 Oct 2007 13:40:26 -0400
Newsgroups gmane.comp.java.jel.general
Message-ID <65AB4C7A1928DD4A85D9F697165091980DEEC206@gsmbnop10es.firmwide.corp.gs.com>
This is a multi-part message in MIME format.

--===============1826864680==
Content-class: urn:content-classes:message
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C80776.D05DE9C8"

This is a multi-part message in MIME format.

------_=_NextPart_001_01C80776.D05DE9C8
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Recently added access to System.getProperties and when we run as a java
webstart (with full security permissions) I am seeing

java.security.AccessControlException: access denied
(java.util.PropertyPermission timestamp read) =09
at
java.security.AccessControlContext.checkPermission(AccessControlContext.
java:269) =09
at
java.security.AccessController.checkPermission(AccessController.java:401
) =09
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524) =09
at
java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1276)

at java.lang.System.getProperty(System.java:573) =09
at com.gs.mac.eval.JWSTestStatics.getTimestamp(JWSTestStatics.java:5) =09
at dump.evaluate(Unknown Source) =09
at com.gs.mac.eval.JWSTest.main(JWSTest.java:31) =09
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) =09
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39) =09
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25) =09
at java.lang.reflect.Method.invoke(Method.java:324) =09
at com.sun.javaws.Launcher.executeApplication(Unknown Source) =09
at com.sun.javaws.Launcher.executeMainClass(Unknown Source) =09
at com.sun.javaws.Launcher.continueLaunch(Unknown Source) =09
at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source) =09
at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source) 	at
com.sun.javaws.Launcher.run(Unknown Source) =09
at java.lang.Thread.run(Thread.java:534)=20

Jel 9.11 works fine running as a native program
All jars are signed and java WS is admitting that I have all-permissions

Java Web Start 1.2 Console, started Fri Oct 05 13:12:20 EDT 2007=20
Java 2 Runtime Environment: Version 1.4.2_13 by Sun Microsystems Inc.=20
Permission requested for:
file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMJWSTest.
jar
Found certificate chain of length 2 in codesource=20
Found certificate chain of length 2 in cache=20
adding all-permissions object=20
Permission requested for:
file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMjel.jar=20
Found certificate chain of length 2 in codesource=20
Found certificate chain of length 2 in cache=20
adding all-permissions object=20


Work great w/o the system.getProperty()

Is this related to the custom class loader? Do I need to add System as a
static lib?

package com.gs.mac.eval;
import gnu.jel.CompiledExpression;
import gnu.jel.Evaluator;
import gnu.jel.Library;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class JWSTest {
	private static String version =3D "1.2";
	public static void main(String[] args) throws Throwable {
		String expr =3D "getTimestamp()";
		// Set up the library
		Class[] staticLib =3D new Class[1];
		staticLib[0] =3D JWSTestStatics.class;
		Library lib =3D new Library(staticLib, null, null, null);
		lib.markStateDependent("getTimestamp", null);
		CompiledExpression c =3D Evaluator.compile(expr, lib);
		String s =3D (String) c.evaluate(null);
		System.out
				.println("This is version " +
JWSTest.version + " (the timestamp value is "
						+
System.getProperty("timestamp") + ")" +
System.getProperty("line.separator")
						+
System.getProperties());
		JFrame frame =3D new JFrame();
		Dimension d =3D
Toolkit.getDefaultToolkit().getScreenSize();
		frame.setTitle("JWSTest version " + JWSTest.version);
		frame.setSize(d.width * 3 / 4, d.height * 3 / 4);
		frame.setLocation(d.width / 8, d.height / 8);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		JTextArea textArea =3D new JTextArea(20, 60);
		textArea
				.setText("This is version " +
JWSTest.version + " (the timestamp value is "
						+
System.getProperty("timestamp") + ")" +
System.getProperty("line.separator")
						+
System.getProperties());
		JScrollPane scrollPane =3D new JScrollPane(textArea);
		frame.getContentPane().add(scrollPane);
		frame.setVisible(true);
	}
}

package com.gs.mac.eval;

public class JWSTestStatics {
	public static String getTimestamp() {
		return System.getProperty("timestamp");
	}

}


------_=_NextPart_001_01C80776.D05DE9C8
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7653.2">
<TITLE>java.security.AccessControlException</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=3D2 FACE=3D"Arial">Recently added access to =
System.getProperties and when we run as a java webstart (with full =
security permissions) I am seeing</FONT></P>

<P><FONT SIZE=3D2 FACE=3D"Arial">java.security.AccessControlException: =
access denied (java.util.PropertyPermission timestamp read) =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.security.AccessControlContext.checkPermission(AccessControlContext.j=
ava:269) &nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.security.AccessController.checkPermission(AccessController.java:401)=
 &nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.SecurityManager.checkPermission(SecurityManager.java:524)&nbsp;=
 </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1276) =
&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.System.getProperty(System.java:573) =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.gs.mac.eval.JWSTestStatics.getTimestamp(JWSTestStatics.java:5) =
&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at dump.evaluate(Unknown Source) =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.gs.mac.eval.JWSTest.main(JWSTest.java:31) =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&nbsp; =
</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java=
:39) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:25) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.reflect.Method.invoke(Method.java:324) &nbsp;&nbsp;&nbsp; =
</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.executeApplication(Unknown Source) &nbsp; =
</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.executeMainClass(Unknown Source) =
&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.continueLaunch(Unknown Source) =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source) =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.handleLaunchFile(Unknown Source) =
&nbsp;&nbsp;&nbsp; at com.sun.javaws.Launcher.run(Unknown Source)&nbsp; =
</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.Thread.run(Thread.java:534) </FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Jel 9.11 works fine running as a native =
program</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">All jars are signed and java WS is =
admitting that I have all-permissions</FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Java Web Start 1.2 Console, started Fri =
Oct 05 13:12:20 EDT 2007 </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Java 2 Runtime Environment: Version =
1.4.2_13 by Sun Microsystems Inc. </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Permission requested for: </FONT><A =
HREF=3D"file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMJ=
WSTest.jar"><U><FONT COLOR=3D"#0000FF" SIZE=3D2 =
FACE=3D"Arial">file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8=
080/RMJWSTest.jar</FONT></U></A>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
codesource </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
cache </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">adding all-permissions object </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Permission requested for: </FONT><A =
HREF=3D"file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMj=
el.jar"><U><FONT COLOR=3D"#0000FF" SIZE=3D2 =
FACE=3D"Arial">file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8=
080/RMjel.jar</FONT></U></A><FONT SIZE=3D2 FACE=3D"Arial"> </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
codesource </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
cache </FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">adding all-permissions object </FONT>
</P>
<BR>

<P><FONT SIZE=3D2 FACE=3D"Arial">Work great w/o the =
system.getProperty()</FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Is this related to the custom class =
loader? Do I need to add System as a static lib?</FONT>
</P>

<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">package</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> com.gs.mac.eval;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> gnu.jel.CompiledExpression;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> gnu.jel.Evaluator;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> gnu.jel.Library;</FONT>
</P>

<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.Dimension;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.Toolkit;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.event.WindowAdapter;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.event.WindowEvent;</FONT>
</P>

<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> javax.swing.JFrame;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> javax.swing.JScrollPane;</FONT>

<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> javax.swing.JTextArea;</FONT>
</P>

<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">public</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"></FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">class</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> JWSTest {</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">private</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">static</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> String</FONT><I> <FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">version</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> =3D</FONT> <FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot;1.2&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">public</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">static</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">void</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> main(String[] =
args)</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">throws</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> Throwable {</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">String expr =3D</FONT> <FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot;getTimestamp()&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#3F7F5F" =
SIZE=3D2 FACE=3D"Courier New">// Set up the library</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">Class[] staticLib =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> Class[</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">1</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">];</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">staticLib[0] =3D =
JWSTestStatics.</FONT><B><FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">class</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">Library lib =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"><STRIKE> =
Library</STRIKE>(staticLib,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">lib.markStateDependent(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot;getTimestamp&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">CompiledExpression c =3D =
Evaluator.</FONT><I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">compile</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">(expr, lib);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">String s =3D (String) =
c.evaluate(</FONT><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">System.</FONT><I><FONT COLOR=3D"#0000C0" =
SIZE=3D2 FACE=3D"Courier New">out</FONT></I>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">.println(</FONT><FONT COLOR=3D"#2A00FF" =
SIZE=3D2 FACE=3D"Courier New">&quot;This is version &quot;</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> + =
JWSTest.</FONT><I><FONT COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier =
New">version</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot; (the timestamp value is &quot;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperty</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot;timestamp&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">) +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">&quot;)&quot;</FONT><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> + System.</FONT><I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">getProperty</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">(</FONT><FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">&quot;line.separator&quot;</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">)</FONT></P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperties</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">());</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">JFrame frame =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> JFrame();</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">Dimension d =3D Toolkit.</FONT><I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">getDefaultToolkit</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">().getScreenSize();</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setTitle(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier New">&quot;JWSTest version =
&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> + =
JWSTest.</FONT><I><FONT COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier =
New">version</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setSize(d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">width</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> * 3 / 4, d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">height</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> * 3 / 4);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setLocation(d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">width</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> / 8, d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">height</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> / 8);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.addWindowListener(</FONT><B><FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> WindowAdapter() =
{</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B> <FONT COLOR=3D"#7F0055" =
SIZE=3D2 FACE=3D"Courier New">public</FONT></B><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT COLOR=3D"#7F0055" =
SIZE=3D2 FACE=3D"Courier New">void</FONT></B><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> windowClosing(WindowEvent e) {</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">exit</FONT></I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">(0);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">}</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">});</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">JTextArea textArea =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> JTextArea(20, =
60);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">textArea</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">.setText(</FONT><FONT COLOR=3D"#2A00FF" =
SIZE=3D2 FACE=3D"Courier New">&quot;This is version &quot;</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> + =
JWSTest.</FONT><I><FONT COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier =
New">version</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot; (the timestamp value is &quot;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperty</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot;timestamp&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">) +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">&quot;)&quot;</FONT><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> + System.</FONT><I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">getProperty</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">(</FONT><FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">&quot;line.separator&quot;</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">)</FONT></P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperties</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">());</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">JScrollPane scrollPane =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> =
JScrollPane(textArea);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier =
New">frame.getContentPane().add(scrollPane);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setVisible(</FONT><B><FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">true</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">}</FONT>

<BR><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>

<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">package</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> com.gs.mac.eval;</FONT>
</P>

<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">public</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"></FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">class</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> JWSTestStatics {</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">public</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">static</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> String getTimestamp() =
{</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B> <FONT COLOR=3D"#7F0055" =
SIZE=3D2 FACE=3D"Courier New">return</FONT></B><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperty</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">&quot;timestamp&quot;</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>

<P><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>

</BODY>
</HTML>
------_=_NextPart_001_01C80776.D05DE9C8--



--===============1826864680==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Help-jel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-jel

--===============1826864680==--