blob: 98a8897f03b625ebaf8246383de48650b02b2eb5 [file] [log] [blame]
package org.apache.harmony.prefs.tests.java.util.prefs;
import java.util.prefs.PreferenceChangeEvent;
import java.util.prefs.PreferenceChangeListener;
public class MockPreferenceChangeListener implements PreferenceChangeListener {
private Object lock = new Object();
private int changed = 0;
private boolean addDispatched = false;
public static final int TEST_GET_KEY = 1;
public static final int TEST_GET_NEW_VALUE = 2;
public static final int TEST_GET_NODE = 3;
boolean result = false;
int testNum = 0;
public MockPreferenceChangeListener() {
}
public MockPreferenceChangeListener(int test) {
testNum = test;
}
public void waitForEvent() {
waitForEvent(1);
}
public void waitForEvent(int count) {
for (int i = 0; i < count; i++) {
try {
synchronized (lock) {
lock.wait(500);
}
} catch (InterruptedException e) {
}
}
}
// private Object lock = new Object();
public void preferenceChange(PreferenceChangeEvent pce) {
synchronized (lock) {
switch(testNum) {
case TEST_GET_KEY:
if(pce != null) {
if(pce.getKey().equals("key_int")) {
result = true;
}
}
break;
case TEST_GET_NEW_VALUE:
if(pce != null) {
if(pce.getNewValue().equals(new Integer(Integer.MAX_VALUE).toString())) {
result = true;
}
}
break;
case TEST_GET_NODE:
if(pce != null) {
if("mock".equals(pce.getNode().name())) {
result = true;
}
}
break;
}
changed++;
addDispatched = true;
lock.notifyAll();
}
}
public boolean getResult() {
synchronized (lock) {
if (!addDispatched) {
try {
// TODO: don't know why must add limitation
lock.wait(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
addDispatched = false;
return result;
}
}
public int getChanged() {
synchronized (lock) {
if (!addDispatched) {
try {
// TODO: don't know why must add limitation
lock.wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
addDispatched = false;
return changed;
}
}
public void reset() {
changed = 0;
result = false;
}
}