Author: drazzib
Date: 2012-06-03 13:58:49 +0000 (Sun, 03 Jun 2012)
New Revision: 16089

Added:
   trunk/ca-certificates-java/Exceptions.java
   trunk/ca-certificates-java/UpdateCertificatesTest.java
Modified:
   trunk/ca-certificates-java/
   trunk/ca-certificates-java/UpdateCertificates.java
   trunk/ca-certificates-java/debian/changelog
   trunk/ca-certificates-java/debian/control
   trunk/ca-certificates-java/debian/copyright
   trunk/ca-certificates-java/debian/jks-keystore.hook.in
   trunk/ca-certificates-java/debian/postinst.in
   trunk/ca-certificates-java/debian/rules
Log:
* Use javahelper as buildsystem:
  - d/control: Add Build-Depends on javahelper.
  - d/rules: Use jh_build to call javac.
* Create a testsuite for this package:
  - Refactor UpdateCertificates code to send exceptions instead of
    System.exit(1).
  - New testsuite: UpdateCertificatesTest.
  - d/control: Build-Depends on junit4.
  - d/rules: Launch junit after build and handle "nocheck" option in
    DEB_BUILD_OPTIONS.


Property changes on: trunk/ca-certificates-java
___________________________________________________________________
Added: svn:ignore
   + bin
.classpath
.project


Added: trunk/ca-certificates-java/Exceptions.java
===================================================================
--- trunk/ca-certificates-java/Exceptions.java                          (rev 0)
+++ trunk/ca-certificates-java/Exceptions.java  2012-06-03 13:58:49 UTC (rev 
16089)
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2012 Damien Raude-Morvan <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+/**
+ * Custom exceptions used by {@link UpdateCertificates}
+ * 
+ * @author Damien Raude-Morvan <[email protected]>
+ */
+public class Exceptions {
+       
+       /**
+        * Data send in stdin is invalid (neither "+" or "-" command).
+        */
+       public static class UnknownInput extends Exception {
+               private static final long serialVersionUID = 
5698253678856993527L;
+               public UnknownInput(final String message) {
+                       super(message);
+               }
+
+       }
+
+       /**
+        * Unable to save keystore to provided location. 
+        */
+       public static class UnableToSaveKeystore extends Exception {
+               private static final long serialVersionUID = 
3632154306237688490L;
+               public UnableToSaveKeystore(final String message, final 
Exception e) {
+                       super(message, e);
+               }
+
+       }
+
+       /**
+        * Unable to open keystore from provided location (might be an invalid 
password
+        * or IO error).
+        */
+       public static class InvalidKeystorePassword extends Exception {
+               private static final long serialVersionUID = 
7004201816889107694L;
+               public InvalidKeystorePassword(final String message, final 
Exception e) {
+                       super(message, e);
+               }
+
+       }
+
+}

