[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-nio-dev
Subject:    Re: RFR 8213031: (zipfs) Add support for POSIX file permissions
From:       Lance Andersen <lance.andersen () oracle ! com>
Date:       2019-05-31 18:00:53
Message-ID: 33E52896-E491-4660-A932-46D5A270A63E () oracle ! com
[Download RAW message or body]

> On May 31, 2019, at 12:32 PM, Alan Bateman <Alan.Bateman@oracle.com> wrote:
> 
> On 29/05/2019 13:16, Langer, Christoph wrote:
> > Hi Alan,
> > 
> > > The table items in L119-150 look fine, we just need to avoid really long
> > > lines One minor comment on L123 is that it might be clearer if you drop
> > > "created" from the sentence.
> > > 
> > > L48-78 is a "wall of text" and links that I don't think will be easy for
> > > most developers to read. Can I provide suggested wording for this part
> > > of the spec? I'm just thinking that an alternative wording might help
> > > avoid too much iteration on this.
> > I have created a new webrev to add some linebreaks and pick up your suggestion to \
> > drop the word "created" in L123. 
> > http://cr.openjdk.java.net/~clanger/webrevs/8213031.12/
> > 
> > Waiting on your update for the other part.
> Attached is alternative wording for the "Support for POSIX file permissions" \
> section. My concern with the proposed in webrev.12 is that it's dense and not easy \
> to read. It also misses a few things - one important one is that access permissions \
> aren't enforced.

I think the wording below is looking good.  A few minor suggestions below.
> 
> So overall I think you've got this feature into reasonable shape (I realize it has \
> taken 7 months to get here, this is perhaps a good example of something that needs \
> a lot of up front discussion before going near the code).

Once we finalize the CSR, we should look towards getting the changes in early in the \
JDK 14 cycle so that we have time to vet/catch potential issues.

> 
> -Alan
> 
> 
> import java.nio.file.Files;
> import java.nio.file.LinkOption;
> import java.nio.file.Path;
> import java.nio.file.attribute.FileAttributeView;
> import java.nio.file.attribute.PosixFileAttributes;
> import java.nio.file.attribute.PosixFilePermission;
> import java.nio.file.attribute.PosixFileAttributeView;
> import java.util.Set;
> 
> 
> * <h2> POSIX file attributes </h2>
> *
> * <p> A Zip file system supports a file attribute {@link FileAttributeView view}
> * named "{@code zip}" that defines the following file attribute:
> *
> * <blockquote>
> * <table class="striped">
> * <caption style="display:none">Supported attributes</caption>
> * <thead>
> *   <tr>
> *     <th scope="col"> Name </th>
> *     <th scope="col"> Type </th>
> *   </tr>
> * </thead>
> * <tbody>
> *  <tr>
> *     <th scope="row"> permissions </th>
> *     <td> {@link Set}&lt;{@link PosixFilePermission}&gt; </td>
> *   </tr>
> * </tbody>
> * </table>
> * </blockquote>
> *
> * The "permissions" attribute is the set of access permissions that are optionally
> * stored for entries in a Zip file. The value of the attribute is {@code null}
> * for entries that do not have access permissions. Zip file systems do not
> * enforce access permissions.
> *
> * <p> The "permissions" attribute can be read and set using the
can-> may
> * {@linkplain Files#getAttribute(Path, String, LinkOption...) Files.getAttribute} \
>                 and
> * {@linkplain Files#setAttribute(Path, String, Object, LinkOption...) \
>                 Files.setAttribute}
> * methods. The following example uses these methods to read and set the attribute:
> * <pre> {@code
> *     Set<PosixFilePermission> perms = Files.getAttribute(entry, \
>                 "zip:permissions");
> *     if (perms == null) {
> *         perms = PosixFilePermissions.fromString("rw-rw-rw-");
> *         Files.setAttribute(entry, "zip:permissions", perms);
> *     }
> * } </pre>
> *
> * <p> In addition to the "{@code zip}" view, a Zip file system optionally supports
> * the {@link PosixFileAttributeView POSIX file attribute view} ("{@code posix}").
> * This view extends the "{@code basic}" view with type safe access to the
> * {@link PosixFileAttributes#owner() owner}, {@link PosixFileAttributes#group() \
>                 group-owner},
> * and {@link PosixFileAttributes#permissions() permissions} attributes. The
> * "{@code posix}" view is only supported when the Zip file system is created with
> * the provider property "{@code enablePosixFileAttributes}" set to "{@code true}".
> * The following creates a file system with this property and reads the access
> * permissions of a file:
> * <pre> {@code
> *     var env = Map.of("enablePosixFileAttributes", "true");
> *     try (FileSystem fs = FileSystems.newFileSystem(file, env) {
> *         Path entry = fs.getPath("entry");
> *         Set<PosixFilePermission> perms = Files.getPosixFilePermissions(entry);
> *     }
> * } </pre>
> *
> * <p> The file owner and group owner attributes are not persisted, meaning they are
> * not stored in the zip file. The "{@code defaultOwner}" and "{@code defaultGroup}"
> * provider properties (listed below) can be used to configure the default values
> * for these attributes. If these properties are not set then the file owner
> * defaults to the owner of the zip file, and the group owner defaults to the
> * zip file's group owner (or the file owner on platforms that don't support a
> * group owner).
> *
> * <p> The "{@code permissions}" attribute is not optional in the "{@code posix}"
> * view so a default of set of permissions are used for entries that do not have
                                 ^^^
                           of seems out of place
> * access permissions stored in the Zip file. The default set of permissions
> * is {@link PosixFilePermission#OWNER_READ OWNER_READ}, {@link \
> PosixFilePermission#OWNER_WRITE
is -> are
> * OWNER_WRITE} and {@link PosixFilePermission#GROUP_READ GROUP_READ}.
perhaps consider using a <UL>  when listing the permissions?
> The default
> * permissions can be configured with the "{@code defaultPermissions}" property
> * described below.



Best
Lance
 <http://oracle.com/us/design/oracle-email-sig-198324.gif>
 <http://oracle.com/us/design/oracle-email-sig-198324.gif> \
<http://oracle.com/us/design/oracle-email-sig-198324.gif>  \
<http://oracle.com/us/design/oracle-email-sig-198324.gif>Lance Andersen| Principal \
Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 
1 Network Drive 
Burlington, MA 01803
Lance.Andersen@oracle.com <mailto:Lance.Andersen@oracle.com>


[Attachment #3 (multipart/related)]

[Attachment #5 (unknown)]

<html><head><meta http-equiv="Content-Type" content="text/html \
charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: \
space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote \
type="cite" class=""><div class="">On May 31, 2019, at 12:32 PM, Alan Bateman &lt;<a \
href="mailto:Alan.Bateman@oracle.com" class="">Alan.Bateman@oracle.com</a>&gt; \
wrote:</div><br class="Apple-interchange-newline"><div class=""><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">On 29/05/2019 13:16, Langer, Christoph wrote:</span><br style="font-family: \
Helvetica; font-size: 15px; font-style: normal; font-variant-caps: normal; \
font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: \
Helvetica; font-size: 15px; font-style: normal; font-variant-caps: normal; \
font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; \
text-indent: 0px; text-transform: none; white-space: normal; widows: auto; \
word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" \
class="">Hi Alan,<br class=""><br class=""><blockquote type="cite" class="">The table \
items in L119-150 look fine, we just need to avoid really long<br class="">lines One \
minor comment on L123 is that it might be clearer if you drop<br class="">"created" \
from the sentence.<br class=""><br class="">L48-78 is a "wall of text" and links that \
I don't think will be easy for<br class="">most developers to read. Can I provide \
suggested wording for this part<br class="">of the spec? I'm just thinking that an \
alternative wording might help<br class="">avoid too much iteration on this.<br \
class=""></blockquote>I have created a new webrev to add some linebreaks and pick up \
your suggestion to drop the word "created" in L123.<br class=""><br class=""><a \
href="http://cr.openjdk.java.net/~clanger/webrevs/8213031.12/" \
class="">http://cr.openjdk.java.net/~clanger/webrevs/8213031.12/</a><br class=""><br \
class="">Waiting on your update for the other part.<br class=""></blockquote><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">Attached is alternative wording for the "Support for POSIX file permissions" \
section. My concern with the proposed in webrev.12 is that it's dense and not easy to \
read. It also misses a few things - one important one is that access permissions \
aren't enforced.</span><br style="font-family: Helvetica; font-size: 15px; \
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: \
normal; text-align: start; text-indent: 0px; text-transform: none; white-space: \
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""></div></blockquote><div><br class=""></div>I think the wording below is \
looking good. &nbsp;A few minor suggestions below.<br class=""><blockquote \
type="cite" class=""><div class=""><br style="font-family: Helvetica; font-size: \
15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""><span style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">So overall I think you've got this feature into reasonable shape (I realize \
it has taken 7 months to get here, this is perhaps a good example of something that \
needs a lot of up front discussion before going near the code).</span><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br \
class=""></div>Once we finalize the CSR, we should look towards getting the changes \
in early in the JDK 14 cycle so that we have time to vet/catch potential \
issues.</div><div><br class=""><blockquote type="cite" class=""><div class=""><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">-Alan</span><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""><span style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">import java.nio.file.Files;</span><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""><span style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">import java.nio.file.LinkOption;</span><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""><span style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">import java.nio.file.Path;</span><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""><span style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">import java.nio.file.attribute.FileAttributeView;</span><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">import \
java.nio.file.attribute.PosixFileAttributes;</span><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" \
class=""><span style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">import java.nio.file.attribute.PosixFilePermission;</span><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">import \
java.nio.file.attribute.PosixFileAttributeView;</span><br style="font-family: \
Helvetica; font-size: 15px; font-style: normal; font-variant-caps: normal; \
font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">import java.util.Set;</span><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">&nbsp;* &lt;h2&gt; POSIX file attributes \
&lt;/h2&gt;</span><br style="font-family: Helvetica; font-size: 15px; font-style: \
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; \
text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">&nbsp;*</span><br style="font-family: Helvetica; font-size: 15px; \
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: \
normal; text-align: start; text-indent: 0px; text-transform: none; white-space: \
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">&nbsp;* &lt;p&gt; A Zip file system supports a file attribute {@link \
FileAttributeView view}</span><br style="font-family: Helvetica; font-size: 15px; \
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: \
normal; text-align: start; text-indent: 0px; text-transform: none; white-space: \
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">&nbsp;* named "{@code zip}" that defines the following file \
attribute:</span><br style="font-family: Helvetica; font-size: 15px; font-style: \
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; \
text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">&nbsp;*</span><br style="font-family: Helvetica; font-size: 15px; \
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: \
normal; text-align: start; text-indent: 0px; text-transform: none; white-space: \
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span \
style="font-family: Helvetica; font-size: 15px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: \
start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: \
0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">&nbsp;* &lt;blockquote&gt;</span><br style="font-family: Helvetica; \
font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
<div class=""><span class="Apple-style-span" style="border-collapse: separate; \
border-spacing: 0px;"><span class="Apple-style-span" style="color: rgb(102, 102, \
102); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; "><a \
href="http://oracle.com/us/design/oracle-email-sig-198324.gif" class=""><span><img \
apple-inline="yes" id="E385D9B0-4774-48E5-84FC-C2AD909AE9E0" \
src="cid:E1C4E2F0-ECD0-4C9D-ADB4-B16CA7BCB7FC@home" class=""></span></a><div \
style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: \
normal; font-variant: normal; font-weight: normal; letter-spacing: normal; \
line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; \
text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; \
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " class=""><a \
href="http://oracle.com/us/design/oracle-email-sig-198324.gif" class=""><span \
class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; \
"><span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: \
Verdana, Arial, Helvetica, sans-serif; font-size: small; "></span></span></a><a \
href="http://oracle.com/us/design/oracle-email-sig-198324.gif" class=""><span \
class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); \
font-family: Helvetica; border-spacing: 0px; -webkit-text-decorations-in-effect: \
none;  "><span class="Apple-style-span" style="color: rgb(102, 102, 102); \
font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; "><span \
class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); \
font-family: Helvetica; border-spacing: 0px; -webkit-text-decorations-in-effect: \
none;  "></span></span></span></a><a \
href="http://oracle.com/us/design/oracle-email-sig-198324.gif" class=""><br \
class=""></a><span style="color: rgb(102, 102, 102); font-family: Verdana, Arial, \
Helvetica, sans-serif; font-size: small; " class="">Lance Andersen| Principal Member \
of Technical Staff | +1.781.442.2037</span><br style="color: rgb(102, 102, 102); \
font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; " \
class=""><font color="#FF0000" style="font-family: Verdana, Arial, Helvetica, \
sans-serif; font-size: small; " class="">Oracle</font><span style="color: rgb(102, \
102, 102); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; " \
class="">&nbsp;Java Engineering&nbsp;</span><br style="color: rgb(102, 102, 102); \
font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; " \
class=""><span style="color: rgb(102, 102, 102); font-family: Verdana, Arial, \
Helvetica, sans-serif; font-size: small; " class="">1 Network Drive&nbsp;</span><br \
style="color: rgb(102, 102, 102); font-family: Verdana, Arial, Helvetica, sans-serif; \
font-size: small; " class=""><span style="color: rgb(102, 102, 102); font-family: \
Verdana, Arial, Helvetica, sans-serif; font-size: small; " class="">Burlington, MA \
01803</span><br style="color: rgb(102, 102, 102); font-family: Verdana, Arial, \
Helvetica, sans-serif; font-size: small; " class=""><a \
href="mailto:Lance.Andersen@oracle.com" style="font-family: Verdana, Arial, \
Helvetica, sans-serif; font-size: small; " \
class="">Lance.Andersen@oracle.com</a></div><div style="color: rgb(0, 0, 0); \
font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: \
normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: \
-webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; \
word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " \
class=""><br class=""></div><br class="Apple-interchange-newline"> \
</span></span></div> </div><br class=""></div></body></html>


["oracle_sig_logo.gif" (oracle_sig_logo.gif)]

GIF89ar00``    \
PPpp@@!,r \
$dihlp,t- pXt 79̑h (Pxx`p'b^ EȦA
8
 @"[m}gdf_Z%	b'Xx-s
ke^	q`%?wy+_Ɛ*(n&
xps,)^1|R-Į*_%
_[_HB ݦ͋8޶AC\T M C~|p>@e; \
2@YU	^|@ARgތ DBK%hԙj$p9R4 \
,OɥؘbAsi˞Mlv5:PJEGP/X]E$@/R(Y% (b8 \
J`I&qBmzQ!5#JjF%7{MϛÕ@`NDD@Q@$@ \
dE ~mϿ(h&6F( ;



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic