1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2002, 2014 Oracle and/or its affiliates.  All rights reserved.
5  *
6  */
7 
8 package com.sleepycat.je.test;
9 
10 import java.util.Set;
11 
12 import com.sleepycat.je.DatabaseEntry;
13 import com.sleepycat.je.DatabaseException;
14 import com.sleepycat.je.SecondaryDatabase;
15 import com.sleepycat.je.SecondaryKeyCreator;
16 import com.sleepycat.je.SecondaryMultiKeyCreator;
17 import com.sleepycat.util.test.TxnTestCase;
18 
19 /**
20  * Permutes a TxnTestCase over a boolean property for using multiple secondary
21  * keys.
22  */
23 public abstract class MultiKeyTxnTestCase extends TxnTestCase {
24 
25     boolean useMultiKey = false;
26 
27     /**
28      * Wraps a single key creator to exercise the multi-key code for tests that
29      * only create a single secondary key.
30      */
31     static class SimpleMultiKeyCreator
32         implements SecondaryMultiKeyCreator {
33 
34         private SecondaryKeyCreator keyCreator;
35 
SimpleMultiKeyCreator(SecondaryKeyCreator keyCreator)36         SimpleMultiKeyCreator(SecondaryKeyCreator keyCreator) {
37             this.keyCreator = keyCreator;
38         }
39 
createSecondaryKeys(SecondaryDatabase secondary, DatabaseEntry key, DatabaseEntry data, Set results)40         public void createSecondaryKeys(SecondaryDatabase secondary,
41                                         DatabaseEntry key,
42                                         DatabaseEntry data,
43                                         Set results)
44             throws DatabaseException {
45 
46             DatabaseEntry result = new DatabaseEntry();
47             if (keyCreator.createSecondaryKey(secondary, key, data, result)) {
48                 results.add(result);
49             }
50         }
51     }
52 }
53