Search in sources :

Example 86 with ClientModelStore

use of com.canoo.dp.impl.client.legacy.ClientModelStore in project dolphin-platform by canoo.

the class TestObservableListSync method replacingObjectElementFromDolphin_shouldReplaceElement.

@Test
public void replacingObjectElementFromDolphin_shouldReplaceElement(@Mocked AbstractClientConnector connector) {
    // given :
    final ClientModelStore clientModelStore = createClientModelStore(connector);
    final BeanManager manager = createBeanManager(clientModelStore);
    final ListReferenceModel model = manager.create(ListReferenceModel.class);
    final PresentationModel sourceModel = clientModelStore.findAllPresentationModelsByType(ListReferenceModel.class.getName()).get(0);
    final PresentationModel classDescription = clientModelStore.findAllPresentationModelsByType(PlatformRemotingConstants.DOLPHIN_BEAN).get(0);
    classDescription.getAttribute("objectList").setValue(DolphinBeanConverterFactory.FIELD_TYPE_DOLPHIN_BEAN);
    final SimpleTestModel oldObject = manager.create(SimpleTestModel.class);
    final PresentationModel oldObjectModel = clientModelStore.findAllPresentationModelsByType(SimpleTestModel.class.getName()).get(0);
    final SimpleTestModel newObject = manager.create(SimpleTestModel.class);
    final List<ClientPresentationModel> models = clientModelStore.findAllPresentationModelsByType(SimpleTestModel.class.getName());
    final PresentationModel newObjectModel = oldObjectModel == models.get(1) ? models.get(0) : models.get(1);
    new PresentationModelBuilder(clientModelStore, PlatformRemotingConstants.LIST_SPLICE).withAttribute("source", sourceModel.getId()).withAttribute("attribute", "objectList").withAttribute("from", 0).withAttribute("to", 0).withAttribute("count", 1).withAttribute("0", oldObjectModel.getId()).create();
    assertThat(model.getObjectList(), is(Collections.singletonList(oldObject)));
    // when :
    new PresentationModelBuilder(clientModelStore, PlatformRemotingConstants.LIST_SPLICE).withAttribute("source", sourceModel.getId()).withAttribute("attribute", "objectList").withAttribute("pos", 0).withAttribute("from", 0).withAttribute("to", 1).withAttribute("count", 1).withAttribute("0", newObjectModel.getId()).create();
    // then :
    assertThat(model.getObjectList(), is(Collections.singletonList(newObject)));
    assertThat(clientModelStore.findAllPresentationModelsByType(PlatformRemotingConstants.LIST_SPLICE), empty());
}
Also used : PresentationModel(com.canoo.dp.impl.remoting.legacy.core.PresentationModel) ClientPresentationModel(com.canoo.dp.impl.client.legacy.ClientPresentationModel) SimpleTestModel(com.canoo.dolphin.client.util.SimpleTestModel) ClientPresentationModel(com.canoo.dp.impl.client.legacy.ClientPresentationModel) ListReferenceModel(com.canoo.dolphin.client.util.ListReferenceModel) ClientModelStore(com.canoo.dp.impl.client.legacy.ClientModelStore) BeanManager(com.canoo.platform.remoting.BeanManager) Test(org.testng.annotations.Test) AbstractDolphinBasedTest(com.canoo.dolphin.client.util.AbstractDolphinBasedTest)

Example 87 with ClientModelStore

use of com.canoo.dp.impl.client.legacy.ClientModelStore in project dolphin-platform by canoo.

the class TestPropertyChange method testWithSimpleModel.

