Ver código fonte

Fix missing function

Sam Jaffe 5 anos atrás
pai
commit
66f72eb4e2

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

@@ -168,6 +168,11 @@ public class ObservableController {
 		}
 	}
 	
+	public <S extends JFormattedTextField, T extends Observable, V> ObservableListener<S, T> from(
+			@NonNull final S comp, @NonNull final Function<T, V> get, @NonNull final BiConsumer<T, V> set) {
+		return new FormattedTextFieldController<>(comp, get, set, null);
+	}
+	
 	public <S extends JFormattedTextField, T extends Observable, V> ObservableListener<S, T> from(
 			@NonNull final S comp, @NonNull final Function<T, V> get, @NonNull final BiConsumer<T, V> set,
 			final V onEmpty) {

+ 15 - 8
src/test/java/org/leumasjaffe/observer/ObservableControllerTest.java

@@ -42,7 +42,9 @@ class ObservableControllerTest extends SwingTestCase {
 	@Test
 	void testThrowsOnNullForAnythingButEmptyHandler() {
 		assertThrows(NullPointerException.class,
-				() -> ObservableController.from(null, Value::get, Value::set));
+				() -> ObservableController.from((JTextField) null, Value::get, Value::set));
+		assertThrows(NullPointerException.class,
+				() -> ObservableController.<JFormattedTextField, Value, String>from(null, Value::get, Value::set));
 		assertThrows(NullPointerException.class,
 				() -> ObservableController.from(component, null, Value::set));
 		assertThrows(NullPointerException.class,
@@ -58,7 +60,7 @@ class ObservableControllerTest extends SwingTestCase {
 		assertThrows(NullPointerException.class,
 				() -> ObservableController.from((JTextField) null, Value::get, Value::set, null));
 		assertThrows(NullPointerException.class,
-				() -> ObservableController.from((JFormattedTextField) null, Value::get, Value::set, (String) null));
+				() -> ObservableController.from(null, Value::get, Value::set, (String) null));
 		assertThrows(NullPointerException.class,
 				() -> ObservableController.from(component, null, Value::set, null));
 		assertThrows(NullPointerException.class,
@@ -76,7 +78,7 @@ class ObservableControllerTest extends SwingTestCase {
 		assertDoesNotThrow(() -> ObservableController.from(component, (str, model) -> false, (comp, model) -> {}));
 		assertDoesNotThrow(() -> ObservableController.from(component, (str, model) -> false, (comp, model) -> {}, null));
 
-		assertDoesNotThrow(() -> ObservableController.from(formatted, Value::get, Value::set));
+		assertDoesNotThrow(() -> ObservableController.<JFormattedTextField, Value, String>from(formatted, Value::get, Value::set));
 		assertDoesNotThrow(() -> ObservableController.from(formatted, Value::get, Value::set, (String) null));
 	}
 
@@ -196,7 +198,8 @@ class ObservableControllerTest extends SwingTestCase {
 	@Test
 	void testFormattedAffectValueOverText() {
 		final ObservableListener<JFormattedTextField, Value> listener =
-				ObservableController.from(formatted, Value::get, Value::set);
+				ObservableController.<JFormattedTextField, Value, String>from(
+						formatted, Value::get, Value::set);
 
 		listener.setObserved(value);
 		value.set("1");
@@ -208,7 +211,8 @@ class ObservableControllerTest extends SwingTestCase {
 	@Test
 	void testFormattedManipulatingTextDoesntPropogate() {
 		final ObservableListener<JFormattedTextField, Value> listener =
-				ObservableController.from(formatted, Value::get, Value::set);
+				ObservableController.<JFormattedTextField, Value, String>from(
+						formatted, Value::get, Value::set);
 
 		listener.setObserved(value);
 		formatted.setText("1");
@@ -220,7 +224,8 @@ class ObservableControllerTest extends SwingTestCase {
 	@Test
 	void testFormattedManipulatingValuePropogates() {
 		final ObservableListener<JFormattedTextField, Value> listener =
-				ObservableController.from(formatted, Value::get, Value::set);
+				ObservableController.<JFormattedTextField, Value, String>from(
+						formatted, Value::get, Value::set);
 
 		listener.setObserved(value);
 		formatted.setValue("1");
@@ -232,7 +237,8 @@ class ObservableControllerTest extends SwingTestCase {
 	@Test
 	void testFormattedManipulatingValueDoesNothingWhenEqual() {
 		final ObservableListener<JFormattedTextField, Value> listener =
-				ObservableController.from(formatted, Value::get, Value::set);
+				ObservableController.<JFormattedTextField, Value, String>from(
+						formatted, Value::get, Value::set);
 
 		listener.setObserved(value);
 		formatted.setValue("<INIT>");
@@ -244,7 +250,8 @@ class ObservableControllerTest extends SwingTestCase {
 	@Test
 	void testFormattedManipulatingModelDoesNothingWhenEqual() {
 		final ObservableListener<JFormattedTextField, Value> listener =
-				ObservableController.from(formatted, Value::get, Value::set);
+				ObservableController.<JFormattedTextField, Value, String>from(
+						formatted, Value::get, Value::set);
 
 		listener.setObserved(value);
 		clearInvocations(formatted);