| 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; |
| } |
| } |