Implement notify without properties argument (server and client)
diff --git a/bundles/org.eclipse.rap.addons.dropdown.viewer/js/rwt/remote/Model.js b/bundles/org.eclipse.rap.addons.dropdown.viewer/js/rwt/remote/Model.js
index 2c73007..1125872 100644
--- a/bundles/org.eclipse.rap.addons.dropdown.viewer/js/rwt/remote/Model.js
+++ b/bundles/org.eclipse.rap.addons.dropdown.viewer/js/rwt/remote/Model.js
@@ -90,9 +90,13 @@
var notifyInternal = function( model, type, properties ) {
var listeners = model._.listeners[ type ];
+ var args = [ model ];
+ if( properties ) {
+ args.push( properties )
+ }
if( listeners instanceof Array ) {
for( var i = 0; listeners && i < listeners.length; i++ ) {
- listeners[ i ]( model, properties );
+ listeners[ i ].apply( listeners[ i ], args );
}
}
};
diff --git a/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/internal/Model.java b/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/internal/Model.java
index 6ef6fc3..2292234 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/internal/Model.java
+++ b/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/internal/Model.java
@@ -69,11 +69,17 @@
}
}
- public void notify( String string, JsonObject argument ) {
- notifyInternal( string, argument );
+ public void notify( String event ) {
+ notify( event, null );
+ }
+
+ public void notify( String event, JsonObject properties ) {
+ notifyInternal( event, properties );
JsonObject callProperties = new JsonObject();
- callProperties.add( "event", "foo" );
- callProperties.add( "properties", argument );
+ callProperties.add( "event", event );
+ if( properties != null ) {
+ callProperties.add( "properties", properties );
+ }
callProperties.add( "nosync", true );
remoteObject.call( "notify", callProperties );
}
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/remote/Model_Test.js b/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/remote/Model_Test.js
index 517973b..7f3a4ae 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/remote/Model_Test.js
+++ b/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/remote/Model_Test.js
@@ -88,6 +88,19 @@
assertEquals( { "foo" : "bar" }, log[ 0 ][ 1 ] );
},
+ testAddListener_NoPropertiesInListenerArguments : function() {
+ var log = [];
+ var logger = function() {
+ log.push( arguments );
+ };
+ model.addListener( "Selection", logger );
+
+ model.notify( { "event" : "Selection", "nosync" : true } );
+
+ assertEquals( 1, log[ 0 ].length );
+ assertIdentical( model, log[ 0 ][ 0 ] );
+ },
+
testAddListener_IgnoreAddTwice : function() {
var logger = TestUtil.getLogger();
model.addListener( "Selection", logger.log );
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/internal/Model_Test.java b/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/internal/Model_Test.java
index 7db0811..5cc78b7 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/internal/Model_Test.java
+++ b/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/internal/Model_Test.java
@@ -18,6 +18,7 @@
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNull;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -289,6 +290,16 @@
}
@Test
+ public void testNotify_CallServerWithourProperties() {
+ ModelListener listener = mock( ModelListener.class );
+ model.addListener( "foo", listener );
+
+ model.notify( "foo" );
+
+ verify( listener ).handleEvent( isNull( JsonObject.class ) );
+ }
+
+ @Test
public void testNotify_RenderCallNotify() {
JsonObject argument = new JsonObject();
argument.add( "arg", "value" );
@@ -302,5 +313,15 @@
verify( remoteObject ).call( eq( "notify" ), eq( expected ) );
}
+ @Test
+ public void testNotify_RenderCallNotifyWithoutProperties() {
+ model.notify( "foo" );
+
+ JsonObject expected = new JsonObject();
+ expected.add( "event", "foo" );
+ expected.add( "nosync", true );
+ verify( remoteObject ).call( eq( "notify" ), eq( expected ) );
+ }
+
}