Author: erinnp
Date: Fri Aug  2 17:53:50 2013
New Revision: 1509789

URL: http://svn.apache.org/r1509789
Log:
Update subresources to be singletons

Added:
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/exception/
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/exception/ResourceNotFoundException.java
      - copied, changed from r1509242, 
rave/trunk/rave-components/rave-commons/src/main/java/org/apache/rave/exception/ResourceNotFoundException.java
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/filters/NotFoundExceptionMapper.java
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/ErrorWrapperResponse.java
Modified:
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionWidgetsResource.java
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java
    
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml

Modified: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
 Fri Aug  2 17:53:50 2013
@@ -20,14 +20,11 @@
 package org.apache.rave.rest;
 
 import org.apache.rave.rest.model.Page;
-import org.apache.rave.rest.model.Region;
-import org.apache.rave.rest.model.RegionWidget;
 import org.apache.rave.rest.model.SearchResult;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import java.util.List;
 
 @Path("/pages")
 public interface PagesResource {

Modified: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionWidgetsResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionWidgetsResource.java?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionWidgetsResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionWidgetsResource.java
 Fri Aug  2 17:53:50 2013
@@ -19,14 +19,11 @@
 
 package org.apache.rave.rest;
 
-import org.apache.rave.rest.model.Page;
-import org.apache.rave.rest.model.Region;
 import org.apache.rave.rest.model.RegionWidget;
 import org.apache.rave.rest.model.SearchResult;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 
 public interface RegionWidgetsResource {
 

Modified: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java
 Fri Aug  2 17:53:50 2013
@@ -19,14 +19,11 @@
 
 package org.apache.rave.rest;
 
-import org.apache.rave.rest.model.Page;
 import org.apache.rave.rest.model.Region;
-import org.apache.rave.rest.model.RegionWidget;
 import org.apache.rave.rest.model.SearchResult;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 
 public interface RegionsResource {
 

Copied: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/exception/ResourceNotFoundException.java
 (from r1509242, 
rave/trunk/rave-components/rave-commons/src/main/java/org/apache/rave/exception/ResourceNotFoundException.java)
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/exception/ResourceNotFoundException.java?p2=rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/exception/ResourceNotFoundException.java&p1=rave/trunk/rave-components/rave-commons/src/main/java/org/apache/rave/exception/ResourceNotFoundException.java&r1=1509242&r2=1509789&rev=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-commons/src/main/java/org/apache/rave/exception/ResourceNotFoundException.java
 (original)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/exception/ResourceNotFoundException.java
 Fri Aug  2 17:53:50 2013
@@ -7,7 +7,7 @@
  * "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
+ *   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
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.rave.exception;
+package org.apache.rave.rest.exception;
 
 /**
  * Thrown when a required resource is not present

Added: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/filters/NotFoundExceptionMapper.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/filters/NotFoundExceptionMapper.java?rev=1509789&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/filters/NotFoundExceptionMapper.java
 (added)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/filters/NotFoundExceptionMapper.java
 Fri Aug  2 17:53:50 2013
@@ -0,0 +1,48 @@
+/*
+ * 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.filters;
+
+import org.apache.rave.rest.exception.ResourceNotFoundException;
+import org.apache.rave.rest.model.ErrorWrapperResponse;
+
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: erinnp
+ * Date: 8/1/13
+ * Time: 2:09 PM
+ * To change this template use File | Settings | File Templates.
+ */
+@Produces(MediaType.APPLICATION_JSON)
+public class NotFoundExceptionMapper implements 
ExceptionMapper<ResourceNotFoundException> {
+
+    @Override
+    public Response toResponse(ResourceNotFoundException e) {
+        String id = e.getMessage();
+        return Response.status(Response.Status.NOT_FOUND).entity(new 
ErrorWrapperResponse(
+                "The requested resource could not be found.",
+                "The requested resource could not be found."
+        )).build();  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+}

Added: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/ErrorWrapperResponse.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/ErrorWrapperResponse.java?rev=1509789&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/ErrorWrapperResponse.java
 (added)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/ErrorWrapperResponse.java
 Fri Aug  2 17:53:50 2013
@@ -0,0 +1,54 @@
+/*
+ * 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.model;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: erinnp
+ * Date: 8/1/13
+ * Time: 2:12 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ErrorWrapperResponse {
+    private String developerMessage;
+    private String userMessage;
+
+    public ErrorWrapperResponse(String developerMessage, String userMessage) {
+        this.developerMessage = developerMessage;
+        this.userMessage = userMessage;
+    }
+
+    public String getDeveloperMessage() {
+        return developerMessage;
+    }
+
+    public void setDeveloperMessage(String developerMessage) {
+        this.developerMessage = developerMessage;
+    }
+
+    public String getUserMessage() {
+        return userMessage;
+    }
+
+    public void setUserMessage(String userMessage) {
+        this.userMessage = userMessage;
+    }
+
+}

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
 Fri Aug  2 17:53:50 2013
@@ -20,6 +20,7 @@
 package org.apache.rave.rest.impl;
 
 
+import org.apache.rave.exception.ResourceNotFoundException;
 import org.apache.rave.model.PageType;
 import org.apache.rave.portal.service.PageService;
 import org.apache.rave.rest.PagesResource;
@@ -38,6 +39,8 @@ public class DefaultPageResource impleme
     private Logger logger = LoggerFactory.getLogger(getClass());
     private PageService pageService;
 
+    private DefaultRegionsResource regionsResouce;
+
     @Override
     public SearchResult<Page> getPages() {
         SearchResult<org.apache.rave.model.Page> fromDb = pageService.getAll();
@@ -76,7 +79,10 @@ public class DefaultPageResource impleme
     public Page getPage(String id) {
         logger.debug("Retrieving page for export: " + id);
         org.apache.rave.model.Page fromDb = pageService.getPage(id);
-        //TODO: throw 404 exception if getPage returns null
+        //TODO: with a bad ID a 403 gets thrown before I hit this block. Why?
+        if(fromDb == null) {
+            throw new ResourceNotFoundException(id);
+        }
         Page responsePage =  new Page(fromDb);
 
         return responsePage;
@@ -98,12 +104,18 @@ public class DefaultPageResource impleme
     @Override
     public RegionsResource getRegionsResource(String pageId) {
         Page page = getPage(pageId);
+        regionsResouce.setPage(page);
 
-        return new DefaultRegionsResource(page);
+        return regionsResouce;
     }
 
     @Inject
     public void setPageService(PageService pageService) {
         this.pageService = pageService;
     }
+
+    @Inject
+    public void setRegionsResouce(DefaultRegionsResource regionsResouce) {
+        this.regionsResouce = regionsResouce;
+    }
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java
 Fri Aug  2 17:53:50 2013
@@ -37,13 +37,16 @@ import java.util.List;
 public class DefaultRegionWidgetsResource implements RegionWidgetsResource {
 
     private Logger logger = LoggerFactory.getLogger(getClass());
-    private static PageService pageService;
+    private PageService pageService;
 
     private Page page;
     private Region region;
 
-    public DefaultRegionWidgetsResource(Page page, Region region) {
+    public void setPage(Page page) {
         this.page = page;
+    }
+
+    public void setRegion(Region region) {
         this.region = region;
     }
 
@@ -90,7 +93,7 @@ public class DefaultRegionWidgetsResourc
     }
 
     @Inject
-    public static void setPageService(PageService pS) {
-        pageService = pS;
+    public void setPageService(PageService pageService) {
+        this.pageService = pageService;
     }
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java
 Fri Aug  2 17:53:50 2013
@@ -20,6 +20,7 @@
 package org.apache.rave.rest.impl;
 
 
+import org.apache.rave.exception.ResourceNotFoundException;
 import org.apache.rave.rest.RegionWidgetsResource;
 import org.apache.rave.rest.RegionsResource;
 import org.apache.rave.rest.model.Page;
@@ -28,6 +29,7 @@ import org.apache.rave.rest.model.Search
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.inject.Inject;
 import javax.ws.rs.core.Response;
 import java.util.List;
 
@@ -36,7 +38,9 @@ public class DefaultRegionsResource impl
     private Logger logger = LoggerFactory.getLogger(getClass());
     private Page page;
 
-    public DefaultRegionsResource(Page page) {
+    private DefaultRegionWidgetsResource regionWidgetsResource;
+
+    public void setPage(Page page) {
         this.page = page;
     }
 
@@ -65,7 +69,10 @@ public class DefaultRegionsResource impl
             }
         }
 
-        //TODO: throw a 404 exception if match == null
+        if(match == null) {
+            throw new ResourceNotFoundException(regionId);
+        }
+
         return match;
     }
 
@@ -84,7 +91,14 @@ public class DefaultRegionsResource impl
     @Override
     public RegionWidgetsResource getRegionWidgetsResource(String regionId) {
         Region region = getPageRegion(regionId);
+        regionWidgetsResource.setPage(page);
+        regionWidgetsResource.setRegion(region);
+
+        return regionWidgetsResource;
+    }
 
-        return new DefaultRegionWidgetsResource(page, region);
+    @Inject
+    public void setRegionWidgetsResource(DefaultRegionWidgetsResource 
regionWidgetsResource) {
+        this.regionWidgetsResource = regionWidgetsResource;
     }
 }

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml?rev=1509789&r1=1509788&r2=1509789&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
 Fri Aug  2 17:53:50 2013
@@ -37,9 +37,13 @@
 
     <jaxrs:server id="rave" address="/rest">
         <jaxrs:providers>
+            <!-- Exception Mappers -->
+            <ref bean="NotFoundExceptionMapper"/>
+            <!-- Custom filters -->
+            <ref bean="JsonWrapperResponseFilter"/>
+
             <bean 
class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>
             <bean class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"/>
-            <ref bean="JsonWrapperResponseFilter"/>
         </jaxrs:providers>
         <jaxrs:serviceBeans>
             <ref bean="peopleBean"/>
@@ -64,8 +68,11 @@
     </bean>
 
     <bean id="pagesBean" class="org.apache.rave.rest.impl.DefaultPageResource" 
autowire="byType" />
+    <bean id="regionsBean" 
class="org.apache.rave.rest.impl.DefaultRegionsResource" autowire="byType" />
+    <bean id="regionWidgetsBean" 
class="org.apache.rave.rest.impl.DefaultRegionWidgetsResource" 
autowire="byType" />
     <bean id="pagesForRenderBean" 
class="org.apache.rave.rest.impl.DefaultPageForRenderResource" 
autowire="byType" />
 
     <bean id="JsonWrapperResponseFilter" 
class="org.apache.rave.rest.filters.JsonWrapperResponseFilter"/>
+    <bean id="NotFoundExceptionMapper" 
class="org.apache.rave.rest.filters.NotFoundExceptionMapper"/>
 
 </beans>
\ No newline at end of file


Reply via email to