You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by jc...@apache.org on 2011/05/20 15:24:36 UTC
svn commit: r1125374 - in /incubator/rave/trunk/rave-portal: ./
src/main/java/org/apache/rave/portal/model/
src/main/java/org/apache/rave/portal/web/api/
src/main/java/org/apache/rave/portal/web/model/ src/main/webapp/WEB-INF/
Author: jcian
Date: Fri May 20 13:24:35 2011
New Revision: 1125374
URL: http://svn.apache.org/viewvc?rev=1125374&view=rev
Log:
Checking in work in progress on RAVE-27 so Matt can get going with some work he's waiting to start. In this commit:
-- First bits of a restful Rave API based on Spring 3.0 MVC
-- Plumbing required for the Spring 3.0 MVC based web services
-- First bits of code for persisting RegionWidget user preferences
https://issues.apache.org/jira/browse/RAVE-27
Added:
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/RegionWidgetApi.java
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/WidgetApi.java
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/model/
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/model/RegionWidgetPreferenceListWrapper.java
Modified:
incubator/rave/trunk/rave-portal/pom.xml
incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java
incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
Modified: incubator/rave/trunk/rave-portal/pom.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/pom.xml?rev=1125374&r1=1125373&r2=1125374&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/pom.xml (original)
+++ incubator/rave/trunk/rave-portal/pom.xml Fri May 20 13:24:35 2011
@@ -98,11 +98,19 @@ if needed you can specify it on the comm
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
+
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-openid</artifactId>
<version>${org.springframework.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-oxm</artifactId>
+ <version>${org.springframework.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.openid4java</groupId>
<artifactId>openid4java-consumer</artifactId>
@@ -110,6 +118,13 @@ if needed you can specify it on the comm
<type>pom</type>
</dependency>
+ <!-- Jackson JSON Mapper -->
+ <dependency>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-mapper-asl</artifactId>
+ <version>1.8.1</version>
+ </dependency>
+
<!--Persistence-->
<dependency>
<groupId>org.apache.openjpa</groupId>
Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java?rev=1125374&r1=1125373&r2=1125374&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java Fri May 20 13:24:35 2011
@@ -19,6 +19,7 @@
package org.apache.rave.portal.model;
import javax.persistence.*;
+import java.util.Collection;
/**
* A widget within a region
@@ -41,6 +42,9 @@ public class RegionWidget {
@Basic @Column(name="collapsed")
private boolean collapsed;
+ @OneToMany(fetch = FetchType.EAGER)
+ @JoinColumn(name = "region_widget_id")
+ private Collection<RegionWidgetPreference> preferences;
/**
* Gets the persistence unique identifier
@@ -99,4 +103,17 @@ public class RegionWidget {
public void setCollapsed(boolean collapsed) {
this.collapsed = collapsed;
}
+
+ /**
+ * Gets the collection of user defined preferences for this RegionWidget.
+ *
+ * @return The user defined preferences for this RegionWidget.
+ */
+ public Collection<RegionWidgetPreference> getPreferences() {
+ return preferences;
+ }
+
+ public void setPreferences(Collection<RegionWidgetPreference> preferences) {
+ this.preferences = preferences;
+ }
}
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java?rev=1125374&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java (added)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java Fri May 20 13:24:35 2011
@@ -0,0 +1,93 @@
+/*
+ * 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.portal.model;
+
+import javax.persistence.*;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * A preference for a region widget.
+ */
+@Entity
+@Table(name = "region_widget_preference")
+@SequenceGenerator(name = "regionWidgetPrefIdSeq", sequenceName = "region_widget_pref_id_seq")
+@XmlRootElement
+public class RegionWidgetPreference {
+ @Id
+ @Column(name = "id")
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "regionWidgetPrefIdSeq")
+ private Long id;
+
+ @Basic
+ @Column(name = "name")
+ private String name;
+
+ @Basic
+ @Column(name = "value")
+ private String value;
+
+ /**
+ * Gets the persistence unique identifier
+ *
+ * @return id The ID of persisted object; null if not persisted
+ */
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * Gets the name of the preference
+ *
+ * @return The name of the preference
+ */
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Gets the value of this preference
+ *
+ * @return The value of this preference
+ */
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return "RegionWidgetPreference{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/RegionWidgetApi.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/RegionWidgetApi.java?rev=1125374&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/RegionWidgetApi.java (added)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/RegionWidgetApi.java Fri May 20 13:24:35 2011
@@ -0,0 +1,58 @@
+/*
+ * 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.portal.web.api;
+
+import org.apache.rave.portal.model.RegionWidgetPreference;
+import org.apache.rave.portal.web.model.RegionWidgetPreferenceListWrapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Handler for all services exposed under the /api/regionWidgets path.
+ */
+@Controller
+@RequestMapping("/api/regionWidgets")
+public class RegionWidgetApi {
+ private static Logger logger = LoggerFactory.getLogger(RegionWidgetApi.class);
+
+ @ResponseBody
+ @RequestMapping(value = "/{regionWidgetId}/preferences", method = RequestMethod.PUT)
+ public RegionWidgetPreferenceListWrapper replaceAllRegionWidgetPreferences(@PathVariable String regionWidgetId,
+ @RequestBody RegionWidgetPreferenceListWrapper
+ regionWidgetPreferences) {
+ logger.debug("PUT received to replace all preferences for regionWidget: " + regionWidgetId + " with data: " +
+ regionWidgetPreferences);
+
+ return regionWidgetPreferences;
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/{regionWidgetId}/preferences/{regionWidgetPreferenceName}", method = RequestMethod.PUT)
+ public RegionWidgetPreference createOrReplaceRegionWidgetPreference(@PathVariable String regionWidgetId,
+ @PathVariable String regionWidgetPreferenceName,
+ @RequestBody RegionWidgetPreference regionWidgetPreference) {
+ logger.debug("PUT received to create or replace preference: " + regionWidgetPreferenceName + " for regionWidget: " +
+ regionWidgetId + " with data: " + regionWidgetPreference);
+
+ return regionWidgetPreference;
+ }
+}
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/WidgetApi.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/WidgetApi.java?rev=1125374&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/WidgetApi.java (added)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/WidgetApi.java Fri May 20 13:24:35 2011
@@ -0,0 +1,41 @@
+/*
+ * 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.portal.web.api;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * Handler for all services exposed under the /api/widgets path.
+ */
+@Controller
+@RequestMapping("/api/widgets")
+public class WidgetApi {
+ private static Logger logger = LoggerFactory.getLogger(WidgetApi.class);
+
+ @RequestMapping(value = "/", method = RequestMethod.GET)
+ public void getAllWidgets() {
+ logger.debug("GET received for all widgets");
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+}
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/model/RegionWidgetPreferenceListWrapper.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/model/RegionWidgetPreferenceListWrapper.java?rev=1125374&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/model/RegionWidgetPreferenceListWrapper.java (added)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/model/RegionWidgetPreferenceListWrapper.java Fri May 20 13:24:35 2011
@@ -0,0 +1,57 @@
+/*
+ * 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.portal.web.model;
+
+import org.apache.rave.portal.model.RegionWidgetPreference;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+/**
+ * A simple wrapper class so that JAXB can properly marshall and unmarshall a list of RegionWidgetPreference.
+ */
+@XmlRootElement(name = "regionWidgetPreferences")
+public class RegionWidgetPreferenceListWrapper {
+ private List<RegionWidgetPreference> preferences;
+
+ public RegionWidgetPreferenceListWrapper() {
+ }
+
+ public RegionWidgetPreferenceListWrapper(List<RegionWidgetPreference> preferences) {
+ this.preferences = preferences;
+ }
+
+ @XmlElement(name = "regionWidgetPreference")
+ public List<RegionWidgetPreference> getPreferences() {
+ return preferences;
+ }
+
+ public void setPreferences(List<RegionWidgetPreference> preferences) {
+ this.preferences = preferences;
+ }
+
+ @Override
+ public String toString() {
+ return "RegionWidgetPreferenceListWrapper{" +
+ "preferences=" + preferences +
+ '}';
+ }
+}
Modified: incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml?rev=1125374&r1=1125373&r2=1125374&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml (original)
+++ incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml Fri May 20 13:24:35 2011
@@ -20,12 +20,16 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
+ xmlns:oxm="http://www.springframework.org/schema/oxm"
+ xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
+ http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">
<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan base-package="org.apache.rave.portal.web.controller"/>
+ <context:component-scan base-package="org.apache.rave.portal.web.api"/>
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven/>
@@ -38,5 +42,18 @@
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
-</beans>
+ <oxm:jaxb2-marshaller id="marshaller">
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.RegionWidgetPreference"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.web.model.RegionWidgetPreferenceListWrapper"/>
+ </oxm:jaxb2-marshaller>
+
+ <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
+ <property name="messageConverters">
+ <list>
+ <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"
+ p:marshaller-ref="marshaller" p:unmarshaller-ref="marshaller"/>
+ </list>
+ </property>
+ </bean>
+</beans>
\ No newline at end of file