aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/juick/server/configuration/ApiAppConfiguration.java')
-rw-r--r--src/main/java/com/juick/server/configuration/ApiAppConfiguration.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java b/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java
new file mode 100644
index 00000000..5a5d2c7b
--- /dev/null
+++ b/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2008-2017, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.server.configuration;
+
+import com.juick.server.WebsocketManager;
+import com.juick.server.api.rss.MessagesView;
+import com.juick.server.api.rss.RepliesView;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.view.BeanNameViewResolver;
+import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+import org.springframework.web.socket.config.annotation.ServletWebSocketHandlerRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
+import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;
+
+import javax.annotation.Nonnull;
+import javax.inject.Inject;
+
+/**
+ * Created by aalexeev on 11/12/16.
+ */
+@Configuration
+@EnableAsync(proxyTargetClass = true)
+@EnableScheduling
+@EnableWebSocket
+public class ApiAppConfiguration implements WebMvcConfigurer, WebSocketConfigurer {
+ @Inject
+ private WebsocketManager websocketManager;
+
+ @Override
+ public void registerWebSocketHandlers(@Nonnull WebSocketHandlerRegistry registry) {
+ ((ServletWebSocketHandlerRegistry) registry).setOrder(Ordered.HIGHEST_PRECEDENCE);
+ registry.addHandler(websocketManager, "/ws/**").setAllowedOrigins("*");
+ }
+
+ @Bean
+ public ServletServerContainerFactoryBean createWebSocketContainer() {
+ ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
+ container.setMaxTextMessageBufferSize(8192);
+ container.setMaxBinaryMessageBufferSize(8192);
+ return container;
+ }
+ @Bean
+ public BeanNameViewResolver beanNameViewResolver() {
+ return new BeanNameViewResolver();
+ }
+ @Bean
+ AbstractRssFeedView messagesView() {
+ return new MessagesView();
+ }
+ @Bean
+ AbstractRssFeedView repliesView() {
+ return new RepliesView();
+ }
+}