ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/util/SoftValuesHashMap.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/util/SoftValuesHashMap.java
Status
scanned
Type
file
Name
SoftValuesHashMap.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
2709 (2.6 KB)
MD5
beeaa9a673e456732bfb82565012b956
SHA1
e86f51e61faecd8a14f2d3eb638e433c8abb6afb
SHA256
5adc98de5cda81f4be2b4366183a211caf7172f452134952e38787f21ad0adc3
SHA512

      
    
SHA1_git
a05c3ce5453cae0588821c0c658d229d33632034
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
SoftValuesHashMap.java | 2.6 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.util; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import java.lang.ref.SoftReference; import java.util.AbstractMap; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Map which stores items using SoftReference. Items can be garbage collected * and removed. It is not a general purpose cache, as it doesn't implement some * methods, and others not according to the map definition, to improve speed. * * @param <K> the key type * @param <V> the value type */ public class SoftValuesHashMap<K, V> extends AbstractMap<K, V> { private final Map<K, SoftValue<V>> map; private final ReferenceQueue<V> queue = new ReferenceQueue<>(); public SoftValuesHashMap() { map = new HashMap<>(); } @SuppressWarnings("unchecked") private void processQueue() { while (true) { Reference<? extends V> o = queue.poll(); if (o == null) { return; } SoftValue<V> k = (SoftValue<V>) o; Object key = k.key; map.remove(key); } } @Override public V get(Object key) { processQueue(); SoftReference<V> o = map.get(key); if (o == null) { return null; } return o.get(); } /** * Store the object. The return value of this method is null or a * SoftReference. * * @param key the key * @param value the value * @return null or the old object. */ @Override public V put(K key, V value) { processQueue(); SoftValue<V> old = map.put(key, new SoftValue<>(value, queue, key)); return old == null ? null : old.get(); } /** * Remove an object. * * @param key the key * @return null or the old object */ @Override public V remove(Object key) { processQueue(); SoftReference<V> ref = map.remove(key); return ref == null ? null : ref.get(); } @Override public void clear() { processQueue(); map.clear(); } @Override public Set<Entry<K, V>> entrySet() { throw new UnsupportedOperationException(); } /** * A soft reference that has a hard reference to the key. */ private static class SoftValue<T> extends SoftReference<T> { final Object key; public SoftValue(T ref, ReferenceQueue<T> q, Object key) { super(ref, q); this.key = key; } } }
Detected license expression
mpl-2.0 AND epl-1.0
Detected license expression (SPDX)
MPL-2.0 AND EPL-1.0
Percentage of license text
2.81
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors

      
    
License detections License expression License expression SPDX
mpl_2_0_and_epl_1_0-796bf8d7-f485-3520-923d-e6a4b1ecd2f3 mpl-2.0 AND epl-1.0 MPL-2.0 AND EPL-1.0
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220