Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

AsyncBundleLoader.java 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.client.metadata;
  5. import java.util.ArrayList;
  6. import java.util.Collections;
  7. import java.util.List;
  8. public abstract class AsyncBundleLoader {
  9. public enum State {
  10. NOT_STARTED, LOADING, LOADED, ERROR;
  11. }
  12. private State state = State.NOT_STARTED;
  13. private Throwable error = null;
  14. private List<BundleLoadCallback> callbacks = new ArrayList<BundleLoadCallback>();
  15. private final String packageName;
  16. private final String[] indentifiers;
  17. public AsyncBundleLoader(String packageName, String[] indentifiers) {
  18. this.packageName = packageName;
  19. this.indentifiers = indentifiers;
  20. }
  21. protected abstract void load(TypeDataStore store);
  22. public List<BundleLoadCallback> setError(Throwable error) {
  23. assert state == State.LOADING;
  24. state = State.ERROR;
  25. this.error = error;
  26. return clearCallbacks();
  27. }
  28. public Throwable getError() {
  29. return error;
  30. }
  31. public State getState() {
  32. return state;
  33. }
  34. public List<BundleLoadCallback> getCallback() {
  35. return Collections.unmodifiableList(callbacks);
  36. }
  37. public void load(BundleLoadCallback callback, TypeDataStore store) {
  38. assert state == State.NOT_STARTED;
  39. state = State.LOADING;
  40. callbacks.add(callback);
  41. load(store);
  42. }
  43. public void addCallback(BundleLoadCallback callback) {
  44. assert state == State.LOADING;
  45. callbacks.add(callback);
  46. }
  47. public List<BundleLoadCallback> setLoaded() {
  48. assert state == State.LOADING;
  49. state = State.LOADED;
  50. return clearCallbacks();
  51. }
  52. private List<BundleLoadCallback> clearCallbacks() {
  53. List<BundleLoadCallback> callbacks = this.callbacks;
  54. this.callbacks = null;
  55. return callbacks;
  56. }
  57. public String getName() {
  58. return packageName;
  59. }
  60. public String[] getIndentifiers() {
  61. return indentifiers;
  62. }
  63. }