aboutsummaryrefslogtreecommitdiff
path: root/subsonic-main/src/main/java/net/sourceforge/subsonic/ajax/ChatService.java
diff options
context:
space:
mode:
Diffstat (limited to 'subsonic-main/src/main/java/net/sourceforge/subsonic/ajax/ChatService.java')
-rw-r--r--subsonic-main/src/main/java/net/sourceforge/subsonic/ajax/ChatService.java163
1 files changed, 0 insertions, 163 deletions
diff --git a/subsonic-main/src/main/java/net/sourceforge/subsonic/ajax/ChatService.java b/subsonic-main/src/main/java/net/sourceforge/subsonic/ajax/ChatService.java
deleted file mode 100644
index 8905c8a6..00000000
--- a/subsonic-main/src/main/java/net/sourceforge/subsonic/ajax/ChatService.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- This file is part of Subsonic.
-
- Subsonic is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Subsonic 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
-
- Copyright 2009 (C) Sindre Mehus
- */
-package net.sourceforge.subsonic.ajax;
-
-import net.sourceforge.subsonic.Logger;
-import net.sourceforge.subsonic.service.SecurityService;
-import net.sourceforge.subsonic.util.BoundedList;
-import org.apache.commons.lang.StringUtils;
-import org.directwebremoting.WebContext;
-import org.directwebremoting.WebContextFactory;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Provides AJAX-enabled services for the chatting.
- * This class is used by the DWR framework (http://getahead.ltd.uk/dwr/).
- *
- * @author Sindre Mehus
- */
-public class ChatService {
-
- private static final Logger LOG = Logger.getLogger(ChatService.class);
- private static final String CACHE_KEY = "1";
- private static final int MAX_MESSAGES = 10;
- private static final long TTL_MILLIS = 3L * 24L * 60L * 60L * 1000L; // 3 days.
-
- private final LinkedList<Message> messages = new BoundedList<Message>(MAX_MESSAGES);
- private SecurityService securityService;
-
- private long revision = System.identityHashCode(this);
-
- /**
- * Invoked by Spring.
- */
- public void init() {
- // Delete old messages every hour.
- ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
- Runnable runnable = new Runnable() {
- public void run() {
- removeOldMessages();
- }
- };
- executor.scheduleWithFixedDelay(runnable, 0L, 3600L, TimeUnit.SECONDS);
- }
-
- private synchronized void removeOldMessages() {
- long now = System.currentTimeMillis();
- for (Iterator<Message> iterator = messages.iterator(); iterator.hasNext();) {
- Message message = iterator.next();
- if (now - message.getDate().getTime() > TTL_MILLIS) {
- iterator.remove();
- revision++;
- }
- }
- }
-
- public synchronized void addMessage(String message) {
- WebContext webContext = WebContextFactory.get();
- doAddMessage(message, webContext.getHttpServletRequest());
- }
-
- public synchronized void doAddMessage(String message, HttpServletRequest request) {
-
- String user = securityService.getCurrentUsername(request);
- message = StringUtils.trimToNull(message);
- if (message != null && user != null) {
- messages.addFirst(new Message(message, user, new Date()));
- revision++;
- }
- }
-
- public synchronized void clearMessages() {
- messages.clear();
- revision++;
- }
-
- /**
- * Returns all messages, but only if the given revision is different from the
- * current revision.
- */
- public synchronized Messages getMessages(long revision) {
- if (this.revision != revision) {
- return new Messages(new ArrayList<Message>(messages), this.revision);
- }
- return null;
- }
-
- public void setSecurityService(SecurityService securityService) {
- this.securityService = securityService;
- }
-
- public static class Messages implements Serializable {
-
- private static final long serialVersionUID = -752602719879818165L;
- private final List<Message> messages;
- private final long revision;
-
- public Messages(List<Message> messages, long revision) {
- this.messages = messages;
- this.revision = revision;
- }
-
- public List<Message> getMessages() {
- return messages;
- }
-
- public long getRevision() {
- return revision;
- }
- }
-
- public static class Message implements Serializable {
-
- private static final long serialVersionUID = -1907101191518133712L;
- private final String content;
- private final String username;
- private final Date date;
-
- public Message(String content, String username, Date date) {
- this.content = content;
- this.username = username;
- this.date = date;
- }
-
- public String getContent() {
- return content;
- }
-
- public String getUsername() {
- return username;
- }
-
- public Date getDate() {
- return date;
- }
-
- }
-}