You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2013/11/11 21:16:46 UTC

svn commit: r1540829 - in /rave/trunk/rave-components/rave-core/src: main/java/org/apache/rave/rest/impl/DefaultWidgetsResource.java test/java/org/apache/rave/rest/impl/DefaultWidgetsResourceTest.java

Author: mfranklin
Date: Mon Nov 11 20:16:46 2013
New Revision: 1540829

URL: http://svn.apache.org/r1540829
Log:
Created new Widget Service implementation (RAVE-1077)

Added:
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultWidgetsResource.java
    rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/rest/impl/DefaultWidgetsResourceTest.java

Added: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultWidgetsResource.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultWidgetsResource.java?rev=1540829&view=auto
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultWidgetsResource.java (added)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultWidgetsResource.java Mon Nov 11 20:16:46 2013
@@ -0,0 +1,85 @@
+package org.apache.rave.rest.impl;
+
+
+import com.google.common.collect.Lists;
+import com.google.inject.Inject;
+import org.apache.rave.portal.model.impl.WidgetImpl;
+import org.apache.rave.portal.service.WidgetService;
+import org.apache.rave.rest.WidgetsResource;
+import org.apache.rave.rest.exception.ResourceNotFoundException;
+import org.apache.rave.rest.model.SearchResult;
+import org.apache.rave.rest.model.Widget;
+
+import java.util.List;
+
+public class DefaultWidgetsResource implements WidgetsResource {
+
+    private WidgetService widgetService;
+
+    @Override
+    public SearchResult<Widget> getWidgets() {
+        SearchResult<org.apache.rave.model.Widget> fromDb = widgetService.getAll();
+        List<Widget> widget = convert(fromDb.getResultSet());
+        return new SearchResult<Widget>(widget, fromDb.getTotalResults());
+    }
+
+    @Override
+    public Widget getWidget(String id) {
+        org.apache.rave.model.Widget widget = getFromService(id);
+        return new Widget(widget);
+    }
+
+    @Override
+    public Widget updateWidget(String id, Widget widget) {
+        org.apache.rave.model.Widget fromDb = getFromService(id);
+        updateProperties(widget, fromDb);
+        widgetService.updateWidget(fromDb);
+        return new Widget(getFromService(id));
+    }
+
+    @Override
+    public Widget createWidget(Widget widget) {
+        WidgetImpl toDb = new WidgetImpl();
+        toDb.setId(widget.getId());
+        updateProperties(widget, toDb);
+        return new Widget(widgetService.registerNewWidget(toDb));
+    }
+
+    @Inject
+    public void setWidgetService(WidgetService widgetService) {
+        this.widgetService = widgetService;
+    }
+
+
+    private List<Widget> convert(List<org.apache.rave.model.Widget> resultSet) {
+        List<Widget> widgets = Lists.newArrayListWithExpectedSize(resultSet.size());
+        for(org.apache.rave.model.Widget widget: resultSet) {
+            widgets.add(new Widget(widget));
+        }
+        return widgets;
+    }
+
+    private org.apache.rave.model.Widget getFromService(String id) {
+        org.apache.rave.model.Widget widget = widgetService.getWidget(id);
+        if(widget == null) {
+            throw new ResourceNotFoundException("Could not find widget with ID " + id);
+        }
+        return widget;
+    }
+
+    private void updateProperties(Widget widget, org.apache.rave.model.Widget fromDb) {
+        fromDb.setTitle(widget.getTitle());
+        fromDb.setTitleUrl(widget.getTitleUrl());
+        fromDb.setUrl(widget.getUrl());
+        fromDb.setThumbnailUrl(widget.getThumbnailUrl());
+        fromDb.setScreenshotUrl(widget.getScreenshotUrl());
+        fromDb.setType(widget.getType());
+        fromDb.setAuthor(widget.getAuthor());
+        fromDb.setAuthorEmail(widget.getAuthorEmail());
+        fromDb.setDescription(widget.getDescription());
+        fromDb.setWidgetStatus(widget.getStatus());
+        fromDb.setDisableRendering(widget.isDisable());
+        fromDb.setDisableRenderingMessage(widget.getDisabledMessage());
+        fromDb.setFeatured(widget.isFeatured());
+    }
+}

