EMMA Coverage Report (generated Mon Mar 20 21:34:30 PST 2006)
[all classes][com.moesol.bindings.platform_sdk.component_services]

COVERAGE SUMMARY FOR SOURCE FILE [ComReflectInterfaceMap.java]

nameclass, %method, %block, %line, %
ComReflectInterfaceMap.java100% (1/1)67%  (2/3)97%  (83/86)94%  (17/18)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ComReflectInterfaceMap100% (1/1)67%  (2/3)97%  (83/86)94%  (17/18)
ComReflectInterfaceMap (): void 0%   (0/1)0%   (0/3)0%   (0/1)
addInterfaceAndBases (IUnknown, Set, ArrayList, Class): void 100% (1/1)100% (47/47)100% (10/10)
reflectComMap (IUnknown): ComInterfaceEntry [] 100% (1/1)100% (36/36)100% (7/7)

1/*
2 * $Id: ComReflectInterfaceMap.java,v 1.2 2005/11/30 17:44:29 hastings Exp $
3 *
4 * (c) Copyright, Moebius Solutions, Inc., 2004
5 *
6 *                       All Rights Reserved
7 *
8 * This material may be reproduced by or for the U. S. Government
9 * pursuant to the copyright license under the clause at
10 * DFARS 252.227-7014 (OCT 2001).
11 */
12package com.moesol.bindings.platform_sdk.component_services;
13 
14import java.util.ArrayList;
15import java.util.HashSet;
16import java.util.Set;
17 
18public class ComReflectInterfaceMap {
19 
20    public static ComInterfaceEntry[] reflectComMap(IUnknown java_sink) {
21        Class c = java_sink.getClass();
22        Set seen = new HashSet();
23        ArrayList al = new ArrayList();
24        Class ifaces[] = c.getInterfaces();
25        for (int i = 0; i < ifaces.length; i++) {
26                addInterfaceAndBases(java_sink, seen, al, ifaces[i]);
27        }
28        return (ComInterfaceEntry[])al.toArray(new ComInterfaceEntry[al.size()]);
29    }
30 
31        /**
32         * @param seen
33         * @param list
34         * @param iface
35         */
36        private static void addInterfaceAndBases(IUnknown java_sink, Set seen, ArrayList list, Class iface) {
37                InterfaceBuilder ib = new InterfaceBuilder(iface);
38                if (seen.contains(ib.getIID())) {
39                        return;
40                }
41                
42                Class[] super_ifaces = iface.getInterfaces();
43                for (int i = 0; i < super_ifaces.length; i++) {
44                        addInterfaceAndBases(java_sink, seen, list, super_ifaces[i]); // Should make IUnknown first.
45                }
46                
47                seen.add(ib.getIID());
48                ComInterfaceEntry e = new ComInterfaceEntry(ib.getIID(), iface, java_sink);
49                list.add(e);
50        }
51}

[all classes][com.moesol.bindings.platform_sdk.component_services]
EMMA 2.0.5312 (C) Vladimir Roubtsov