1
0
espelhamento de https://github.com/eclipse-aspectj/aspectj.git sincronizado 2024-08-17 14:10:58 +02:00
org.aspectj/tests/bugs154/pr176991/AspectJBugTestCase.java

92 linhas
1.9 KiB
Java
Original Visão normal Histórico

2007-11-28 12:19:32 +01:00
package com.ihg.dec.framework.commons.utils.cow;
import java.util.AbstractSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;
public class AspectJBugTestCase {
class Value<V> {
private V value;
public Value(V value) {
this.value = value;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
class EntrySetEntry<K, V> implements Entry<K, V> {
private Entry<K, Value<V>> wrapped;
public EntrySetEntry(Entry<K, Value<V>> wrapped) {
this.wrapped = wrapped;
}
public K getKey() {
return wrapped.getKey();
}
public V getValue() {
return wrapped.getValue().getValue();
}
public V setValue(V value) {
Value<V> old = wrapped.setValue(new Value<V>(value));
return old == null ? null : old.getValue();
}
}
class EntrySetIterator<K, V> implements Iterator<Entry<K, V>> {
private Iterator<Entry<K, Value<V>>> wrapped;
public EntrySetIterator(Iterator<Entry<K, Value<V>>> wrapped) {
this.wrapped = wrapped;
}
public boolean hasNext() {
return wrapped.hasNext();
}
public Entry<K, V> next() {
return new EntrySetEntry<K, V>(wrapped.next());
}
public void remove() {
throw new UnsupportedOperationException("Not implemented.");
}
}
class EntrySet<K, V> extends AbstractSet<Entry<K, V>> implements
Set<Entry<K, V>> {
private Set<Entry<K, Value<V>>> wrapped;
public EntrySet(Set<Entry<K, Value<V>>> wrapped) {
this.wrapped = wrapped;
}
@Override
public Iterator<Entry<K, V>> iterator() {
return new EntrySetIterator<K, V>(wrapped.iterator());
}
@Override
public int size() {
return wrapped.size();
}
}
public void testIt() {
new EntrySet<String, String>( new HashSet<Entry<String, Value<String>>>());
}
}
aspect X {
declare parents: *.Entry* implements java.io.Serializable;
}