@Test
public void testWithSimpleModel(@Mocked AbstractClientConnector connector) {
    final ClientModelStore clientModelStore = createClientModelStore(connector);
    final EventDispatcher dispatcher = createEventDispatcher(clientModelStore);
    final BeanRepository repository = createBeanRepository(clientModelStore, dispatcher);
    final BeanManager manager = createBeanManager(clientModelStore, repository, dispatcher);
    final SimpleTestModel model = manager.create(SimpleTestModel.class);
    final ListerResults<String> results = new ListerResults<>();
    ValueChangeListener<String> myListener = new ValueChangeListener<String>() {

        @Override
        public void valueChanged(ValueChangeEvent<? extends String> evt) {
            Assert.assertEquals(evt.getSource(), model.getTextProperty());
            results.newValue = evt.getNewValue();
            results.oldValue = evt.getOldValue();
            results.listenerCalls++;
        }
    };
    final Subscription subscription = model.getTextProperty().onChanged(myListener);
    assertThat(results.listenerCalls, is(0));
    assertThat(results.newValue, nullValue());
    assertThat(results.oldValue, nullValue());
    model.getTextProperty().set("Hallo Property");
    assertThat(results.listenerCalls, is(1));
    assertThat(results.newValue, is("Hallo Property"));
    assertThat(results.oldValue, nullValue());
    results.listenerCalls = 0;
    model.getTextProperty().set("Hallo Property2");
    assertThat(results.listenerCalls, is(1));
    assertThat(results.newValue, is("Hallo Property2"));
    assertThat(results.oldValue, is("Hallo Property"));
    results.listenerCalls = 0;
    model.getTextProperty().set(null);
    assertThat(results.listenerCalls, is(1));
    assertThat(results.newValue, nullValue());
    assertThat(results.oldValue, is("Hallo Property2"));
    results.listenerCalls = 0;
    subscription.unsubscribe();
    model.getTextProperty().set("Hallo Property3");
    assertThat(results.listenerCalls, is(0));
    assertThat(results.newValue, nullValue());
    assertThat(results.oldValue, is("Hallo Property2"));
}
Also used : ValueChangeEvent(com.canoo.platform.remoting.ValueChangeEvent) EventDispatcher(com.canoo.dp.impl.remoting.EventDispatcher) ValueChangeListener(com.canoo.platform.remoting.ValueChangeListener) BeanRepository(com.canoo.dp.impl.remoting.BeanRepository) SimpleTestModel(com.canoo.dolphin.client.util.SimpleTestModel) Subscription(com.canoo.platform.core.functional.Subscription) ClientModelStore(com.canoo.dp.impl.client.legacy.ClientModelStore) BeanManager(com.canoo.platform.remoting.BeanManager) Test(org.testng.annotations.Test) AbstractDolphinBasedTest(com.canoo.dolphin.client.util.AbstractDolphinBasedTest)

Example 88 with ClientModelStore

use of com.canoo.dp.impl.client.legacy.ClientModelStore in project dolphin-platform by canoo.

the class TestPropertyChange method testWithSingleReferenceModel.

@Test
public void testWithSingleReferenceModel(@Mocked AbstractClientConnector connector) {
    final ClientModelStore clientModelStore = createClientModelStore(connector);
    final EventDispatcher dispatcher = createEventDispatcher(clientModelStore);
    final BeanRepository repository = createBeanRepository(clientModelStore, dispatcher);
    final BeanManager manager = createBeanManager(clientModelStore, repository, dispatcher);
    final SimpleTestModel ref1 = manager.create(SimpleTestModel.class);
    final SimpleTestModel ref2 = manager.create(SimpleTestModel.class);
    final SimpleTestModel ref3 = manager.create(SimpleTestModel.class);
    final SingleReferenceModel model = manager.create(SingleReferenceModel.class);
    final ListerResults<SimpleTestModel> results = new ListerResults<>();
    final ValueChangeListener<SimpleTestModel> myListener = new ValueChangeListener<SimpleTestModel>() {

        @Override
        public void valueChanged(ValueChangeEvent<? extends SimpleTestModel> evt) {
            Assert.assertEquals(evt.getSource(), model.getReferenceProperty());
            results.newValue = evt.getNewValue();
            results.oldValue = evt.getOldValue();
            results.listenerCalls++;
        }
    };
    final Subscription subscription = model.getReferenceProperty().onChanged(myListener);
    assertThat(results.listenerCalls, is(0));
    assertThat(results.newValue, nullValue());
    assertThat(results.oldValue, nullValue());
    model.getReferenceProperty().set(ref1);
    assertThat(results.listenerCalls, is(1));
    assertThat(results.newValue, is(ref1));
    assertThat(results.oldValue, nullValue());
    results.listenerCalls = 0;
    model.getReferenceProperty().set(ref2);
    assertThat(results.listenerCalls, is(1));
    assertThat(results.newValue, is(ref2));
    assertThat(results.oldValue, is(ref1));
    results.listenerCalls = 0;
    model.getReferenceProperty().set(null);
    assertThat(results.listenerCalls, is(1));
    assertThat(results.newValue, nullValue());
    assertThat(results.oldValue, is(ref2));
    results.listenerCalls = 0;
    subscription.unsubscribe();
    model.getReferenceProperty().set(ref3);
    assertThat(results.listenerCalls, is(0));
    assertThat(results.newValue, nullValue());
    assertThat(results.oldValue, is(ref2));
}
Also used : SingleReferenceModel(com.canoo.dolphin.client.util.SingleReferenceModel) ValueChangeEvent(com.canoo.platform.remoting.ValueChangeEvent) EventDispatcher(com.canoo.dp.impl.remoting.EventDispatcher) ValueChangeListener(com.canoo.platform.remoting.ValueChangeListener) BeanRepository(com.canoo.dp.impl.remoting.BeanRepository) SimpleTestModel(com.canoo.dolphin.client.util.SimpleTestModel) Subscription(com.canoo.platform.core.functional.Subscription) ClientModelStore(com.canoo.dp.impl.client.legacy.ClientModelStore) BeanManager(com.canoo.platform.remoting.BeanManager) Test(org.testng.annotations.Test) AbstractDolphinBasedTest(com.canoo.dolphin.client.util.AbstractDolphinBasedTest)

