Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.orsup.transact.nonpublic;

import org.litesoft.orsup.transact.*;

public class SucceededTransactionCommitListenerManagerImpl implements SucceededTransactionCommitListenerManagerInternalExtension
{
    private SucceededTransactionCommitListener[] mListeners = SucceededTransactionCommitListener.EMPTY_ARRAY;

    @Override
    public synchronized SucceededTransactionCommitListener[] getListeners()
    {
        return (mListeners.length == 0) ? mListeners : mListeners.clone();
    }

    @Override
    public synchronized void addListener( SucceededTransactionCommitListener pListener )
    {
        if ( pListener != null )
        {
            int zCurLen = mListeners.length;
            if ( zCurLen == 0 )
            {
                mListeners = new SucceededTransactionCommitListener[]{pListener};
            }
            else if ( -1 == findTransaction( pListener ) )
            {
                SucceededTransactionCommitListener[] zListeners = new SucceededTransactionCommitListener[zCurLen + 1];
                System.arraycopy( mListeners, 0, zListeners, 1, zCurLen );
                zListeners[0] = pListener;
                mListeners = zListeners;
            }
        }
    }

    @Override
    public synchronized boolean removeListeners( Class<? extends SucceededTransactionCommitListener> pListenerClass )
    {
        boolean rv = false;
        for ( int at; -1 != (at = findListener( pListenerClass )); )
        {
            rv = true;
            removeListener( at );
        }
        return rv;
    }

    @Override
    public synchronized boolean removeListener( SucceededTransactionCommitListener pListener )
    {
        int at = findTransaction( pListener );
        if ( at != -1 )
        {
            removeListener( at );
            return true;
        }
        return false;
    }

    @Override
    public synchronized void clearListeners()
    {
        mListeners = SucceededTransactionCommitListener.EMPTY_ARRAY;
    }

    @Override
    public synchronized SucceededTransactionCommitListener[] getRawTransactionCommitListenersArray()
    {
        return mListeners;
    }

    private int findListener( Class<? extends SucceededTransactionCommitListener> pListenerClass )
    {
        if ( pListenerClass != null )
        {
            for ( int i = mListeners.length; --i >= 0; )
            {
                if ( pListenerClass == mListeners[i].getClass() )
                {
                    return i;
                }
            }
        }
        return -1;
    }

    private int findTransaction( SucceededTransactionCommitListener pListener )
    {
        if ( pListener != null )
        {
            for ( int i = mListeners.length; --i >= 0; )
            {
                if ( pListener == mListeners[i] )
                {
                    return i;
                }
            }
        }
        return -1;
    }

    private void removeListener( int pIndex )
    {
        int ndxTo, curLength = mListeners.length;
        if ( curLength <= 1 )
        {
            mListeners = SucceededTransactionCommitListener.EMPTY_ARRAY;
            return;
        }
        SucceededTransactionCommitListener[] newAFs = new SucceededTransactionCommitListener[curLength - 1];
        for ( int ndxFrom = ndxTo = 0; ndxFrom < mListeners.length; ndxFrom++ )
        {
            if ( ndxFrom != pIndex )
            {
                newAFs[ndxTo++] = mListeners[ndxFrom];
            }
        }
        mListeners = newAFs;
    }
}

Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/orsup/transact/nonpublic/SucceededTransactionCommitListenerManagerImpl.java

Diff revisions: vs.
Revision Author Commited Message
151 Diff Diff GeorgeS picture GeorgeS Thu 17 Mar, 2011 04:16:22 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

24 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 01:51:38 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000