KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > ojb > broker > util > sequence > SequenceManagerTransientImpl


1 package org.apache.ojb.broker.util.sequence;
2
3 /* Copyright 2002-2005 The Apache Software Foundation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 import org.apache.ojb.broker.PersistenceBroker;
19 import org.apache.ojb.broker.metadata.FieldDescriptor;
20
21 /**
22  * For internal use only!
23  * This class is used to create transient primary key values for transient
24  * {@link org.apache.ojb.broker.Identity} objects.
25  *
26  * @version $Id: SequenceManagerTransientImpl.java,v 1.1.2.3 2005/12/21 22:28:41 tomdz Exp $
27  */

28 public class SequenceManagerTransientImpl extends AbstractSequenceManager
29 {
30     /*
31      Use keyword 'volatile' to make decrement of a long value an
32      atomic operation
33      */

34     private static volatile long tempKey = 1000;
35
36     public SequenceManagerTransientImpl(PersistenceBroker broker)
37     {
38         super(broker);
39     }
40
41     protected long getUniqueLong(FieldDescriptor field) throws SequenceManagerException
42     {
43         /*
44         arminw:
45         We need unique 'dummy keys' for new objects before storing.
46         Variable 'tempKey' is declared volatile, thus increment should be atomic
47         */

48         return ++tempKey;
49     }
50 }
51
Popular Tags