You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by si...@apache.org on 2010/12/24 21:18:53 UTC

svn commit: r1052580 [4/5] - in /incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool: ./ class-use/ classdepend/ envcheck/

Added: incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/DebugDynamicPolicyProvider.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/DebugDynamicPolicyProvider.html?rev=1052580&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/DebugDynamicPolicyProvider.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/DebugDynamicPolicyProvider.html Fri Dec 24 20:18:52 2010
@@ -0,0 +1,474 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Mon Mar 08 17:46:09 EST 2010 -->
+<TITLE>
+DebugDynamicPolicyProvider (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sun.jini.tool.DebugDynamicPolicyProvider class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DebugDynamicPolicyProvider (Apache River v2.1.2-SNAPSHOT API Documentation)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/DebugDynamicPolicyProvider.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/sun/jini/tool/ComputeHttpmdCodebase.html" title="class in com.sun.jini.tool"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/sun/jini/tool/JarWrapper.html" title="class in com.sun.jini.tool"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/sun/jini/tool/DebugDynamicPolicyProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DebugDynamicPolicyProvider.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sun.jini.tool</FONT>
+<BR>
+Class DebugDynamicPolicyProvider</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Policy.html" title="class or interface in java.security">java.security.Policy</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html" title="class in net.jini.security.policy">net.jini.security.policy.DynamicPolicyProvider</A>
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sun.jini.tool.DebugDynamicPolicyProvider</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../net/jini/security/policy/DynamicPolicy.html" title="interface in net.jini.security.policy">DynamicPolicy</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>DebugDynamicPolicyProvider</B><DT>extends <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html" title="class in net.jini.security.policy">DynamicPolicyProvider</A></DL>
+</PRE>
+
+<P>
+Defines a <A HREF="../../../../net/jini/security/policy/DynamicPolicy.html" title="interface in net.jini.security.policy"><CODE>DynamicPolicy</CODE></A> that logs information about missing
+ permissions, and optionally grants all permissions, which is <b>FOR
+ DEBUGGING ONLY</b>. Do not use this security policy provider to grant
+ all permissions in a production environment. <p>
+
+ This class is intended to simplify the process of deciding what security
+ permissions to grant to run an application.  While it is generally
+ acceptable to grant all permissions to local, trusted code, downloaded
+ code should typically be granted the least permission possible. <p>
+
+ The usual approach to choosing which permissions to grant is to start by
+ running the application with a security policy file that grants all
+ permissions to local, trusted code.  When the application fails with an
+ exception message that identifies a missing permission, add that
+ permission to the security policy file, and repeat the process. Although
+ straight forward, this process can be time consuming if the application
+ requires many permission grants. <p>
+
+ Another approach is to set the value of the
+ <code>"java.security.debug"</code> system property to
+ <code>"access,failure"</code>, which produces debugging output that
+ describes permission grants and failures. Unfortunately, this approach
+ produces voluminous output, making it difficult to determine which
+ permission grants are needed. <p>
+
+ This security policy provider permits another, hopefully more
+ convenient, approach. When this class is specified as the security
+ policy provider, and granting all permissions is enabled, it uses the
+ standard dynamic security policy to determine what permissions are
+ granted. If a permission is not granted by the standard policy, though,
+ then rather than denying permission, this class logs the missing
+ permission in the form required by the security policy file, and grants
+ the permission, allowing the program to continue. In this way,
+ developers can determine the complete set of security permissions
+ required by the application. <p>
+
+ Note that the information printed by this security policy provider may
+ not be in the form you wish to use in your policy file. In particular,
+ using system property substitutions and <code>KeyStore</code> aliases
+ may produce a more portable file than one containing the exact entries
+ logged. Note, too, that the information printed for
+ <code>signedBy</code> fields specifies the principal name for
+ <code>X.509</code> certificates, rather than the <code>KeyStore</code>
+ alias, which is not a valid security policy file format. <p>
+
+ Using this security policy provider without granting all permissions is
+ also useful since it prints information about security exceptions that
+ were caught, but that might have an affect on program behavior. <p>
+
+ This class uses uses the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Logger.html" title="class or interface in java.util.logging"><CODE>Logger</CODE></A> named
+ <code>net.jini.security.policy</code> to log information at the following
+ levels: <ul>
+
+ <li> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#WARNING" title="class or interface in java.util.logging"><CODE>WARNING</CODE></A> - Permissions that were needed but not
+ granted by the policy file.
+
+ <li> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINE" title="class or interface in java.util.logging"><CODE>FINE</CODE></A> - Also include stack traces.
+
+ <li> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINER" title="class or interface in java.util.logging"><CODE>FINER</CODE></A> - All permissions granted, with stack traces
+ for ones not granted by the policy file, and dynamic grants.
+
+ <li> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A> - All permissions granted, with all stack
+ traces, and dynamic grants. </ul>
+
+ To use this security policy provider, do the following: <ul>
+
+ <li> Copy the <code>jsk-policy.jar</code> file from the <code>lib-ext</code>
+ subdirectory of the Apache River release
+ installation to the extensions directory of the Java(TM) 2 SDK (or JRE)
+ installation, and copy the <code>jsk-debug-policy.jar</code> file
+ from the <code>lib</code> subdirectory of the Apache River release installation to
+ the extensions directory of the Java 2 SDK (or JRE) installation.
+
+ <li> Specify this class as the security policy provider. Create a copy of
+ the file <code>jre/lib/security/security/java.security</code>, modify the
+ file to contain the line:
+
+ <blockquote>
+ <pre>
+ policy.provider=com.sun.jini.tool.DebugDynamicPolicyProvider
+ </pre>
+ </blockquote>
+
+ and then specify this new file as the value of the
+ <code>java.security.properties</code> system property.  
+
+ <li> Specify whether all permissions should be granted by setting the
+ <code>com.sun.jini.tool.DebugDynamicPolicyProvider.grantAll</code> security
+ property to <code>true</code> by adding the following line to the security
+ properties file:
+ 
+ <blockquote>
+ <pre>
+ com.sun.jini.tool.DebugDynamicPolicyProvider.grantAll=true
+ </pre>
+ </blockquote> </ul> <p>
+
+ Granting all permissions is disabled by default. <p>
+
+ Make sure to specify a security manager, either by setting the
+ <code>java.security.manager</code> system property, or putting the following
+ code in the main method of the application:
+
+ <blockquote>
+ <pre>
+ if (System.getSecurityManager() == null) {
+     System.setSecurityManager(new SecurityManager());
+ }
+ </pre>
+ </blockquote>
+
+ <p>This provider can be used in conjunction with the provider
+ <code>com.sun.jini.start.AggregatePolicyProvider</code> by setting the
+ <code>com.sun.jini.start.AggregatePolicyProvider.mainPolicyClass</code> 
+ system property to the fully qualified name of this class.  If this
+ provider is used with the <code>AggregatePolicyProvider</code>, then the
+ JAR file <code>jsk-debug-policy.jar</code> needs to be in the
+ application's class path, and this class needs to be granted all
+ permissions.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Sun Microsystems, Inc.</DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/DebugDynamicPolicyProvider.html#DebugDynamicPolicyProvider()">DebugDynamicPolicyProvider</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an instance of this class that wraps a default underlying
+ policy, as specified by <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#DynamicPolicyProvider()"><CODE>DynamicPolicyProvider()</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/DebugDynamicPolicyProvider.html#DebugDynamicPolicyProvider(java.security.Policy)">DebugDynamicPolicyProvider</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Policy.html" title="class or interface in java.security">Policy</A>&nbsp;basePolicy)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an instance of this class that wraps around the given
+ non-<code>null</code> base policy object.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/DebugDynamicPolicyProvider.html#grant(java.lang.Class, java.security.Principal[], java.security.Permission[])">grant</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cl,
+      <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Principal.html" title="class or interface in java.security">Principal</A>[]&nbsp;principals,
+      <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Permission.html" title="class or interface in java.security">Permission</A>[]&nbsp;permissions)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log calls.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/DebugDynamicPolicyProvider.html#implies(java.security.ProtectionDomain, java.security.Permission)">implies</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/ProtectionDomain.html" title="class or interface in java.security">ProtectionDomain</A>&nbsp;pd,
+        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Permission.html" title="class or interface in java.security">Permission</A>&nbsp;perm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Always returns true, but logs unique requests</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_net.jini.security.policy.DynamicPolicyProvider"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class net.jini.security.policy.<A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html" title="class in net.jini.security.policy">DynamicPolicyProvider</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#getGrants(java.lang.Class, java.security.Principal[])">getGrants</A>, <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#getPermissions(java.security.CodeSource)">getPermissions</A>, <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#getPermissions(java.security.ProtectionDomain)">getPermissions</A>, <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#grantSupported()">grantSupported</A>, <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#refresh()">refresh</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.security.Policy"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.security.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Policy.html" title="class or interface in java.security">Policy</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Policy.html#getPolicy()" title="class or interface in java.security">getPolicy</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Policy.html#setPolicy(java.security.Policy)" title="class or interface in java.security">setPolicy</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://
 java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="DebugDynamicPolicyProvider()"><!-- --></A><H3>
+DebugDynamicPolicyProvider</H3>
+<PRE>
+public <B>DebugDynamicPolicyProvider</B>()
+                           throws <A HREF="../../../../net/jini/security/policy/PolicyInitializationException.html" title="class in net.jini.security.policy">PolicyInitializationException</A></PRE>
+<DL>
+<DD>Creates an instance of this class that wraps a default underlying
+ policy, as specified by <A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#DynamicPolicyProvider()"><CODE>DynamicPolicyProvider()</CODE></A>.
+<P>
+<DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../net/jini/security/policy/PolicyInitializationException.html" title="class in net.jini.security.policy">PolicyInitializationException</A></CODE> - if unable to construct the base
+               policy
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/SecurityException.html" title="class or interface in java.lang">SecurityException</A></CODE> - if there is a security manager and the calling
+               context does not have adequate permissions to read the <code>
+               net.jini.security.policy.DynamicPolicyProvider.basePolicyClass
+               </code> security property, or if the calling context does not
+               have adequate permissions to access the base policy class</DL>
+</DL>
+<HR>
+
+<A NAME="DebugDynamicPolicyProvider(java.security.Policy)"><!-- --></A><H3>
+DebugDynamicPolicyProvider</H3>
+<PRE>
+public <B>DebugDynamicPolicyProvider</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Policy.html" title="class or interface in java.security">Policy</A>&nbsp;basePolicy)</PRE>
+<DL>
+<DD>Creates an instance of this class that wraps around the given
+ non-<code>null</code> base policy object.
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>basePolicy</CODE> - base policy object containing information about
+        non-dynamic grants
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if <code>basePolicy</code> is
+               <code>null</code></DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="grant(java.lang.Class, java.security.Principal[], java.security.Permission[])"><!-- --></A><H3>
+grant</H3>
+<PRE>
+public void <B>grant</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cl,
+                  <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Principal.html" title="class or interface in java.security">Principal</A>[]&nbsp;principals,
+                  <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Permission.html" title="class or interface in java.security">Permission</A>[]&nbsp;permissions)</PRE>
+<DL>
+<DD>Log calls.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicy.html#grant(java.lang.Class, java.security.Principal[], java.security.Permission[])">grant</A></CODE> in interface <CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicy.html" title="interface in net.jini.security.policy">DynamicPolicy</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#grant(java.lang.Class, java.security.Principal[], java.security.Permission[])">grant</A></CODE> in class <CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html" title="class in net.jini.security.policy">DynamicPolicyProvider</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>cl</CODE> - class to grant permissions to the class loader of, or
+                <code>null</code> if granting across all class loaders<DD><CODE>principals</CODE> - if non-<code>null</code>, minimum set of principals
+                to which grants apply<DD><CODE>permissions</CODE> - if non-<code>null</code>, permissions to grant</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="implies(java.security.ProtectionDomain, java.security.Permission)"><!-- --></A><H3>
+implies</H3>
+<PRE>
+public boolean <B>implies</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/ProtectionDomain.html" title="class or interface in java.security">ProtectionDomain</A>&nbsp;pd,
+                       <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Permission.html" title="class or interface in java.security">Permission</A>&nbsp;perm)</PRE>
+<DL>
+<DD>Always returns true, but logs unique requests
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html#implies(java.security.ProtectionDomain, java.security.Permission)">implies</A></CODE> in class <CODE><A HREF="../../../../net/jini/security/policy/DynamicPolicyProvider.html" title="class in net.jini.security.policy">DynamicPolicyProvider</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/DebugDynamicPolicyProvider.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/sun/jini/tool/ComputeHttpmdCodebase.html" title="class in com.sun.jini.tool"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/sun/jini/tool/JarWrapper.html" title="class in com.sun.jini.tool"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/sun/jini/tool/DebugDynamicPolicyProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DebugDynamicPolicyProvider.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+Copyright 2007, multiple authors.<br>Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0" target="child" >Apache License, Version 2.0</a>, see the <a href="../../../../doc-files/NOTICE" target="child" >NOTICE</a> file for attributions.
+</BODY>
+</HTML>

Added: incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/JarWrapper.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/JarWrapper.html?rev=1052580&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/JarWrapper.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/com/sun/jini/tool/JarWrapper.html Fri Dec 24 20:18:52 2010
@@ -0,0 +1,617 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Mon Mar 08 17:46:09 EST 2010 -->
+<TITLE>
+JarWrapper (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sun.jini.tool.JarWrapper class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="JarWrapper (Apache River v2.1.2-SNAPSHOT API Documentation)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/JarWrapper.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/sun/jini/tool/DebugDynamicPolicyProvider.html" title="class in com.sun.jini.tool"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/sun/jini/tool/PreferredListGen.html" title="class in com.sun.jini.tool"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/sun/jini/tool/JarWrapper.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="JarWrapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sun.jini.tool</FONT>
+<BR>
+Class JarWrapper</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sun.jini.tool.JarWrapper</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public class <B>JarWrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+</PRE>
+
+<P>
+A tool for generating "wrapper" JAR files.  A wrapper JAR file contains a
+ <code>Class-Path</code> manifest attribute listing a group of JAR files to
+ be loaded from a common codebase.  It may also, depending on applicability
+ and selected options, contain a JAR index file, a preferred class list
+ and/or a <code>Main-Class</code> manifest entry for the grouped JAR files.
+ <p>
+ The following items are discussed below:
+ <ul>
+   <li> <a href="#applicability">Applicability</a>
+   <li> <a href="#running">Using the Tool</a>
+   <li> <a href="#logging">Logging</a>
+   <li> <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])">Processing Options</A>
+ </ul>
+ <p>
+ <a name="applicability"><h3>Applicability</h3></a>
+ <p>
+ The <code>JarWrapper</code> tool is applicable in the following deployment
+ situations, which may overlap:
+ <ul>
+   <li> If a codebase contains multiple JAR files which declare preferred
+          resources, <code>JarWrapper</code> can be used to produce a wrapper
+          JAR file with a combined preferred list.  Preferred resources are
+          described in the documentation for the <A HREF="../../../../net/jini/loader/pref/package-summary.html"><CODE>net.jini.loader.pref</CODE></A>
+          package.
+        <p>
+   <li> If a codebase contains multiple JAR files and requires integrity
+          protection, <code>JarWrapper</code> can be used to produce a wrapper
+          JAR file with a <code>Class-Path</code> attribute that uses HTTPMD
+          URLs.  HTTPMD URLs are described in the documentation for the
+          <A HREF="../../../../net/jini/url/httpmd/package-summary.html"><CODE>net.jini.url.httpmd</CODE></A> package.
+        <p>
+   <li> If an application or service packaged as an executable JAR file
+          refers to classes specified at deployment time (e.g., via a
+          <A HREF="../../../../net/jini/config/Configuration.html" title="interface in net.jini.config"><CODE>Configuration</CODE></A>) which are not
+          present in the JAR file or its <code>Class-Path</code>,
+          <code>JarWrapper</code> can be used to produce a wrapper JAR file
+          which includes the extra classes in its <code>Class-Path</code> while
+          retaining the original <code>Main-Class</code> declaration; the
+          wrapper JAR file can then be executed in place of the original JAR
+          file.
+ </ul>
+ <p>
+ <a name="running"><h3>Using the Tool</h3></a>
+ <code>JarWrapper</code> can be run directly from the
+ <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])">command line</A> or can be invoked programmatically using the
+ <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean)"><CODE>wrap</CODE></A> method.
+ <p>
+ To run the tool on UNIX platforms:
+ <blockquote><pre>
+ java -jar <var><b>install_dir</b></var>/lib/jarwrapper.jar <var><b>processing_options</b></var>
+ </pre></blockquote>
+ To run the tool on Microsoft Windows platforms:
+ <blockquote><pre>
+ java -jar <var><b>install_dir</b></var>\lib\jarwrapper.jar <var><b>processing_options</b></var>
+ </pre></blockquote>
+ <p>
+ A more specific example with options for running directly from a Unix command
+ line might be:
+ <blockquote><pre>
+ % java -jar <var><b>install_dir</b></var>/lib/jarwrapper.jar \
+        -httpmd=SHA-1 wrapper.jar base_dir src1.jar src2.jar
+ </pre></blockquote>
+ where <var><b>install_dir</b></var> is the directory where the Apache
+ River release is installed. This command line would result in the creation
+ of a wrapper JAR file, <code>wrapper.jar</code>, in the current working
+ directory, whose contents would be based on the source JAR files
+ <code>src1.jar</code> and <code>src2.jar</code> (as well as any other JAR
+ files referenced transitively through their <code>Class-Path</code>
+ attributes or JAR indexes).  The paths for <code>src1.jar</code> and
+ <code>src2.jar</code>, as well as any transitively referenced JAR files,
+ would be resolved relative to the <code>base_dir</code> directory.  The
+ <code>Class-Path</code> attribute of <code>wrapper.jar</code> would use
+ HTTPMD URLs with SHA-1 digests.  If any of the HTTPMD URLs encountered is
+ found to be invalid and can not be resolved, the <code>JarWrapper</code>
+ operation will fail.
+ <p>
+ The equivalent programmatic invocation of <code>JarWrapper</code> would be:
+ <blockquote><pre>
+ JarWrapper.wrap("wrapper.jar", "base_dir", new String[]{ "src1.jar", "src2.jar" }, "SHA-1", true, "manifest.mf" );
+ </pre></blockquote>
+
+ <p>
+ <a name="logging"><h3>Logging</h3></a>
+ <p>
+ <code>JarWrapper</code> uses the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Logger.html" title="class or interface in java.util.logging"><CODE>Logger</CODE></A> named
+ <code>com.sun.jini.tool.JarWrapper</code> to log information at the
+ following logging levels:
+ <p>
+ <table border="1" cellpadding="5"
+          summary="Describes logging performed by JarWrapper at different
+                   logging levels">
+ <caption halign="center" valign="top"><b><code>
+    com.sun.jini.tool.JarWrapper</code></b></caption>
+
+   <tr> <th scope="col"> Level   <th scope="col"> Description </tr>
+   <tr>
+     <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#WARNING" title="class or interface in java.util.logging"><CODE>WARNING</CODE></A>
+     <td> Generated JAR index entries that do not end in <code>".jar"</code>
+   </tr>
+   <tr>
+     <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINE" title="class or interface in java.util.logging"><CODE>FINE</CODE></A>
+     <td> Names of processed source JAR files and output wrapper JAR file
+   </tr>
+   <tr>
+     <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINER" title="class or interface in java.util.logging"><CODE>FINER</CODE></A>
+     <td> Processing of <code>Main-Class</code> and <code>Class-Path</code>
+          attributes, and presence of preferred lists and JAR indexes
+   </tr>
+   <tr>
+     <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A>
+     <td> Processing and compilation of preferred lists and JAR indexes
+   </tr>
+ </table>
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+  <DD>2.0</DD>
+<DT><B>Author:</B></DT>
+  <DD>Sun Microsystems, Inc.</DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])">main</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates a wrapper JAR file for the specified JAR files.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest, java.util.List)">wrap</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+     boolean&nbsp;index,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/jar/Manifest.html" title="class or interface in java.util.jar">Manifest</A>&nbsp;mf,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;apiClasses)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates a wrapper JAR file based on the provided values in the same
+ manner as described in the documentation for <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])"><CODE>main(java.lang.String[])</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean)">wrap</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;baseDir,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+     boolean&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invokes <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest)"><CODE>wrap</CODE></A> with the provided values and a <code>null</code> manifest.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest)">wrap</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;baseDir,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+     boolean&nbsp;index,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/jar/Manifest.html" title="class or interface in java.util.jar">Manifest</A>&nbsp;mf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates a wrapper JAR file based on the provided values in the same
+ manner as described in the documentation for <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])"><CODE>main(java.lang.String[])</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest, java.util.List)">wrap</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;baseDir,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+     boolean&nbsp;index,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/jar/Manifest.html" title="class or interface in java.util.jar">Manifest</A>&nbsp;mf,
+     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;apiClasses)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates a wrapper JAR file based on the provided values in the same
+ manner as described in the documentation for <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])"><CODE>main(java.lang.String[])</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://
 java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;args)</PRE>
