View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License.
18   *
19   */
20  package org.apache.directory.mavibot.btree;
21  
22  
23  /**
24   * A In-Memory Value holder. The value is always present in memory.
25   * 
26   * @param <K> The type of the BTree key
27   * @param <V> The type of the BTree value
28   *
29   * @author <a href="mailto:labs@labs.apache.org">Mavibot labs Project</a>
30   */
31  public class MemoryHolder<K, V> implements ElementHolder<V, K, V>
32  {
33      /** The BTree */
34      private BTree<K, V> btree;
35  
36      /** The reference to the Value instance, or null if it's not present */
37      private V value;
38  
39  
40      /**
41       * Create a new holder storing an offset and a SoftReference containing the value.
42       * 
43       * @param offset The offset in disk for this value
44       * @param value The value to store into a SoftReference
45       */
46      public MemoryHolder( BTree<K, V> btree, V value )
47      {
48          this.btree = btree;
49          this.value = value;
50      }
51  
52  
53      /**
54       * {@inheritDoc}
55       */
56      @Override
57      public V getValue( BTree<K, V> btree )
58      {
59          return value;
60      }
61  
62  
63      /**
64       * @see Object#toString()
65       */
66      public String toString()
67      {
68          StringBuilder sb = new StringBuilder();
69  
70          sb.append( "'" );
71  
72          V value = getValue( btree );
73  
74          sb.append( value );
75  
76          sb.append( "'" );
77  
78          return sb.toString();
79      }
80  }