Kaynağa Gözat

Discard Helper object as it was not needed.
Allow interfaces to be Observables.

Sam Jaffe 8 yıl önce
ebeveyn
işleme
8c7a65700d

+ 1 - 1
pom.xml

@@ -4,7 +4,7 @@
 
   <groupId>org.leumasjaffe</groupId>
   <artifactId>observer</artifactId>
-  <version>0.1</version>
+  <version>0.2</version>
   <packaging>jar</packaging>
 
   <name>observer</name>

+ 7 - 2
src/main/lombok/org/leumasjaffe/observer/Observable.java

@@ -2,6 +2,11 @@ package org.leumasjaffe.observer;
 
 import java.util.UUID;
 
-public class Observable {
-	public final transient UUID observableId = UUID.randomUUID();
+public interface Observable {
+	public class Instance implements Observable {
+		public final transient UUID observableId = UUID.randomUUID();
+		public UUID getObservableId() { return observableId; }
+	}
+
+	UUID getObservableId();
 }

+ 5 - 5
src/main/lombok/org/leumasjaffe/observer/ObservableController.java

@@ -2,28 +2,28 @@ package org.leumasjaffe.observer;
 
 import java.util.Objects;
 import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
 import java.util.function.Consumer;
 
 import javax.swing.text.JTextComponent;
 
 import org.leumasjaffe.event.AnyActionDocumentListener;
-import org.leumasjaffe.observer.helper.Helper;
 
 import lombok.experimental.FieldDefaults;
 import lombok.AccessLevel;
 
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class ObservableController<S extends JTextComponent, T extends Observable> extends ObservableListener<S, T> {
-	Helper<T> func;
+	BiFunction<String, T, Boolean> func;
 
-	public ObservableController(final S comp, final Helper<T> func,
+	public ObservableController(final S comp, final BiFunction<String, T, Boolean> func,
 			final BiConsumer<? super S, ? super T> update) {
 		super(comp, update);
 		this.func = func;
 		AnyActionDocumentListener.skipEmpty(comp, evt -> accept( ) );
 	}
 	
-	public ObservableController(final S comp, final Helper<T> func,
+	public ObservableController(final S comp, final BiFunction<String, T, Boolean> func,
 			final BiConsumer<? super S, ? super T> update, final Consumer<T> onEmpty) {
 		super(comp, update);
 		this.func = func;
@@ -42,4 +42,4 @@ public class ObservableController<S extends JTextComponent, T extends Observable
 			ObserverDispatch.notifySubscribers( impl.getModel(), this );
 		}
 	}
-}
+}

+ 2 - 2
src/main/lombok/org/leumasjaffe/observer/ObserverDispatch.java

@@ -24,7 +24,7 @@ public class ObserverDispatch {
 	Multimap<UUID, Pair> observers = LinkedListMultimap.create();
 	
 	public void subscribe(Observable target, Object src, Subscriber sub) {
-		observers.put(target.observableId, new Pair(new WeakReference<>(src), sub));
+		observers.put(target.getObservableId(), new Pair(new WeakReference<>(src), sub));
 	}
 	
 	public void unsubscribeAll(Object src) {
@@ -33,7 +33,7 @@ public class ObserverDispatch {
 	}
 	
 	public void notifySubscribers(Observable target, Object src) {
-		observers.get(target.observableId).stream().filter( p -> p.obj.get() != src ).forEach( 
+		observers.get(target.getObservableId()).stream().filter( p -> p.obj.get() != src ).forEach( 
 				p -> p.sub.notifyUpdate() );
 	}
 }

+ 0 - 10
src/main/lombok/org/leumasjaffe/observer/helper/Helper.java

@@ -1,10 +0,0 @@
-package org.leumasjaffe.observer.helper;
-
-import java.util.function.BiFunction;
-
-import org.leumasjaffe.observer.Observable;
-
-//  @FunctionalInterface
-  public interface Helper<T extends Observable> extends BiFunction<String, T, Boolean> {
-//    public boolean update( final String str, final T ref );
-  }