EMMA Coverage Report (generated Wed Jun 28 22:15:27 PDT 2006)
[all classes][org.apache.derby.impl.services.reflect]

COVERAGE SUMMARY FOR SOURCE FILE [JarFileJava2.java]

nameclass, %method, %block, %line, %
JarFileJava2.java100% (1/1)80%  (8/10)75%  (85/113)76%  (22/29)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class JarFileJava2100% (1/1)80%  (8/10)75%  (85/113)76%  (22/29)
JarFileJava2 (): void 100% (1/1)100% (3/3)100% (2/2)
JarFileJava2 (String []): void 100% (1/1)100% (4/4)100% (2/2)
getEntry (String): ZipEntry 100% (1/1)100% (6/6)100% (1/1)
getNextEntry (ZipInputStream): ZipEntry 0%   (0/1)0%   (0/4)0%   (0/1)
getSigners (String, ZipEntry): Object [] 100% (1/1)63%  (33/52)62%  (8/13)
getZipOnStream (InputStream): ZipInputStream 0%   (0/1)0%   (0/5)0%   (0/1)
handleException (Exception, String): SecurityException 100% (1/1)100% (13/13)100% (2/2)
initialize (File): void 100% (1/1)100% (9/9)100% (3/3)
newJarFile (String []): JarFile 100% (1/1)100% (5/5)100% (1/1)
readData (ZipEntry, InputStream, String): byte [] 100% (1/1)100% (12/12)100% (3/3)

1/*
2 
3   Derby - Class org.apache.derby.impl.services.reflect.JarFileJava2
4 
5   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
6 
7   Licensed under the Apache License, Version 2.0 (the "License");
8   you may not use this file except in compliance with the License.
9   You may obtain a copy of the License at
10 
11      http://www.apache.org/licenses/LICENSE-2.0
12 
13   Unless required by applicable law or agreed to in writing, software
14   distributed under the License is distributed on an "AS IS" BASIS,
15   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   See the License for the specific language governing permissions and
17   limitations under the License.
18 
19 */
20 
21package org.apache.derby.impl.services.reflect;
22 
23import org.apache.derby.iapi.reference.MessageId;
24import org.apache.derby.iapi.error.StandardException;
25import org.apache.derby.iapi.services.i18n.MessageService;
26 
27import java.util.zip.ZipEntry;
28import java.util.zip.ZipInputStream;
29import java.io.IOException;
30import java.io.File;
31import java.io.InputStream;
32 
33// below are all Java2 imports.
34import java.security.cert.Certificate;
35import java.security.cert.X509Certificate;
36import java.security.GeneralSecurityException;
37 
38 
39 
40/**
41        Sub-class of JarFile for a Java2 environment that uses the
42        java.util.jar.* classes to be signature aware.
43*/
44 
45final class JarFileJava2 extends JarFile {
46 
47        JarFileJava2() {
48                super();
49        }
50 
51        JarFileJava2(String[] name) {
52                super(name);
53        }
54 
55        JarFile newJarFile(String[] name) {
56                return new JarFileJava2(name);
57        }
58 
59        void initialize(File jarFile) throws IOException {
60 
61                java.util.jar.JarFile jf = new java.util.jar.JarFile(jarFile);
62 
63                // determine if it is signed.
64                zip = jf;
65        }
66 
67        ZipEntry getEntry(String entryName) {
68                return ((java.util.jar.JarFile) zip).getJarEntry(entryName);
69        }
70        ZipInputStream getZipOnStream(InputStream in) throws IOException {
71                return new java.util.jar.JarInputStream(in);
72        }
73        ZipEntry getNextEntry(ZipInputStream in) throws IOException {
74                return ((java.util.jar.JarInputStream) in).getNextJarEntry();
75        }
76 
77        byte[] readData(ZipEntry ze, InputStream in, String className) throws IOException {
78                try {
79                        return super.readData(ze, in, className);
80                } catch (SecurityException se) {
81                        throw handleException(se, className);
82                }
83        }
84 
85        Object[] getSigners(String className, ZipEntry ze) throws IOException {
86                Exception e;
87 
88                try {
89                        Certificate[] list = ((java.util.jar.JarEntry) ze).getCertificates();
90                        if ((list == null) || (list.length == 0)) {
91                                return null;
92                        }
93 
94                        for (int i = 0; i < list.length; i++) {
95                                if (!(list[i] instanceof X509Certificate)) {
96                                        String msg = MessageService.getTextMessage(MessageId.CM_UNKNOWN_CERTIFICATE, className, getJarName());
97 
98                                        throw new SecurityException(msg);
99                                }
100 
101                                X509Certificate cert = (X509Certificate) list[i];
102 
103                                cert.checkValidity();
104                        }
105 
106                        return list;
107 
108                } catch (GeneralSecurityException gse) {
109                        // convert this into an unchecked security
110                        // exception. Unchecked as eventually it has
111                        // to pass through a method that's only throwing
112                        // ClassNotFoundException
113                        e = gse;
114                }
115                throw handleException(e, className);
116        }
117 
118        private SecurityException handleException(Exception e, String className) {
119                String msg = MessageService.getTextMessage(MessageId.CM_SECURITY_EXCEPTION, className, getJarName(), e.getLocalizedMessage());
120                return new SecurityException(msg);
121        }
122}

[all classes][org.apache.derby.impl.services.reflect]
EMMA 2.0.5312 (C) Vladimir Roubtsov