Added: rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/rest/impl/DefaultWidgetsResourceTest.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/rest/impl/DefaultWidgetsResourceTest.java?rev=1540829&view=auto
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/rest/impl/DefaultWidgetsResourceTest.java (added)
+++ rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/rest/impl/DefaultWidgetsResourceTest.java Mon Nov 11 20:16:46 2013
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rave.rest.impl;
+
+
+import com.google.common.collect.Lists;
+import org.apache.rave.model.Widget;
+import org.apache.rave.model.WidgetStatus;
+import org.apache.rave.portal.model.impl.WidgetImpl;
+import org.apache.rave.portal.service.WidgetService;
+import org.apache.rave.rest.WidgetsResource;
+import org.apache.rave.rest.exception.ResourceNotFoundException;
+import org.apache.rave.rest.model.SearchResult;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public class DefaultWidgetsResourceTest {
+
+    private WidgetService service;
+    private WidgetsResource resource;
+    private Widget w1, w2, w3;
+
+    @Before
+    public void setup() {
+        service = createMock(WidgetService.class);
+        resource = new DefaultWidgetsResource();
+        ((DefaultWidgetsResource)resource).setWidgetService(service);
+        w1 = new WidgetImpl("1", "http://example.com/1");
+        w1.setTitle("title");
+        w1.setTitleUrl("http://example.com/title");
+        w1.setThumbnailUrl("http://example.com/thumbnail");
+        w1.setScreenshotUrl("http://example.com/screenshot");
+        w1.setType("W3C");
+        w1.setAuthor("author");
+        w1.setAuthorEmail("authorEmail");
+        w1.setDescription("Desscription");
+        w1.setWidgetStatus(WidgetStatus.PUBLISHED);
+        w1.setDisableRendering(true);
+        w1.setDisableRenderingMessage("");
+        w1.setFeatured(true);
+        w2 = new WidgetImpl("2", "http://example.com/2");
+        w3 = new WidgetImpl("1", "http://example.com/2");
+    }
+
+    @Test
+    public void getAll() {
+        List<Widget> widgets = Lists.newArrayList(w1, w2);
+        SearchResult<Widget> result = new SearchResult<Widget>(widgets, widgets.size());
+        expect(service.getAll()).andReturn(result);
+        replay(service);
+
+        SearchResult<org.apache.rave.rest.model.Widget> resourceResult = resource.getWidgets();
+        assertThat(resourceResult.getTotalResults(), is(equalTo(widgets.size())));
+        assertThat(resourceResult.getResultSet().get(0).getId(), is(equalTo(w1.getId())));
+        assertThat(resourceResult.getResultSet().get(1).getId(), is(equalTo(w2.getId())));
+    }
+    
+    @Test
+    public void getById_exists() {
+        expect(service.getWidget(w1.getId())).andReturn(w1);
+        replay(service);
+
+        org.apache.rave.rest.model.Widget widget = resource.getWidget(w1.getId());
+        validate(widget, w1);
+    }
+
+    @Test(expected = ResourceNotFoundException.class)
+    public void getById_notExists() {
+        expect(service.getWidget(w1.getId())).andReturn(null);
+        replay(service);
+
+        org.apache.rave.rest.model.Widget widget = resource.getWidget(w1.getId());
+    }
+
+    @Test
+    public void update() {
+        expect(service.getWidget(w1.getId())).andReturn(w3).times(1);
+        service.updateWidget(w1);
+        expectLastCall();
+        expect(service.getWidget(w1.getId())).andReturn(w1).times(1);
+        replay(service);
+
+        org.apache.rave.rest.model.Widget widget = resource.updateWidget(w1.getId(), new org.apache.rave.rest.model.Widget(w1));
+        validate(widget, w1);
+    }
+
+    @Test
+    public void create() {
+        expect(service.registerNewWidget(w1)).andReturn(w1).times(1);
+        replay(service);
+
+        org.apache.rave.rest.model.Widget widget = resource.createWidget(new org.apache.rave.rest.model.Widget(w1));
+        validate(widget, w1);
+    }
+
+    private void validate(org.apache.rave.rest.model.Widget widget, Widget source) {
+        assertThat(widget.getId(), is(equalTo(source.getId())));
+        assertThat(widget.getUrl(), is(equalTo(source.getUrl())));
+        assertThat(widget.getTitle(), is(equalTo(source.getTitle())));
+        assertThat(widget.getTitleUrl(), is(equalTo(source.getTitleUrl())));
+        assertThat(widget.getThumbnailUrl(), is(equalTo(source.getThumbnailUrl())));
+        assertThat(widget.getScreenshotUrl(), is(equalTo(source.getScreenshotUrl())));
+        assertThat(widget.getType(), is(equalTo(source.getType())));
+        assertThat(widget.getAuthor(), is(equalTo(source.getAuthor())));
+        assertThat(widget.getAuthorEmail(), is(equalTo(source.getAuthorEmail())));
+        assertThat(widget.getDescription(), is(equalTo(source.getDescription())));
+        assertThat(widget.getStatus(), is(equalTo(source.getWidgetStatus())));
+        assertThat(widget.isDisable(), is(equalTo(source.isDisableRendering())));
+        assertThat(widget.getDisabledMessage(), is(equalTo(source.getDisableRenderingMessage())));
+        assertThat(widget.isFeatured(), is(equalTo(source.isFeatured())));
+    }
+}