Modified: trunk/ca-certificates-java/UpdateCertificates.java
===================================================================
--- trunk/ca-certificates-java/UpdateCertificates.java  2012-06-02 15:27:49 UTC 
(rev 16088)
+++ trunk/ca-certificates-java/UpdateCertificates.java  2012-06-03 13:58:49 UTC 
(rev 16089)
@@ -1,9 +1,6 @@
 /*
  * Copyright (C) 2011 Torsten Werner <[email protected]>
- * 
- * This code is a re-implementation of the idea from Ludwig Nussel found in
- * http://gitorious.org/opensuse/ca-certificates/blobs/master/keystore.java
- * for the Debian operating system. It updates the global JVM keystore.
+ * Copyright (C) 2012 Damien Raude-Morvan <[email protected]>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -30,14 +27,28 @@
 import java.io.Reader;
 import java.security.GeneralSecurityException;
 import java.security.KeyStore;
+import java.security.KeyStoreException;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateFactory;
 
+/**
+ * This code is a re-implementation of the idea from Ludwig Nussel found in
+ * http://gitorious.org/opensuse/ca-certificates/blobs/master/keystore.java
+ * for the Debian operating system. It updates the global JVM keystore.
+ * 
+ * @author Torsten Werner
+ * @author Damien Raude-Morvan
+ */
 public class UpdateCertificates {
-    private static char[] password = null;
-    private static KeyStore keystore = null;
-    private static CertificateFactory certFactory = null;
+       
+    private char[] password = null;
     
+    private String ksFilename = null;
+    
+    private KeyStore ks = null;
+    
+    private CertificateFactory certFactory = null;
+    
     public static void main(String[] args) throws IOException, 
GeneralSecurityException {
         String passwordString = "changeit";
         if (args.length == 2 && args[0].equals("-storepass")) {
@@ -47,28 +58,43 @@
             System.err.println("Usage: java UpdateCertificates [-storepass 
<password>]");
             System.exit(1);
         }
-        password = passwordString.toCharArray();
-        keystore = createKeyStore();
-        certFactory = CertificateFactory.getInstance("X.509");
-        // Force reading of inputstream int UTF-8
-        processChanges(new InputStreamReader(System.in, "UTF8"));
-        writeKeyStore();
+
+               try {
+                       UpdateCertificates uc = new 
UpdateCertificates(passwordString, "/etc/ssl/certs/java/cacerts");
+               // Force reading of inputstream in UTF-8
+               uc.processChanges(new InputStreamReader(System.in, "UTF8"));
+               uc.writeKeyStore();
+               } catch (Exceptions.InvalidKeystorePassword e) {
+                       e.printStackTrace(System.err);
+                       System.exit(1);
+               } catch (Exceptions.UnableToSaveKeystore e) {
+                       e.printStackTrace(System.err);
+                       System.exit(1);
+               }
     }
+    
+    public UpdateCertificates(final String passwordString, final String 
keystoreFile) throws IOException, GeneralSecurityException, 
Exceptions.InvalidKeystorePassword {
+        this.password = passwordString.toCharArray();
+        this.ksFilename = keystoreFile;
+        this.ks = openKeyStore();
+        this.certFactory = CertificateFactory.getInstance("X.509");
+       }
 
-    private static KeyStore createKeyStore() throws GeneralSecurityException, 
IOException {
+    /**
+     * Try to open a existing keystore or create an new one.
+     */
+    private KeyStore openKeyStore() throws GeneralSecurityException, 
IOException, Exceptions.InvalidKeystorePassword {
         KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
-        File certInputFile = new File ("/etc/ssl/certs/java/cacerts");
+        File certInputFile = new File(this.ksFilename);
         FileInputStream certInputStream = null;
         if (certInputFile.canRead()) {
             certInputStream = new FileInputStream(certInputFile);
         }
         try {
-            ks.load(certInputStream, password);
+            ks.load(certInputStream, this.password);
         }
         catch (IOException e) {
-            System.err.println("Cannot open Java keystore. Is the password 
correct? Message:\n  " +
-                e.getMessage());
-            System.exit(1);
+            throw new Exceptions.InvalidKeystorePassword("Cannot open Java 
keystore. Is the password correct?", e);
         }
         if (certInputStream != null) {
             certInputStream.close();
@@ -76,40 +102,40 @@
         return ks;
     }
     
-    private static void processChanges(Reader reader)
+    /**
+     * Until reader EOF, try to read changes and send each to {@link 
#parseLine(String)}.
+     */
+    protected void processChanges(final Reader reader)
             throws IOException, GeneralSecurityException {
         String line;
         BufferedReader bufferedStdinReader = new BufferedReader(reader);
         while((line = bufferedStdinReader.readLine()) != null) {
-            parseLine(line);
+               try {
+                       parseLine(line);
+               } catch (Exceptions.UnknownInput e) {
+                       System.err.println("Unknown input: " + line);
+                       // Keep processing for others lines
+               }
         }
     }
     
-    private static void deleteAlias(String alias) throws 
GeneralSecurityException {
-        if (keystore.containsAlias(alias)) {
-            System.out.println("Removing " + alias);
-            keystore.deleteEntry(alias);
-        }
-    }
-    
-    private static void parseLine(String line)
-            throws GeneralSecurityException, IOException {
+    /**
+     * Parse given line to choose between {@link #addAlias(String, 
Certificate)}
+     * or {@link #deleteAlias(String)}.
+     */
+    protected void parseLine(final String line)
+            throws GeneralSecurityException, IOException, 
Exceptions.UnknownInput {
+       assert this.ks != null;
+       
         String path = line.substring(1);
         String filename = path.substring(path.lastIndexOf("/") + 1);
         String alias = "debian:" + filename;
         if(line.startsWith("+")) {
-            Certificate cert = createCertificate(path);
+            Certificate cert = loadCertificate(path);
             if (cert == null) {
                 return;
             }
-            if(keystore.containsAlias(alias)) {
-                System.out.println("Replacing " + alias);
-                keystore.deleteEntry(alias);
-            }
-            else {
-                System.out.println("Adding " + alias);
-            }
-            keystore.setCertificateEntry(alias, cert);
+            addAlias(alias, cert);
         }
         else if (line.startsWith("-")) {
             deleteAlias(alias);
@@ -118,15 +144,58 @@
             deleteAlias(filename);
         }
         else {
-            System.err.println("Unknown input: " + line);
+               throw new Exceptions.UnknownInput(line);
         }        
     }
+    
+    /**
+     * Delete cert in keystore at given alias.
+     */
+    private void deleteAlias(final String alias) throws 
GeneralSecurityException {
+       assert this.ks != null;
+       
+        if (contains(alias)) {
+            System.out.println("Removing " + alias);
+            this.ks.deleteEntry(alias);
+        }
+    }
 
-    private static Certificate createCertificate(String path) {
+    /**
+     * Add or replace existing cert in keystore with given alias.
+     */
+       private void addAlias(final String alias, final Certificate cert)
+                       throws KeyStoreException {
+               assert this.ks != null;
+               
+               if(contains(alias)) {
+                   System.out.println("Replacing " + alias);
+                   this.ks.deleteEntry(alias);
+               }
+               else {
+                   System.out.println("Adding " + alias);
+               }
+               this.ks.setCertificateEntry(alias, cert);
+       }
+
+       /**
+        * Returns true when alias exist in keystore.
+        */
+       protected boolean contains(String alias) throws KeyStoreException {
+               assert this.ks != null;
+               
+               return this.ks.containsAlias(alias);
+       }
+
+       /**
+        * Try to load a certificate instance from given path.
+        */
+    private Certificate loadCertificate(final String path) {
+       assert this.certFactory != null;
+       
         Certificate cert = null;
         try {
             FileInputStream certFile = new FileInputStream(path);
-            cert = certFactory.generateCertificate(certFile);
+            cert = this.certFactory.generateCertificate(certFile);
             certFile.close();
         }
         catch (Exception e) {
@@ -136,16 +205,19 @@
         return cert;
     }
     
-    private static void writeKeyStore() throws GeneralSecurityException {
+    /**
+     * Write actual keystore content to disk.
+     */
+    protected void writeKeyStore() throws GeneralSecurityException, 
Exceptions.UnableToSaveKeystore {
+       assert this.ks != null;
+       
         try {
-            FileOutputStream certOutputFile = new 
FileOutputStream("/etc/ssl/certs/java/cacerts");
-            keystore.store(certOutputFile, password);
+            FileOutputStream certOutputFile = new 
FileOutputStream(this.ksFilename);
+            this.ks.store(certOutputFile, this.password);
             certOutputFile.close();
         }
         catch (IOException e) {
-            System.err.println("There was a problem saving the new Java 
keystore. Message:\n  " +
-                e.getMessage());
-            System.exit(1);
+               throw new Exceptions.UnableToSaveKeystore("There was a problem 
saving the new Java keystore.", e);
         }
     }
 }

Added: trunk/ca-certificates-java/UpdateCertificatesTest.java
===================================================================
--- trunk/ca-certificates-java/UpdateCertificatesTest.java                      
        (rev 0)
+++ trunk/ca-certificates-java/UpdateCertificatesTest.java      2012-06-03 
13:58:49 UTC (rev 16089)
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2012 Damien Raude-Morvan <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests for {@link UpdateCertificates}.
+ * 
+ * @author Damien Raude-Morvan
+ */
+public class UpdateCertificatesTest {
+
+       private static final String ALIAS_CACERT = "debian:cacert.org.crt";
+       private static final String INVALID_CACERT = 
"x/usr/share/ca-certificates/cacert.org/cacert.org.crt";
+       private static final String REMOVE_CACERT = 
"-/usr/share/ca-certificates/cacert.org/cacert.org.crt";
+       private static final String ADD_CACERT = 
"+/usr/share/ca-certificates/cacert.org/cacert.org.crt";
+
+       private String ksFilename = null;
+       private String ksPassword = null;
+
+       @Before
+       public void start() {
+               this.ksFilename = "./tests-cacerts";
+               this.ksPassword = "changeit";
+               // Delete any previous file
+               File keystore = new File(this.ksFilename);
+               keystore.delete();
+       }
+
+       /**
+        * Test a simple open then write without any modification.
+        */
+       @Test
+       public void testNoop() throws IOException, GeneralSecurityException,
+                       Exceptions.InvalidKeystorePassword, 
Exceptions.UnableToSaveKeystore {
+               UpdateCertificates uc = new UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               uc.writeKeyStore();
+       }
+
+       /**
+        * Test a to open a keystore and write without any modification
+        * and then try to open it again with wrong password : will throw a
+        * InvalidKeystorePassword
+        */
+       @Test
+       public void testWriteThenOpenWrongPwd() throws IOException,
+                       GeneralSecurityException, 
Exceptions.UnableToSaveKeystore {
+               try {
+                       UpdateCertificates uc = new 
UpdateCertificates(this.ksPassword,
+                                       this.ksFilename);
+                       uc.writeKeyStore();
+               } catch (Exceptions.InvalidKeystorePassword e) {
+                       Assert.fail();
+               }
+
+               try {
+                       UpdateCertificates uc = new 
UpdateCertificates("wrongpassword",
+                                       this.ksFilename);
+                       Assert.fail();
+                       uc.writeKeyStore();
+               } catch (Exceptions.InvalidKeystorePassword e) {
+                       Assert.assertEquals(
+                                       "Cannot open Java keystore. Is the 
password correct?",
+                                       e.getMessage());
+               }
+       }
+
+       /**
+        * Test a to open a keystore then remove its backing File (and replace 
it
+        * with a directory with the same name) and try to write in to disk :
+        * will throw an UnableToSaveKeystore
+        */
+       @Test
+       public void testDeleteThenWrite() throws IOException,
+                       GeneralSecurityException, 
Exceptions.InvalidKeystorePassword {
+               try {
+                       UpdateCertificates uc = new 
UpdateCertificates(this.ksPassword,
+                                       this.ksFilename);
+
+                       // Replace actual file by a directory !
+                       File keystore = new File(this.ksFilename);
+                       keystore.delete();
+                       keystore.mkdir();
+
+                       // Will fail with some IOException
+                       uc.writeKeyStore();
+                       Assert.fail();
+               } catch (Exceptions.UnableToSaveKeystore e) {
+                       Assert.assertEquals(
+                                       "There was a problem saving the new 
Java keystore.",
+                                       e.getMessage());
+               }
+       }
+
+       /**
+        * Try to send an invalid command ("x") in parseLine : throw 
UnknownInput
+        */
+       @Test
+       public void testWrongCommand() throws IOException,
+                       GeneralSecurityException, 
Exceptions.InvalidKeystorePassword {
+               UpdateCertificates uc = new UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               try {
+                       uc.parseLine(INVALID_CACERT);
+                       Assert.fail();
+               } catch (Exceptions.UnknownInput e) {
+                       Assert.assertEquals(INVALID_CACERT, e.getMessage());
+               }
+       }
+
+       /**
+        * Test to insert a valid certificate and then check if it's really in 
KS.
+        */
+       @Test
+       public void testAdd() throws IOException, GeneralSecurityException,
+                       Exceptions.UnknownInput, 
Exceptions.InvalidKeystorePassword,
+                       Exceptions.UnableToSaveKeystore {
+               UpdateCertificates uc = new UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               uc.parseLine(ADD_CACERT);
+               uc.writeKeyStore();
+
+               Assert.assertEquals(true, uc.contains(ALIAS_CACERT));
+       }
+
+       /**
+        * Test to insert a invalide certificate : no exception, but check there
+        * is no alias created with that name
+        */
+       @Test
+       public void testAddInvalidCert() throws IOException,
+                       GeneralSecurityException, Exceptions.UnknownInput,
+                       Exceptions.InvalidKeystorePassword, 
Exceptions.UnableToSaveKeystore {
+               UpdateCertificates uc = new UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               uc.parseLine("+/usr/share/ca-certificates/null.crt");
+               uc.writeKeyStore();
+
+               Assert.assertEquals(false, uc.contains("debian:null.crt"));
+       }
+
+       /**
+        * Try to add same certificate multiple time : we replace it and
+        * there is only one alias.
+        */
+       @Test
+       public void testReplace() throws IOException, GeneralSecurityException,
+                       Exceptions.UnknownInput, 
Exceptions.InvalidKeystorePassword,
+                       Exceptions.UnableToSaveKeystore {
+               UpdateCertificates uc = new UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               uc.parseLine(ADD_CACERT);
+               uc.parseLine(ADD_CACERT);
+               uc.writeKeyStore();
+
+               Assert.assertEquals(true, uc.contains(ALIAS_CACERT));
+       }
+
+       /**
+        * Try to remove a non-existant certificate : it's a no-op.
+        */
+       @Test
+       public void testRemove() throws IOException, GeneralSecurityException,
+                       Exceptions.UnknownInput, 
Exceptions.InvalidKeystorePassword,
+                       Exceptions.UnableToSaveKeystore {
+               UpdateCertificates uc = new UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               uc.parseLine(REMOVE_CACERT);
+               uc.writeKeyStore();
+
+               // We start with empty KS, so it shouldn't do anything
+               Assert.assertEquals(false, uc.contains(ALIAS_CACERT));
+       }
+
+       /**
+        * Try to add cert, write to disk, then open keystore again and remove.
+        */
+       @Test
+       public void testAddThenRemove() throws IOException,
+                       GeneralSecurityException, Exceptions.UnknownInput,
+                       Exceptions.InvalidKeystorePassword, 
Exceptions.UnableToSaveKeystore {
+               UpdateCertificates ucAdd = new 
UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               ucAdd.parseLine(ADD_CACERT);
+               ucAdd.writeKeyStore();
+
+               Assert.assertEquals(true, ucAdd.contains(ALIAS_CACERT));
+
+               UpdateCertificates ucRemove = new 
UpdateCertificates(this.ksPassword,
+                               this.ksFilename);
+               ucRemove.parseLine(REMOVE_CACERT);
+               ucRemove.writeKeyStore();
+
+               Assert.assertEquals(false, ucRemove.contains(ALIAS_CACERT));
+       }
+
+}

Modified: trunk/ca-certificates-java/debian/changelog
===================================================================
--- trunk/ca-certificates-java/debian/changelog 2012-06-02 15:27:49 UTC (rev 
16088)
+++ trunk/ca-certificates-java/debian/changelog 2012-06-03 13:58:49 UTC (rev 
16089)
@@ -1,3 +1,18 @@
+ca-certificates-java (20120603) unstable; urgency=low
+
+  * Use javahelper as buildsystem:
+    - d/control: Add Build-Depends on javahelper.
+    - d/rules: Use jh_build to call javac.
+  * Create a testsuite for this package:
+    - Refactor UpdateCertificates code to send exceptions instead of
+      System.exit(1).
+    - New testsuite: UpdateCertificatesTest.
+    - d/control: Build-Depends on junit4.
+    - d/rules: Launch junit after build and handle "nocheck" option in
+      DEB_BUILD_OPTIONS.
+
+ -- Damien Raude-Morvan <[email protected]>  Sun, 03 Jun 2012 12:10:26 +0200
+
 ca-certificates-java (20120524) unstable; urgency=low
 
   [ Marc Deslauriers ]

Modified: trunk/ca-certificates-java/debian/control
===================================================================
--- trunk/ca-certificates-java/debian/control   2012-06-02 15:27:49 UTC (rev 
16088)
+++ trunk/ca-certificates-java/debian/control   2012-06-03 13:58:49 UTC (rev 
16089)
@@ -2,8 +2,10 @@
 Section: java
 Priority: optional
 Maintainer: Debian Java Maintainers 
<[email protected]>
-Uploaders: Matthias Klose <[email protected]>, Torsten Werner 
<[email protected]>, Damien Raude-Morvan <[email protected]>
-Build-Depends: debhelper (>= 6), default-jdk
+Uploaders: Matthias Klose <[email protected]>,
+           Torsten Werner <[email protected]>,
+           Damien Raude-Morvan <[email protected]>
+Build-Depends: debhelper (>= 6), default-jdk, javahelper, junit4
 Standards-Version: 3.9.3
 Vcs-Svn: svn://svn.debian.org/svn/pkg-java/trunk/ca-certificates-java
 Vcs-Browser: http://svn.debian.org/wsvn/pkg-java/trunk/ca-certificates-java/
@@ -11,9 +13,11 @@
 Package: ca-certificates-java
 Architecture: all
 Multi-Arch: foreign
-Depends: ca-certificates (>= 20090814), openjdk-6-jre-headless (>= 
6b16-1.6.1-2) | java6-runtime-headless, ${misc:Depends}, ${nss:Depends}
+Depends: ca-certificates (>= 20090814),
+         openjdk-6-jre-headless (>= 6b16-1.6.1-2) | java6-runtime-headless,
+         ${misc:Depends},
+         ${nss:Depends}
 # We need a versioned Depends due to multiarch changes (bug #635571).
-#Recommends: libnss3-1d
 Description: Common CA certificates (JKS keystore)
  This package uses the hooks of the ca-certificates package to update the
  cacerts JKS keystore used for many java runtimes.

Modified: trunk/ca-certificates-java/debian/copyright
===================================================================
--- trunk/ca-certificates-java/debian/copyright 2012-06-02 15:27:49 UTC (rev 
16088)
+++ trunk/ca-certificates-java/debian/copyright 2012-06-03 13:58:49 UTC (rev 
16089)
@@ -1,12 +1,12 @@
 This package was debianized by Matthias Klose <[email protected]>
 on Mon, 02 Jun 2008 14:52:46 +0000.
 
-Authors: 
+Authors:
 
     Matthias Klose <[email protected]>
     Torsten Werner <[email protected]>
 
-Copyright: 
+Copyright:
 
     Copyright (C) 2008 Canonical Ltd
     Copyright (C) 2011 Torsten Werner <[email protected]>

Modified: trunk/ca-certificates-java/debian/jks-keystore.hook.in
===================================================================
--- trunk/ca-certificates-java/debian/jks-keystore.hook.in      2012-06-02 
15:27:49 UTC (rev 16088)
+++ trunk/ca-certificates-java/debian/jks-keystore.hook.in      2012-06-03 
13:58:49 UTC (rev 16089)
@@ -13,6 +13,7 @@
 fi
 
 arch=`dpkg --print-architecture`
+JAR=/usr/share/ca-certificates-java/ca-certificates-java.jar
 
 echo ""
 if [ "$cacerts_updates" != yes ] || [ "$CACERT_UPDATES" = disabled ]; then
@@ -68,10 +69,7 @@
     fi
 }
 
-CLASSPATH=/usr/share/ca-certificates-java
-export CLASSPATH
-
-if java UpdateCertificates -storepass "$storepass"; then
+if java -jar $JAR -storepass "$storepass"; then
     do_cleanup
 else
     do_cleanup

Modified: trunk/ca-certificates-java/debian/postinst.in
===================================================================
--- trunk/ca-certificates-java/debian/postinst.in       2012-06-02 15:27:49 UTC 
(rev 16088)
+++ trunk/ca-certificates-java/debian/postinst.in       2012-06-03 13:58:49 UTC 
(rev 16089)
@@ -13,6 +13,7 @@
 fi
 
 arch=`dpkg --print-architecture`
+JAR=/usr/share/ca-certificates-java/ca-certificates-java.jar
 
 setup_path()
 {
@@ -24,9 +25,6 @@
     done
     export JAVA_HOME=/usr/lib/jvm/$jvm
     PATH=$JAVA_HOME/bin:$PATH
-
-    CLASSPATH=/usr/share/ca-certificates-java
-    export CLASSPATH
 }
 
 first_install()
@@ -42,7 +40,7 @@
     # Forcibly remove diginotar cert (LP: #920758)
     if [ -n "$FIXOLD" ]; then
         echo -e "-diginotar_root_ca\n-diginotar_root_ca_pem" | \
-        java UpdateCertificates -storepass "$storepass"
+        java -jar $JAR -storepass "$storepass"
     fi
 
     find /etc/ssl/certs -name \*.pem | \
@@ -55,7 +53,7 @@
         fi
         echo "+${filename}"
     done | \
-    java UpdateCertificates -storepass "$storepass"
+    java -jar $JAR -storepass "$storepass"
     echo "done."
 }
 

Modified: trunk/ca-certificates-java/debian/rules
===================================================================
--- trunk/ca-certificates-java/debian/rules     2012-06-02 15:27:49 UTC (rev 
16088)
+++ trunk/ca-certificates-java/debian/rules     2012-06-03 13:58:49 UTC (rev 
16089)
@@ -13,7 +13,13 @@
 endif
 
 JAVA_HOME := /usr/lib/jvm/default-java
+export JAVA_HOME
+OPTS := --no-javadoc --main=UpdateCertificates --javacopts="-source 1.6 
-target 1.6"
+CLASSPATH := /usr/share/java/junit4.jar
+export CLASSPATH
 
+do_junit = $(if $(findstring nocheck,$(DEB_BUILD_OPTIONS)),,yes)
+
 d = debian/ca-certificates-java
 
 build-arch: build
@@ -21,13 +27,19 @@
 build: build-stamp
 build-stamp:
        dh_testdir
-       $(JAVA_HOME)/bin/javac -source 1.6 -target 1.6 UpdateCertificates.java
+       jh_build $(OPTS) ca-certificates-java.jar .
+ifeq ($(do_junit),yes)
+       $(JAVA_HOME)/bin/java -cp 
/usr/share/java/junit4.jar:./ca-certificates-java.jar \
+       org.junit.runner.JUnitCore \
+       UpdateCertificatesTest
+endif
        touch $@
 
 clean:
        dh_testdir
        dh_testroot
-       $(RM) build-stamp UpdateCertificates.class
+       jh_build --clean
+       $(RM) build-stamp
        dh_clean
        for f in debian/*.in; do \
          f2=$$(echo $$f | sed ';s/\.in$$//'); \
@@ -37,7 +49,7 @@
 install: build
        dh_testdir
        dh_testroot
-       dh_clean -k 
+       dh_prep
        dh_installdirs \
                usr/share/ca-certificates-java \
                etc/default \
@@ -52,7 +64,7 @@
                $(d)/etc/ca-certificates/update.d/jks-keystore
        install -m600 debian/default \
                $(d)/etc/default/cacerts
-       dh_install UpdateCertificates.class /usr/share/ca-certificates-java/
+       dh_install ca-certificates-java.jar /usr/share/ca-certificates-java/
 
 # Build architecture-independent files here.
 binary-indep: build install


_______________________________________________
pkg-java-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to