package com.puppycrawl.tools.checkstyle.checks.indentation; //indent:0 exp:0 import java.util.AbstractMap; //indent:0 exp:0 import java.util.List; //indent:0 exp:0 import java.util.Set; //indent:0 exp:0 import java.util.concurrent.ConcurrentMap; //indent:0 exp:0 import javax.xml.bind.annotation.XmlElement; //indent:0 exp:0 /** //indent:0 exp:0 * This test-input is intended to be checked using following configuration: //indent:1 exp:1 * //indent:1 exp:1 * arrayInitIndent = 4 //indent:1 exp:1 * basicOffset = 2 //indent:1 exp:1 * braceAdjustment = 0 //indent:1 exp:1 * caseIndent = 4 //indent:1 exp:1 * forceStrictCondition = false //indent:1 exp:1 * lineWrappingIndentation = 4 //indent:1 exp:1 * tabWidth = 4 //indent:1 exp:1 * throwsIndent = 4 //indent:1 exp:1 * //indent:1 exp:1 * //indent:1 exp:1 */ //indent:1 exp:1 class LocalCache extends AbstractMap implements ConcurrentMap { //indent:0 exp:0 enum Strength { //indent:2 exp:2 /* //indent:4 exp:4 * (kevinb): If we strongly reference the value and aren't loading, we needn't wrap the //indent:5 exp:5 * value. This could save ~8 bytes per entry. //indent:5 exp:5 */ //indent:5 exp:5 STRONG { //indent:4 exp:4 Object referenceValue( //indent:6 exp:6 Segment segment, ReferenceEntry entry, int value, int weight) { //indent:10 exp:>=10 return (weight == 1) //indent:8 exp:8 ? new StrongValueReference(value) //indent:12 exp:>=12 : new WeightedStrongValueReference(value, weight); //indent:12 exp:>=12 } //indent:6 exp:6 @Override //indent:6 exp:6 List defaultEquivalence() { //indent:6 exp:6 return new java.util.ArrayList<>(); //indent:8 exp:8 } //indent:6 exp:6 @Override //indent:6 exp:6 ValueReference referenceValue(Segment segment, //indent:5 exp:5 ReferenceEntry entry, V value, int weight) { //indent:16 exp:>=10 return null; //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 SOFT { //indent:4 exp:4 Object referenceValue1( //indent:6 exp:6 Segment segment, ReferenceEntry entry, int value, int weight) { //indent:10 exp:>=10 return (weight == 1) //indent:8 exp:8 ? new SoftValueReference(segment.valueReferenceQueue, value, entry) //indent:12 exp:>=12 : new WeightedSoftValueReference(); //indent:12 exp:>=12 } //indent:6 exp:6 @Override //indent:6 exp:6 List defaultEquivalence() { //indent:6 exp:6 return new java.util.ArrayList<>(); //indent:8 exp:8 } //indent:6 exp:6 @Override Object referenceValue(Segment segment, ReferenceEntry entry, //indent:6 exp:6 V value, int weight) //indent:16 exp:>=10 { //indent:6 exp:6 return null; //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 WEAK { //indent:4 exp:4 @Override //indent:6 exp:6 Object referenceValue( //indent:6 exp:6 Segment segment, ReferenceEntry entry, V value, int weight) { //indent:10 exp:>=10 return (weight == 1) //indent:8 exp:8 ? new WeakValueReference() //indent:12 exp:>=12 : new WeightedWeakValueReference(); //indent:12 exp:>=12 } //indent:6 exp:6 @Override //indent:6 exp:6 List defaultEquivalence() { //indent:6 exp:6 return new java.util.ArrayList<>(); //indent:8 exp:8 } //indent:6 exp:6 }; //indent:4 exp:4 /** //indent:4 exp:4 * Creates a reference for the given value according to this value strength. //indent:5 exp:5 */ //indent:5 exp:5 abstract Object referenceValue( //indent:4 exp:4 Segment segment, ReferenceEntry entry, V value, int weight); //indent:8 exp:>=8 /** //indent:4 exp:4 * Returns the default equivalence strategy used to compare and hash keys or values referenced //indent:5 exp:5 * at this strength. This strategy will be used unless the user explicitly specifies an //indent:5 exp:5 * alternate strategy. //indent:5 exp:5 */ //indent:5 exp:5 abstract List defaultEquivalence(); //indent:4 exp:4 } //indent:2 exp:2 /** //indent:2 exp:2 * Creates new entries. //indent:3 exp:3 */ //indent:3 exp:3 enum EntryFactory { //indent:2 exp:2 STRONG { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 STRONG_ACCESS { //indent:4 exp:4 StrongAccessEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongAccessEntry(key, hash, next); //indent:8 exp:8 } //indent:6 exp:6 ReferenceEntry copyEntry( //indent:6 exp:6 Segment segment, ReferenceEntry original, ReferenceEntry newNext) { //indent:10 exp:>=10 return newNext; //indent:8 exp:8 } //indent:6 exp:6 {; //indent:6 exp:6 } //indent:6 exp:6 }, //indent:5 exp:5 STRONG_WRITE { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 ReferenceEntry copyEntry( //indent:6 exp:6 Segment segment, ReferenceEntry original, ReferenceEntry newNext) { //indent:10 exp:>=10 return newNext; //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 STRONG_ACCESS_WRITE { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 ReferenceEntry copyEntry( //indent:6 exp:6 Segment segment, ReferenceEntry original, ReferenceEntry newNext) { //indent:10 exp:>=10 return newNext; //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 WEAK { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 WEAK_ACCESS { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 ReferenceEntry copyEntry( //indent:6 exp:6 Segment segment, ReferenceEntry original, ReferenceEntry newNext) { //indent:10 exp:>=10 return newNext; //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 WEAK_WRITE { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 ReferenceEntry copyEntry( //indent:6 exp:6 Segment segment, ReferenceEntry original, ReferenceEntry newNext) { //indent:10 exp:>=10 return newNext; //indent:8 exp:8 } //indent:6 exp:6 }, //indent:4 exp:4 WEAK_ACCESS_WRITE { //indent:4 exp:4 StrongEntry newEntry( //indent:6 exp:6 Segment segment, K key, int hash, @XmlElement ReferenceEntry next) { //indent:10 exp:>=10 return new StrongEntry(); //indent:8 exp:8 } //indent:6 exp:6 ReferenceEntry copyEntry( //indent:6 exp:6 Segment segment, ReferenceEntry original, ReferenceEntry newNext) { //indent:10 exp:>=10 return newNext; //indent:8 exp:8 } //indent:6 exp:6 }; //indent:4 exp:4 } //indent:2 exp:2 @Override //indent:2 exp:2 public Set> entrySet() //indent:2 exp:2 { //indent:2 exp:2 return null; //indent:4 exp:4 } //indent:2 exp:2 @Override //indent:2 exp:2 public V putIfAbsent(K key, V value) //indent:2 exp:2 { //indent:2 exp:2 return null; //indent:4 exp:4 } //indent:2 exp:2 @Override //indent:2 exp:2 public boolean remove(Object key, Object value) //indent:2 exp:2 { //indent:2 exp:2 return false; //indent:4 exp:4 } //indent:2 exp:2 @Override //indent:2 exp:2 public boolean replace(K key, V oldValue, V newValue) //indent:2 exp:2 { //indent:2 exp:2 return false; //indent:4 exp:4 } //indent:2 exp:2 @Override //indent:2 exp:2 public V replace(K key, V value) //indent:2 exp:2 { //indent:2 exp:2 return null; //indent:4 exp:4 } //indent:2 exp:2 private static class ValueReference { //indent:2 exp:2 } //indent:2 exp:2 private static class ReferenceEntry { //indent:2 exp:2 } //indent:2 exp:2 private static class Segment { //indent:2 exp:2 protected Object valueReferenceQueue; //indent:4 exp:4 } //indent:2 exp:2 private static class StrongAccessEntry { //indent:2 exp:2 public StrongAccessEntry(T1 key, int hash, ReferenceEntry next) //indent:4 exp:4 { //indent:4 exp:4 } //indent:4 exp:4 } //indent:2 exp:2 private static class StrongValueReference { //indent:2 exp:2 public StrongValueReference(int value) //indent:4 exp:4 { //indent:4 exp:4 } //indent:4 exp:4 } //indent:2 exp:2 private static class WeightedStrongValueReference { //indent:2 exp:2 public WeightedStrongValueReference(int value, int weight) //indent:4 exp:4 { //indent:4 exp:4 } //indent:4 exp:4 } //indent:2 exp:2 private static class SoftValueReference { //indent:2 exp:2 public SoftValueReference(Object valueReferenceQueue, int value, //indent:4 exp:4 ReferenceEntry entry) //indent:14 exp:>=8 { //indent:4 exp:4 } //indent:4 exp:4 } //indent:2 exp:2 private static class WeightedSoftValueReference { //indent:2 exp:2 } //indent:2 exp:2 private static class WeakValueReference { //indent:2 exp:2 } //indent:2 exp:2 private static class WeightedWeakValueReference { //indent:2 exp:2 } //indent:2 exp:2 private static class StrongEntry { //indent:2 exp:2 } //indent:2 exp:2 } //indent:0 exp:0