+<DL>
+<DD>Generates a wrapper JAR file for the specified JAR files.  The command
+ line arguments are:
+ <pre>
+ [ <var>options</var> ] <var>dest-jar</var> <var>base-dir</var> <var>src-jar</var> [ <var>src-jar</var> ...]
+ </pre>
+ The <var>dest-jar</var> argument specifies the name of the wrapper JAR
+ file to generate.  The <var>base-dir</var> argument specifies the base
+ directory from which to locate source JAR files to wrap.  The
+ <var>src-jar</var> arguments are non-absolute URLs to "top-level" source
+ JAR files relative to <var>base-dir</var>; they also constitute the
+ basis of the <code>Class-Path</code> attribute included in the generated
+ wrapper JAR file.  JAR files not present in the command line but
+ indirectly referenced via JAR index or <code>Class-Path</code> entries
+ in source JAR files will themselves be used as source JAR files, and
+ will appear alongside the top-level source JAR files in the
+ <code>Class-Path</code> attribute of the wrapper JAR file in depth-first
+ order, with JAR index references appearing before
+ <code>Class-Path</code> references.  This utility does not modify any
+ source JAR files.
+ <p>
+ If any of the top-level source JAR files contain preferred resources (as
+ indicated by a preferred list in the JAR file), then a preferred list
+ describing resource preferences across all source JAR files will be
+ included in the wrapper JAR file.  The preferred list of a top-level
+ source JAR file is interpreted as applying to that JAR file along with
+ all JAR files transitively referenced by it through JAR index or
+ <code>Class-Path</code> entries, excluding JAR files that have already
+ been encountered in the processing of preceding top-level JAR files.  If
+ a given top-level source JAR file does not contain a preferred list,
+ then all resources contained in it and its transitively referenced JAR
+ files (again, excluding those previously encountered) are considered not
+ preferred.  Preferred lists are described further in the documentation
+ for <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><CODE>PreferredClassLoader</CODE></A>.
+ <p>
+ If any of the top-level source JAR files declare a
+ <code>Main-Class</code> manifest entry, then the wrapper JAR file will
+ include a <code>Main-Class</code> manifest entry whose value is that of
+ the first top-level source JAR file listed on the command line which
+ defines a <code>Main-Class</code> entry.
+ <p>
+ Note that attribute values generated by this utility, such as those for
+ the <code>Class-Path</code> and <code>Main-Class</code> attributes
+ described above, do not take precedence over values for the same
+ attributes contained in a manifest file explicitly specified using the
+ <code>-manifest</code> option (described below).
+ <p>
+ Supported options for this tool include:
+ <p>
+ <dl>
+   <dt> <code>-verbose</code>
+   <dd> Sets the level of the <code>com.sun.jini.tool.JarWrapper</code>
+              logger to <code>Level.FINER</code>.
+              <p>
+   <dt> <code>-httpmd[=algorithm]</code>
+   <dd> Use (relative) HTTPMD URLs in the <code>Class-Path</code>
+        attribute of the generated wrapper JAR file.  The default is to
+        use HTTP URLs.  Digests for HTTPMD URLs are calculated using the
+        given algorithm, or SHA-1 if none is specified.
+              <p>
+   <dt> <code>-noindex</code>
+   <dd> Do not include a JAR index in the generated wrapper JAR file.  The
+              default is to compile an index based on the contents of the
+              source JAR files.
+              <p>
+   <dt> <code>-manifest=<I>file</I></code>
+   <dd> Specifies a manifest file containing attribute values to include
+        in the manifest file inside the generated wrapper JAR file.
+              This allows enables users to  add additional metadata or 
+        override JarWrapper's generated  values to customize the resulting 
+        manifest.  The values contained in this optional file take 
+        precedence over the generated content. This flag is conceptually 
+        similar to the jar utilities <code>m</code> flag. In the current
+        version there are four possible attributes that can be overridden
+        in the target Manifest.  These are
+        <code>Name.MANIFEST_VERSION</code>,
+        <code>Name("Created-By")</code>, <code>Name.CLASS_PATH</code> and
+        <code>Name.MAIN_CLASS</code>.  Any additonal attributes beyond
+        these four will be appended to the manifest attribute list and
+        will appear in the resultant <code>MANIFEST.MF</code> file.
+ </dl>
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean)"><!-- --></A><H3>
+wrap</H3>
+<PRE>
+public static void <B>wrap</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;baseDir,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+                        boolean&nbsp;index)
+                 throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Invokes <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest)"><CODE>wrap</CODE></A> with the provided values and a <code>null</code> manifest.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>destJar</CODE> - name of the wrapper JAR file to generate<DD><CODE>baseDir</CODE> - base directory from which to locate source JAR
+ files to wrap<DD><CODE>srcJars</CODE> - list of top-level source JAR files to process<DD><CODE>httpmdAlg</CODE> - name of algorithm to use for generating HTTPMD URLs, or
+ <code>null</code> if plain HTTP URLs should be used<DD><CODE>index</CODE> - if <code>true</code>, generate a JAR index; if
+ <code>false</code>, do not generate one
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - if an I/O error occurs while processing source JAR
+ files or generating the wrapper JAR file
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the provided values are invalid
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if <code>destJar</code>,
+ <code>baseDir</code>, <code>srcJars</code>, or any element of
+ <code>srcJars</code> is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest)"><!-- --></A><H3>
+wrap</H3>
+<PRE>
+public static void <B>wrap</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;baseDir,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+                        boolean&nbsp;index,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/jar/Manifest.html" title="class or interface in java.util.jar">Manifest</A>&nbsp;mf)
+                 throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Generates a wrapper JAR file based on the provided values in the same
+ manner as described in the documentation for <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])"><CODE>main(java.lang.String[])</CODE></A>.  The only
+ difference between this method and <code>main</code> is that it receives
+ its values as explicit arguments instead of in a command line, and
+ indicates failure by throwing an exception.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>destJar</CODE> - name of the wrapper JAR file to generate<DD><CODE>baseDir</CODE> - base directory from which to locate source JAR
+ files to wrap<DD><CODE>srcJars</CODE> - list of top-level source JAR files to process<DD><CODE>httpmdAlg</CODE> - name of algorithm to use for generating HTTPMD URLs, or
+ <code>null</code> if plain HTTP URLs should be used<DD><CODE>index</CODE> - if <code>true</code>, generate a JAR index; if
+ <code>false</code>, do not generate one<DD><CODE>mf</CODE> - manifest containing values to include in the manifest file 
+ of the generated wrapper JAR file
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - if an I/O error occurs while processing source JAR
+ files or generating the wrapper JAR file
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the provided values are invalid
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if <code>destJar</code>,
+ <code>baseDir</code>, <code>srcJars</code>, or any element of
+ <code>srcJars</code> is <code>null</code><DT><B>Since:</B></DT>
+  <DD>2.1</DD>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="wrap(java.lang.String, java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest, java.util.List)"><!-- --></A><H3>
+wrap</H3>
+<PRE>
+public static void <B>wrap</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;baseDir,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+                        boolean&nbsp;index,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/jar/Manifest.html" title="class or interface in java.util.jar">Manifest</A>&nbsp;mf,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;apiClasses)
+                 throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Generates a wrapper JAR file based on the provided values in the same
+ manner as described in the documentation for <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])"><CODE>main(java.lang.String[])</CODE></A>.  The only
+ difference between this method and <code>main</code> is that it receives
+ its values as explicit arguments instead of in a command line, and
+ indicates failure by throwing an exception.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>destJar</CODE> - name of the wrapper JAR file to generate<DD><CODE>baseDir</CODE> - base directory from which to locate source JAR
+ files to wrap<DD><CODE>srcJars</CODE> - list of top-level source JAR files to process<DD><CODE>httpmdAlg</CODE> - name of algorithm to use for generating HTTPMD URLs, or
+ <code>null</code> if plain HTTP URLs should be used<DD><CODE>index</CODE> - if <code>true</code>, generate a JAR index; if
+ <code>false</code>, do not generate one<DD><CODE>mf</CODE> - manifest containing values to include in the manifest file
+ of the generated wrapper JAR file<DD><CODE>apiClasses</CODE> - list of binary class names (type <code>String</code>)
+ that must be considered API classes in case a preferences conflict
+ arises during wrapping of the JAR files, or <code>null</code> in case
+ no such list is available
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - if an I/O error occurs while processing source JAR
+ files or generating the wrapper JAR file
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the provided values are invalid
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if <code>destJar</code>,
+ <code>baseDir</code>, <code>srcJars</code>, or any element of
+ <code>srcJars</code> is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="wrap(java.lang.String, java.lang.String[], java.lang.String, boolean, java.util.jar.Manifest, java.util.List)"><!-- --></A><H3>
+wrap</H3>
+<PRE>
+public static void <B>wrap</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;destJar,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]&nbsp;srcJars,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;httpmdAlg,
+                        boolean&nbsp;index,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/jar/Manifest.html" title="class or interface in java.util.jar">Manifest</A>&nbsp;mf,
+                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;apiClasses)
+                 throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Generates a wrapper JAR file based on the provided values in the same
+ manner as described in the documentation for <A HREF="../../../../com/sun/jini/tool/JarWrapper.html#main(java.lang.String[])"><CODE>main(java.lang.String[])</CODE></A>.
+ <p>
+ The difference between this method and the 6 and 7-arg <code>wrap</code>
+ method is that the source JAR files must be specified by an absolute path
+ and that for processing the classpath will be flattened, i.e. each source
+ JAR file will be considered as relative to its parent directory (that
+ will serve as a virtual base directory) for the assembly of the
+ <code>Class-Path</code> entry.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>destJar</CODE> - name of the wrapper JAR file to generate<DD><CODE>srcJars</CODE> - list of top-level source JAR files to process, must be
+ absolute paths<DD><CODE>httpmdAlg</CODE> - name of algorithm to use for generating HTTPMD URLs, or
+ <code>null</code> if plain HTTP URLs should be used<DD><CODE>index</CODE> - if <code>true</code>, generate a JAR index; if
+ <code>false</code>, do not generate one<DD><CODE>mf</CODE> - manifest containing values to include in the manifest file
+ of the generated wrapper JAR file<DD><CODE>apiClasses</CODE> - list of binary class names (type <code>String</code>)
+ that must be considered API classes in case a preferences conflict
+ arises during wrapping of the JAR files, or <code>null</code> in case
+ no such list is available
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - if an I/O error occurs while processing source JAR
+ files or generating the wrapper JAR file
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the provided values are invalid
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if <code>destJar</code>,
+ <code>srcJars</code>, or any element of <code>srcJars</code> is
+ <code>null</code></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/JarWrapper.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/sun/jini/tool/DebugDynamicPolicyProvider.html" title="class in com.sun.jini.tool"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/sun/jini/tool/PreferredListGen.html" title="class in com.sun.jini.tool"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/sun/jini/tool/JarWrapper.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="JarWrapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+Copyright 2007, multiple authors.<br>Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0" target="child" >Apache License, Version 2.0</a>, see the <a href="../../../../doc-files/NOTICE" target="child" >NOTICE</a> file for attributions.
+</BODY>
+</HTML>