aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2016-12-13 19:29:36 +0300
committerGravatar Vitaly Takmazov2016-12-13 19:29:36 +0300
commita6603fc8a432b92a6e18db86156efc7b31724093 (patch)
tree3c79d35ae0db2c1a0f72054b7d757997a7f4c295
parent7e9e549e3d154579ffd40f1299568df78320014e (diff)
Working RSS spring-webmvc servlet, ugnich-rss generator moved to tests
-rw-r--r--juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java18
-rw-r--r--juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java3
-rw-r--r--juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java53
-rw-r--r--juick-rss/src/main/resources/rome.properties2
-rw-r--r--juick-rss/src/main/webapp/WEB-INF/web.xml14
-rw-r--r--src/test/java/com/juick/rss/LegacyRSS.java (renamed from juick-rss/src/main/java/com/juick/rss/Main.java)20
6 files changed, 76 insertions, 34 deletions
diff --git a/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java b/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java
index f975d87b..ef65e9ef 100644
--- a/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java
+++ b/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java
@@ -2,10 +2,12 @@ package com.juick.rss.configuration;
import com.juick.rss.MessagesView;
import com.juick.rss.RepliesView;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+import org.springframework.web.servlet.view.BeanNameViewResolver;
+import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
/**
* Created by vitalyster on 28.06.2016.
@@ -13,8 +15,16 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp
@Configuration
@ComponentScan(basePackages = {"com.juick.rss.controllers"})
public class RssMvcConfiguration extends WebMvcConfigurationSupport {
- @Override
- protected void configureViewResolvers(ViewResolverRegistry registry) {
- registry.enableContentNegotiation(new MessagesView(), new RepliesView());
+ @Bean
+ public BeanNameViewResolver beanNameViewResolver() {
+ return new BeanNameViewResolver();
+ }
+ @Bean
+ AbstractRssFeedView messages() {
+ return new MessagesView();
+ }
+ @Bean
+ AbstractRssFeedView replies() {
+ return new RepliesView();
}
}
diff --git a/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java b/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java
index 9c3dc787..f2616f73 100644
--- a/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java
+++ b/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java
@@ -31,6 +31,7 @@ public class FeedsController {
if (user.getUid() > 0) {
List<Integer> mids = messagesService.getUserBlog(user.getUid(), 0, 0);
ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("messages");
modelAndView.addObject("user", user);
modelAndView.addObject("messages", messagesService.getMessages(mids));
return modelAndView;
@@ -42,12 +43,14 @@ public class FeedsController {
public ModelAndView getLast(@RequestParam(value = "hours", required = false, defaultValue = "0") Integer hours) {
List<Integer> mids = messagesService.getLastMessages(hours);
ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("messages");
modelAndView.addObject("messages", messagesService.getMessages(mids));
return modelAndView;
}
@RequestMapping(value = "/comments", method = RequestMethod.GET)
public ModelAndView getLastReplies(@RequestParam(value = "hours", required = false, defaultValue = "0") Integer hours) {
ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("replies");
modelAndView.addObject("messages", messagesService.getLastReplies(hours));
return modelAndView;
}
diff --git a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java b/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java
new file mode 100644
index 00000000..caecde7e
--- /dev/null
+++ b/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java
@@ -0,0 +1,53 @@
+package com.juick.rss.extension;
+
+import com.rometools.rome.feed.module.Module;
+import com.rometools.rome.io.ModuleGenerator;
+import org.jdom2.Element;
+import org.jdom2.Namespace;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Created by vt on 13/12/2016.
+ */
+public class JuickModuleGenerator implements ModuleGenerator {
+
+ private static final Namespace JUICK_NS = Namespace.getNamespace("juick", JuickModule.URI);
+
+ @Override
+ public String getNamespaceUri() {
+ return JuickModule.URI;
+ }
+
+ private static final Set NAMESPACES;
+
+ static {
+ Set nss = new HashSet();
+ nss.add(JUICK_NS);
+ NAMESPACES = Collections.unmodifiableSet(nss);
+ }
+
+ @Override
+ public Set getNamespaces() {
+ return NAMESPACES;
+ }
+
+ @Override
+ public void generate(Module module, Element element) {
+ // this is not necessary, it is done to avoid the namespace definition in every item.
+ Element root = element;
+ while (root.getParent()!=null && root.getParent() instanceof Element) {
+ root = (Element) element.getParent();
+ }
+ root.addNamespaceDeclaration(JUICK_NS);
+
+ JuickModule juickModule = (JuickModule) module;
+ if (juickModule.getUid() > 0) {
+ Element user = new Element("user", JUICK_NS);
+ user.setAttribute("uid", String.valueOf(juickModule.getUid()), JUICK_NS);
+ element.addContent(user);
+ }
+ }
+}
diff --git a/juick-rss/src/main/resources/rome.properties b/juick-rss/src/main/resources/rome.properties
new file mode 100644
index 00000000..e57f6391
--- /dev/null
+++ b/juick-rss/src/main/resources/rome.properties
@@ -0,0 +1,2 @@
+rss_2.0.item.ModuleParser.classes=com.juick.rss.extension.JuickModuleParser
+rss_2.0.item.ModuleGenerator.classes=com.juick.rss.extension.JuickModuleGenerator \ No newline at end of file
diff --git a/juick-rss/src/main/webapp/WEB-INF/web.xml b/juick-rss/src/main/webapp/WEB-INF/web.xml
index a4264bb0..7e1c30d0 100644
--- a/juick-rss/src/main/webapp/WEB-INF/web.xml
+++ b/juick-rss/src/main/webapp/WEB-INF/web.xml
@@ -1,16 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <servlet>
- <servlet-name>Main</servlet-name>
- <servlet-class>com.juick.rss.Main</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Main</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>
- 30
- </session-timeout>
- </session-config>
+
</web-app>
diff --git a/juick-rss/src/main/java/com/juick/rss/Main.java b/src/test/java/com/juick/rss/LegacyRSS.java
index 8d247465..ff84b784 100644
--- a/juick-rss/src/main/java/com/juick/rss/Main.java
+++ b/src/test/java/com/juick/rss/LegacyRSS.java
@@ -42,28 +42,14 @@ import java.util.Properties;
/**
* @author ugnich
*/
-@WebServlet(name = "Main", urlPatterns = {"/"})
-public class Main extends HttpServlet {
+public class LegacyRSS {
JdbcTemplate sql;
- @Override
- public void init() throws ServletException {
- super.init();
- try {
- Properties conf = new Properties();
- conf.load(getServletContext().getResourceAsStream("/WEB-INF/juick.conf"));
- BasicDataSource dataSource = new BasicDataSource();
- dataSource.setDriverClassName(conf.getProperty("datasource_driver", "com.mysql.jdbc.Driver"));
- dataSource.setUrl(conf.getProperty("datasource_url"));
- sql = new JdbcTemplate(dataSource);
-
- } catch (Exception e) {
- log(null, e);
- }
+ public void LegacyRSS(JdbcTemplate sql) {
+ this.sql = sql;
}
- @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");