JAL-1400 default JalviewLite build is signed applet with sandbox permissions
[jalview.git] / build.xml
index c29f2c1..0849463 100755 (executable)
--- a/build.xml
+++ b/build.xml
                <!-- J2SE version needed for webstart launch -->
                <property name="j2sev" value="1.6+"/>
 
-    <!-- Permissions for running Java applets and applications. Defaults are those suitable for deploying jalview webstart/jalviewLite at www.jalview.org -->
+    <!-- Permissions for running Java applets and applications. -->
+    <!-- Defaults are those suitable for deploying jalview webstart www.jalview.org -->
     <property name="application.codebase" value="*.jalview.org"/>
-    <property name="applet.codebase" value="*.jalview.org"/>
+    <!-- and allowing the applet to be deployed from any URL -->
+    <property name="applet.codebase" value="*"/>
     <property name="applet.caller-codebase" value="${applet.codebase}"/>
 
                <!-- build directory configuration -->
                        <manifest>
                                <attribute name="Main-Class" value="jalview.bin.Jalview" />
         <attribute name="Permissions" value="all-permissions" />
-        <!--<attribute name="Trusted-Lib" value="true" /> -->
         <attribute name="Application-Name" value="Jalview Desktop"/>
         <attribute name="Codebase" value="${application.codebase}"/>
                        </manifest>
                <jar destfile="in.jar" index="true">
                        <manifest>
                                <attribute name="Main-Class" value="jalview.bin.JalviewLite" />
-                               <attribute name="Application-Name" value="JalviewLite Applet"/>
-                               <!--            <attribute name="Permissions" value="sandbox" /> -->
-                               <!--<attribute name="Trusted-Lib" value="true" /> -->
+                               <attribute name="Application-Name" value="JalviewLite"/>
                                <attribute name="Codebase" value="${applet.codebase}"/>
-                               <attribute name="Caller-Allowable-Codebase" value="${applet.caller-codebase}"/>
                        </manifest>
                        <fileset dir="${outputDir}">
                                <include name="com/**" />
       <include name="jmol/*"/>
          </fileset>
                <fileset dir=".">
-               <include name="jalviewApplet.jar"/>
+               <include name="${jalviewLiteJar}"/>
                        </fileset>
                <fileset dir="appletlib">
                      <include name="**/*"/>
                        </fileset>
          </copy>
-           <jar update="true" index="true" jarfile="${packageDir}/examples/${jalviewLiteJar}"/>
-           <jar update="true" index="true" jarfile="${packageDir}/examples/${jmolJar}">
+         <presetdef name="applet.jar">
+      <!-- build a signed applet with 'all-permissions' - 
+                         Needs 'param name="permissions' value="all-permissions"' in applet tag
+                         JalviewLite+JmolApplet linked sequence/structure fails
+                         Mixed code warnings are raised
+                         -->
+           <jar update="true" index="true">
                <manifest>
