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