Example 89 with ClientModelStore

use of com.canoo.dp.impl.client.legacy.ClientModelStore in project dolphin-platform by canoo.

the class TestPropertyChange method testWithInheritedModel.

@Test
public void testWithInheritedModel(@Mocked AbstractClientConnector connector) {
    final ClientModelStore clientModelStore = createClientModelStore(connector);
    final EventDispatcher dispatcher = createEventDispatcher(clientModelStore);
    final BeanRepository repository = createBeanRepository(clientModelStore, dispatcher);
    final BeanManager manager = createBeanManager(clientModelStore, repository, dispatcher);
    final ChildModel model = manager.create(ChildModel.class);
    final ListerResults<String> childResults = new ListerResults<>();
    ValueChangeListener<String> childListener = new ValueChangeListener<String>() {

        @Override
        public void valueChanged(ValueChangeEvent<? extends String> evt) {
            Assert.assertEquals(evt.getSource(), model.getChildProperty());
            childResults.newValue = evt.getNewValue();
            childResults.oldValue = evt.getOldValue();
            childResults.listenerCalls++;
        }
    };
    final ListerResults<String> parentResults = new ListerResults<>();
    ValueChangeListener<String> parentListener = new ValueChangeListener<String>() {

        @Override
        public void valueChanged(ValueChangeEvent<? extends String> evt) {
            Assert.assertEquals(evt.getSource(), model.getParentProperty());
            parentResults.newValue = evt.getNewValue();
            parentResults.oldValue = evt.getOldValue();
            parentResults.listenerCalls++;
        }
    };
    model.getChildProperty().onChanged(childListener);
    model.getParentProperty().onChanged(parentListener);
    assertThat(childResults.listenerCalls, is(0));
    assertThat(childResults.newValue, nullValue());
    assertThat(childResults.oldValue, nullValue());
    assertThat(parentResults.listenerCalls, is(0));
    assertThat(parentResults.newValue, nullValue());
    assertThat(parentResults.oldValue, nullValue());
    model.getChildProperty().set("Hallo Property");
    assertThat(childResults.listenerCalls, is(1));
    assertThat(childResults.newValue, is("Hallo Property"));
    assertThat(childResults.oldValue, nullValue());
    assertThat(parentResults.listenerCalls, is(0));
    assertThat(parentResults.newValue, nullValue());
    assertThat(parentResults.oldValue, nullValue());
    childResults.listenerCalls = 0;
    childResults.newValue = null;
    childResults.oldValue = null;
    model.getParentProperty().set("Hallo Property2");
    assertThat(childResults.listenerCalls, is(0));
    assertThat(childResults.newValue, nullValue());
    assertThat(childResults.oldValue, nullValue());
    assertThat(parentResults.listenerCalls, is(1));
    assertThat(parentResults.newValue, is("Hallo Property2"));
    assertThat(parentResults.oldValue, nullValue());
}
Also used : ValueChangeEvent(com.canoo.platform.remoting.ValueChangeEvent) EventDispatcher(com.canoo.dp.impl.remoting.EventDispatcher) ValueChangeListener(com.canoo.platform.remoting.ValueChangeListener) BeanRepository(com.canoo.dp.impl.remoting.BeanRepository) ChildModel(com.canoo.dolphin.client.util.ChildModel) ClientModelStore(com.canoo.dp.impl.client.legacy.ClientModelStore) BeanManager(com.canoo.platform.remoting.BeanManager) Test(org.testng.annotations.Test) AbstractDolphinBasedTest(com.canoo.dolphin.client.util.AbstractDolphinBasedTest)

Example 90 with ClientModelStore

use of com.canoo.dp.impl.client.legacy.ClientModelStore in project dolphin-platform by canoo.

the class ClientContextFactoryImpl method create.

/**
 * Create a {@link ClientContext} based on the given configuration. This method doesn't block and returns a
 * {@link CompletableFuture} to receive its result. If the {@link ClientContext} can't be created the
 * {@link CompletableFuture#get()} will throw a {@link ClientInitializationException}.
 *
 * @param clientConfiguration the configuration
 * @return the future
 */
