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())));
+ }
+}