01: package org.apache.ojb.broker.util.sequence;
02:
03: /* Copyright 2002-2005 The Apache Software Foundation
04: *
05: * Licensed under the Apache License, Version 2.0 (the "License");
06: * you may not use this file except in compliance with the License.
07: * You may obtain a copy of the License at
08: *
09: * 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
29: AbstractSequenceManager {
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: super (broker);
38: }
39:
40: protected long getUniqueLong(FieldDescriptor field)
41: throws SequenceManagerException {
42: /*
43: arminw:
44: We need unique 'dummy keys' for new objects before storing.
45: Variable 'tempKey' is declared volatile, thus increment should be atomic
46: */
47: return ++tempKey;
48: }
49: }
|