public ClientContext create(final ClientConfiguration clientConfiguration, final URI endpoint) {
    Assert.requireNonNull(clientConfiguration, "clientConfiguration");
    final HttpClient httpClient = PlatformClient.getService(HttpClient.class);
    final HttpURLConnectionHandler clientSessionCheckResponseHandler = new StrictClientSessionResponseHandler(endpoint);
    httpClient.addResponseHandler(clientSessionCheckResponseHandler);
    final Function<ClientModelStore, AbstractClientConnector> connectionProvider = s -> {
        return new DolphinPlatformHttpClientConnector(endpoint, clientConfiguration, s, OptimizedJsonCodec.getInstance(), e -> {
        }, httpClient);
    };
    return new ClientContextImpl(clientConfiguration, endpoint, connectionProvider, PlatformClient.getService(ClientSessionStore.class));
}
Also used : ClientModelStore(com.canoo.dp.impl.client.legacy.ClientModelStore) Assert(com.canoo.dp.impl.platform.core.Assert) ClientContextFactory(com.canoo.platform.remoting.client.ClientContextFactory) HttpClient(com.canoo.platform.core.http.HttpClient) AbstractClientConnector(com.canoo.dp.impl.client.legacy.communication.AbstractClientConnector) CompletableFuture(java.util.concurrent.CompletableFuture) API(org.apiguardian.api.API) ClientContext(com.canoo.platform.remoting.client.ClientContext) ClientInitializationException(com.canoo.platform.remoting.client.ClientInitializationException) Function(java.util.function.Function) INTERNAL(org.apiguardian.api.API.Status.INTERNAL) PlatformClient(com.canoo.platform.client.PlatformClient) HttpURLConnectionHandler(com.canoo.platform.core.http.HttpURLConnectionHandler) StrictClientSessionResponseHandler(com.canoo.dp.impl.platform.client.session.StrictClientSessionResponseHandler) URI(java.net.URI) ClientSessionStore(com.canoo.platform.client.session.ClientSessionStore) OptimizedJsonCodec(com.canoo.dp.impl.remoting.codec.OptimizedJsonCodec) ClientConfiguration(com.canoo.platform.client.ClientConfiguration) StrictClientSessionResponseHandler(com.canoo.dp.impl.platform.client.session.StrictClientSessionResponseHandler) ClientSessionStore(com.canoo.platform.client.session.ClientSessionStore) HttpClient(com.canoo.platform.core.http.HttpClient) ClientModelStore(com.canoo.dp.impl.client.legacy.ClientModelStore) HttpURLConnectionHandler(com.canoo.platform.core.http.HttpURLConnectionHandler) AbstractClientConnector(com.canoo.dp.impl.client.legacy.communication.AbstractClientConnector)

Aggregations

ClientModelStore (com.canoo.dp.impl.client.legacy.ClientModelStore)97 Test (org.testng.annotations.Test)94 AbstractDolphinBasedTest (com.canoo.dolphin.client.util.AbstractDolphinBasedTest)92 BeanManager (com.canoo.platform.remoting.BeanManager)91 ClientPresentationModel (com.canoo.dp.impl.client.legacy.ClientPresentationModel)82 PresentationModel (com.canoo.dp.impl.remoting.legacy.core.PresentationModel)76 ListReferenceModel (com.canoo.dolphin.client.util.ListReferenceModel)65 BeanRepository (com.canoo.dp.impl.remoting.BeanRepository)25 EventDispatcher (com.canoo.dp.impl.remoting.EventDispatcher)25 SimpleTestModel (com.canoo.dolphin.client.util.SimpleTestModel)17 Attribute (com.canoo.dp.impl.remoting.legacy.core.Attribute)13 SimpleAnnotatedTestModel (com.canoo.dolphin.client.util.SimpleAnnotatedTestModel)5 ChildModel (com.canoo.dolphin.client.util.ChildModel)4 SingleReferenceModel (com.canoo.dolphin.client.util.SingleReferenceModel)4 DefaultModelSynchronizer (com.canoo.dp.impl.client.legacy.DefaultModelSynchronizer)4 ValueChangeEvent (com.canoo.platform.remoting.ValueChangeEvent)4 ValueChangeListener (com.canoo.platform.remoting.ValueChangeListener)4 Command (com.canoo.dp.impl.remoting.legacy.communication.Command)3 Subscription (com.canoo.platform.core.functional.Subscription)3 ComplexDataTypesModel (com.canoo.dolphin.client.util.ComplexDataTypesModel)2