-               <attribute name="Application-Name" value="Jmol (bundled with JalviewLite)"/>
-               <!--          <attribute name="Permissions" value="sandbox" /> -->
-               <!--<attribute name="Trusted-Lib" value="true" /> -->
-               <attribute name="Codebase" value="${applet.codebase}"/>
-               <attribute name="Caller-Allowable-Codebase" value="${applet.caller-codebase}"/>
-                 </manifest>
-               </jar>
+               <attribute name="Application-Name" value="JalviewLite"/>
+               <attribute name="Permissions" value="all-permissions"/>
+               <attribute name="Codebase" value="${applet.codebase}"/>
+               <attribute name="Caller-Allowable-Codebase" value="${applet.caller-codebase}"/>
+               <attribute name="Application-Library-Allowable-Codebase" value="${applet.codebase}"/>
+        </manifest>
+      </jar>
+    </presetdef>
+    <presetdef name="s_applet.jar">
+      <!-- build signed applet with sandbox permissions -
+                         Needs 'param name="permissions' value="sandbox"' in applet tag
+                        Preserves Pre-Java 1.7_u45 behavior once 'permissions' parameter added to applet tag 
+-->
+
+      <jar update="true" index="true" jarfile="@{jarfile}">
+        <manifest>
+          <attribute name="Application-Name" value="JalviewLite" />
+          <attribute name="Permissions" value="sandbox" />
+          <attribute name="Codebase" value="${applet.codebase}" />
+          <attribute name="Caller-Allowable-Codebase" value="${applet.caller-codebase}" />
+          <attribute name="Application-Library-Allowable-Codebase" value="${applet.codebase}" />
+               </manifest>
+         </jar>
+         </presetdef>
+         <presetdef name="applet_tl.jar">
+      <!-- build signed applet with trusted library/trusted permissions -
+                               Needs 'param name="permissions' value="all-permissions"' in applet tag
+                              j1.7_45:
+                              No mixed code warnings raised 
+                              Jmol/JalviewLite sequence/structure example doesn't link structures
+                              Raises dialog asking user to allow page to control applet via LiveConnect javascript
+                              
+                             -->
+
+           <jar update="true" index="true" jarfile="@{jarfile}">
+               <manifest>
+               <attribute name="Application-Name" value="JalviewLite"/>
+               <attribute name="Permissions" value="all-permissions" />
+               <attribute name="Codebase" value="${applet.codebase}"/>
+               <attribute name="Trusted-Only" value="true"/>
+               <attribute name="Trusted-Library" value="true"/>
+               </manifest>
+         </jar>
+
+         </presetdef>
+    <presetdef name="applet_to.jar">
+      <!-- not fully test variant (yet) -->
+      <jar update="true" index="true" jarfile="@{jarfile}">
+        <manifest>
+          <attribute name="Application-Name" value="JalviewLite" />
+          <attribute name="Permissions" value="all-permissions" />
+          <attribute name="Codebase" value="${applet.codebase}" />
+          <attribute name="Trusted-Only" value="true" />
+        </manifest>
+      </jar>
+    </presetdef>
+    <!-- create differently privileged artefacts -->
+         <copy file="${packageDir}/examples/${jalviewLiteJar}" tofile="${packageDir}/examples/tl_${jalviewLiteJar}"/>
+         <copy file="${packageDir}/examples/${jmolJar}" tofile="${packageDir}/examples/tl_${jmolJar}"/>
+    <copy file="${packageDir}/examples/${jalviewLiteJar}" tofile="${packageDir}/examples/to_${jalviewLiteJar}" />
+    <copy file="${packageDir}/examples/${jmolJar}" tofile="${packageDir}/examples/to_${jmolJar}" />
+    <copy file="${packageDir}/examples/${jalviewLiteJar}" tofile="${packageDir}/examples/s_${jalviewLiteJar}" />
+    <copy file="${packageDir}/examples/${jmolJar}" tofile="${packageDir}/examples/s_${jmolJar}" />
+    <applet.jar jarfile="${packageDir}/examples/ap_${jalviewLiteJar}" />
+    <applet.jar jarfile="${packageDir}/examples/ap_${jmolJar}" />
+         <applet_tl.jar jarfile="${packageDir}/examples/tl_${jalviewLiteJar}"/>
+         <applet_tl.jar jarfile="${packageDir}/examples/tl_${jmolJar}"/>
+    <s_applet.jar jarfile="${packageDir}/examples/${jalviewLiteJar}" />
+    <s_applet.jar jarfile="${packageDir}/examples/${jmolJar}" />
+    <applet_to.jar jarfile="${packageDir}/examples/to_${jalviewLiteJar}" />
+    <applet_to.jar jarfile="${packageDir}/examples/to_${jmolJar}" />
+    <!-- todo - write examples/downloads for alternate versions of the applet -->
     <signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false">
 
       <fileset dir="${packageDir}/examples">