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

COVERAGE SUMMARY FOR SOURCE FILE [ShExLockable.java]

nameclass, %method, %block, %line, %
ShExLockable.java100% (1/1)100% (6/6)36%  (43/118)64%  (14/22)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ShExLockable100% (1/1)100% (6/6)36%  (43/118)64%  (14/22)
ShExLockable (): void 100% (1/1)100% (3/3)100% (2/2)
lockAttributes (int, Hashtable): boolean 100% (1/1)22%  (6/27)33%  (2/6)
lockEvent (Latch): void 100% (1/1)26%  (5/19)67%  (2/3)
lockerAlwaysCompatible (): boolean 100% (1/1)100% (2/2)100% (1/1)
requestCompatible (Object, Object): boolean 100% (1/1)46%  (22/48)71%  (5/7)
unlockEvent (Latch): void 100% (1/1)26%  (5/19)67%  (2/3)

1/*
2 
3   Derby - Class org.apache.derby.iapi.services.locks.ShExLockable
4 
5   Copyright 1998, 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.iapi.services.locks;
22 
23import org.apache.derby.iapi.services.locks.Lockable;
24import org.apache.derby.iapi.services.locks.Latch;
25import org.apache.derby.iapi.services.locks.VirtualLockTable;
26 
27import org.apache.derby.iapi.services.sanity.SanityManager;
28 
29import java.util.Hashtable;
30 
31public class ShExLockable implements Lockable
32{
33 
34        public ShExLockable()
35        {                
36        }
37 
38        /** @see Lockable#lockerAlwaysCompatible */
39        public boolean lockerAlwaysCompatible()
40        {
41                return true;
42        }
43 
44        /** @see Lockable#requestCompatible */
45        public boolean requestCompatible(Object requestedQualifier,
46                                                                                        Object grantedQualifier)
47        {
48                if (SanityManager.DEBUG)
49                {
50                        if (!(requestedQualifier instanceof ShExQual))
51                                SanityManager.THROWASSERT(
52                                "requestedQualifier is a " +
53                                requestedQualifier.getClass().getName() +
54                                "instead of a ShExQual.");
55 
56                        if (!(grantedQualifier instanceof ShExQual))
57                                SanityManager.THROWASSERT(
58                                "grantedQualifier is a " +
59                                grantedQualifier.getClass().getName() +
60                                "instead of a ShExQual.");
61                }
62 
63                ShExQual requested = (ShExQual) requestedQualifier;
64                ShExQual granted = (ShExQual) grantedQualifier;
65 
66                return (requested.getLockState() == ShExQual.SHARED) &&
67                                (granted.getLockState() == ShExQual.SHARED);
68        }
69 
70        /** @see Lockable#lockEvent */
71        public void lockEvent(Latch lockInfo)
72        {
73                if (SanityManager.DEBUG)
74                {
75                        if (!(lockInfo.getQualifier() instanceof ShExQual))
76                                SanityManager.THROWASSERT("qualifier is a " + lockInfo.getQualifier().getClass().getName() +
77                                "instead of a ShExQual.");
78                }
79        }
80 
81        /** @see Lockable#unlockEvent */
82        public void unlockEvent(Latch lockInfo)
83        {
84                if (SanityManager.DEBUG)
85                {
86                        if (!(lockInfo.getQualifier() instanceof ShExQual))
87                                SanityManager.THROWASSERT("qualifier is a " + lockInfo.getQualifier().getClass().getName() +
88                                "instead of a ShExQual.");
89                }
90        }
91 
92    /**
93     * This lockable want to participate in the Virtual LockTable
94     * when we want to print LATCH information.
95     * Any lockable object which DOES NOT want to participate should
96     * override this function.
97     */
98        public boolean lockAttributes(int flag, Hashtable attributes)
99        {
100        if((flag & VirtualLockTable.SHEXLOCK) == 0)
101            return false;
102        // No containerId, but need something in there so it can print
103                attributes.put(VirtualLockTable.CONTAINERID, new Long(-1) ); 
104 
105                attributes.put(VirtualLockTable.LOCKNAME, this.toString() );
106 
107                attributes.put(VirtualLockTable.LOCKTYPE, "ShExLockable");
108 
109                return true;
110        }
111 
112}

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