kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 1587 discussions
Author: vjrj_
Date: 2012-01-12 02:40:41 +0100 (Thu, 12 Jan 2012)
New Revision: 1658
Added:
trunk/src/main/java/cc/kune/core/server/notifier/DestinationProvider.java
trunk/src/main/java/cc/kune/core/server/notifier/NotificationHtmlHelper.java
trunk/src/main/java/cc/kune/core/server/notifier/NotificationSender.java
trunk/src/main/java/cc/kune/core/server/notifier/NotificationSenderDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotificationService.java
trunk/src/main/java/cc/kune/core/server/notifier/NotificationType.java
trunk/src/main/java/cc/kune/core/server/notifier/PendingNotification.java
trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationDailyJob.java
trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationHourlyJob.java
trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationImmediateJob.java
trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationSender.java
trunk/src/main/java/cc/kune/core/server/notifier/SimpleDestinationProvider.java
trunk/src/main/java/cc/kune/core/server/notifier/WaveDestinationProvider.java
trunk/src/main/java/cc/kune/core/server/scheduler/CustomJobFactory.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveServerUtils.java
trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
trunk/src/main/java/cc/kune/wave/server/kspecific/pendnotif/
trunk/src/test/java/cc/kune/core/server/notifier/AbstractPendingNotificationTest.java
trunk/src/test/java/cc/kune/core/server/notifier/NotificationHtmlHelperTest.java
trunk/src/test/java/cc/kune/core/server/notifier/PendingNotificationSenderTest.java
trunk/src/test/java/cc/kune/core/server/notifier/SimpleDestinationProviderTest.java
Removed:
trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyType.java
trunk/src/main/java/cc/kune/core/server/scheduler/AbstractJob.java
trunk/src/main/java/cc/kune/core/server/scheduler/DailyJob.java
trunk/src/main/java/cc/kune/core/server/scheduler/HourlyJob.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java
trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java
Modified:
trunk/DEV-GUIDE
trunk/TODO
trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java
trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
trunk/src/main/java/cc/kune/core/server/scheduler/CronServerTasksManager.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java
trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java
trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java
trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java
Log:
NEW - # 185: Implement notification levels (hourly and daily) similar to Google Wave
http://kune.ourproject.org/issues/ticket/185
Modified: trunk/DEV-GUIDE
===================================================================
--- trunk/DEV-GUIDE 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/DEV-GUIDE 2012-01-12 01:40:41 UTC (rev 1658)
@@ -222,6 +222,8 @@
====JRuby-Rack====
+(This part in now not used, probably we should go back when we return to develop the public part)
+
We use Rails via [http://kenai.com/projects/jruby-rack/pages/Home JRuby-Rack]. Ruby on Rails + Plugins + Gems are installed in trunk/src/main/webapp/WEB-INF/. Jetty uses these gems when running, but if you run ruby directly with script/server, take into account that you are using your installed local gems.
To install gems inside this directory:
@@ -303,6 +305,14 @@
"Being written in Java, we strongly recommend following the principles outlined in Effective Java. On top of that, patterns that aid testability (dependency injection, etc) are quite important. But beyond that, I don't know if there are any other patterns or practices that would be universal across the whole thing. The web client and the server run in very different environments, so the appropriate patterns change (e.g., the client-only code doesn't have to worry about thread safety, but should worry about excessive short-lived object creation)."
+=== Docs about OT, Wave Model, etc ===
+
+http://www.codecommit.com/blog/java/understanding-and-applying-operational-transformation
+Wave Model Deep Dive: http://www.youtube.com/watch?v=6ZqpeFydq4A
+
+Or for a list:
+http://www.youtube.com/user/GoogleDevelopers/search?query=Wave
+
=== Running Hosted Mode without Wave webclient ===
See class WaveClientProvider in Kune (in a short term, we should define this in a .gwt.xml not there, but this is a start point).
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/TODO 2012-01-12 01:40:41 UTC (rev 1658)
@@ -13,12 +13,15 @@
* SHORT-TERM (URGENT)
** Emil notifications for new waves
+*** Migration of DB!!!!!
+*** Text for UI
Email Notifications
How often do you want to receive notifications?
almost immediately
at most hourly
at most daily
I don't need email notifications
+*** Cron and pseudocode
** group.inexistentTool nasty error
** calendar support
*** gwt-cal + http://ical4j.sourceforge.net/introduction.html
Modified: trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -57,12 +57,15 @@
import cc.kune.core.server.rest.I18nTranslationJSONService;
import cc.kune.core.server.rest.TestJSONService;
import cc.kune.core.server.rest.UserJSONService;
+import cc.kune.core.server.scheduler.CronServerTasksManager;
import cc.kune.docs.server.DocumentServerModule;
import cc.kune.events.server.EventsServerModule;
import cc.kune.hspace.client.ClientStatsService;
import cc.kune.lists.client.rpc.ListsService;
import cc.kune.lists.server.ListsServerModule;
import cc.kune.tasks.server.TaskServerModule;
+import cc.kune.wave.server.KuneWaveServerUtils;
+import cc.kune.wave.server.kspecific.WaveEmailNotifier;
import cc.kune.wiki.server.WikiServerModule;
import com.google.inject.AbstractModule;
@@ -118,6 +121,7 @@
if (sessionScope != null) {
bindScope(SessionScoped.class, sessionScope);
}
+ requestStaticInjection(KuneWaveServerUtils.class);
}
};
}
@@ -128,7 +132,11 @@
installGuiceModules(builder);
builder.add(KuneContainerListener.class);
+ builder.add(WaveEmailNotifier.class);
+ // Cron tasks
+ builder.add(CronServerTasksManager.class);
+
builder.exclude("/http-bind.*");
builder.exclude("/public/.*");
builder.exclude("/images/.*");
Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -87,8 +87,8 @@
import cc.kune.core.server.manager.impl.UserManagerDefault;
import cc.kune.core.server.mapper.DozerMapper;
import cc.kune.core.server.mapper.Mapper;
-import cc.kune.core.server.notifier.NotifySender;
-import cc.kune.core.server.notifier.NotifySenderDefault;
+import cc.kune.core.server.notifier.NotificationSender;
+import cc.kune.core.server.notifier.NotificationSenderDefault;
import cc.kune.core.server.notifier.UsersOnline;
import cc.kune.core.server.rpc.ContentRPC;
import cc.kune.core.server.rpc.GroupRPC;
@@ -114,7 +114,6 @@
import cc.kune.wave.server.ParticipantUtils;
import cc.kune.wave.server.kspecific.KuneWaveService;
import cc.kune.wave.server.kspecific.KuneWaveServiceDefault;
-import cc.kune.wave.server.kspecific.WaveEmailNotifier;
import com.google.inject.Singleton;
import com.google.inject.matcher.Matchers;
@@ -197,8 +196,7 @@
bind(UsersOnline.class).to(UserSessionManager.class).in(Singleton.class);
requestStaticInjection(AccessRightsUtils.class);
bind(CronServerTasksManager.class).in(Singleton.class);
- bind(NotifySender.class).to(NotifySenderDefault.class).in(Singleton.class);
- bind(WaveEmailNotifier.class).in(Singleton.class);
+ bind(NotificationSender.class).to(NotificationSenderDefault.class).in(Singleton.class);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authenticated.class),
outermostCall(new AuthenticatedMethodInterceptor()));
bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authorizated.class),
Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -56,7 +56,7 @@
import cc.kune.domain.finders.ContentFinder;
import cc.kune.domain.finders.I18nLanguageFinder;
import cc.kune.domain.finders.UserFinder;
-import cc.kune.wave.server.KuneWaveUtils;
+import cc.kune.wave.server.KuneWaveServerUtils;
import cc.kune.wave.server.ParticipantUtils;
import cc.kune.wave.server.kspecific.KuneWaveService;
@@ -104,7 +104,7 @@
}
public void addGadgetToContent(final User user, final Content content, final URL gadgetUrl) {
- kuneWaveManager.addGadget(KuneWaveUtils.getWaveRef(content),
+ kuneWaveManager.addGadget(KuneWaveServerUtils.getWaveRef(content),
participantUtils.of(user.getShortName()).toString(), gadgetUrl);
}
@@ -112,7 +112,7 @@
public void addParticipant(final User user, final Long contentId, final String participant) {
final Content content = finder.getContent(contentId);
if (content.isWave()) {
- kuneWaveManager.addParticipants(KuneWaveUtils.getWaveRef(content),
+ kuneWaveManager.addParticipants(KuneWaveServerUtils.getWaveRef(content),
content.getAuthors().get(0).getShortName(), user.getShortName(), participant);
}
}
@@ -243,7 +243,7 @@
content.getLastRevision().setTitle(newTitleWithoutNL);
if (content.isWave()) {
final String author = content.getAuthors().get(0).getShortName();
- kuneWaveManager.setTitle(KuneWaveUtils.getWaveRef(content), newTitle, author);
+ kuneWaveManager.setTitle(KuneWaveServerUtils.getWaveRef(content), newTitle, author);
}
setModifiedTime(content);
return content;
Modified: trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,5 +1,8 @@
package cc.kune.core.server.mail;
+import java.util.Arrays;
+
+import com.calclab.emite.core.client.packet.TextUtils;
import com.google.common.base.Preconditions;
/**
@@ -139,4 +142,11 @@
public boolean shouldBeTranslated() {
return shouldBeTranslated;
}
+
+ @Override
+ public String toString() {
+ return "FormatedString ['" + TextUtils.ellipsis(template, 40) + "', args=" + Arrays.toString(args)
+ + ", shouldBeTranslated=" + shouldBeTranslated + "]";
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -36,7 +36,7 @@
import cc.kune.domain.User;
import cc.kune.domain.UserBuddiesData;
import cc.kune.domain.finders.GroupFinder;
-import cc.kune.wave.server.KuneWaveUtils;
+import cc.kune.wave.server.KuneWaveServerUtils;
import cc.kune.wave.server.ParticipantUtils;
import cc.kune.wave.server.kspecific.KuneWaveService;
@@ -71,7 +71,7 @@
for (final String part : participants) {
partIds.add(participantUtils.of(part));
}
- return KuneWaveUtils.getUrl(waveService.createWave(title, body,
+ return KuneWaveServerUtils.getUrl(waveService.createWave(title, body,
partIds.toArray(new ParticipantId[0])));
}
@@ -104,6 +104,6 @@
toList.addAll(group.getSocialNetwork().getAccessLists().getEditors().getList());
}
}
- return KuneWaveUtils.getUrl(waveService.createWave(title, message, participantUtils.listFrom(toList)));
+ return KuneWaveServerUtils.getUrl(waveService.createWave(title, message, participantUtils.listFrom(toList)));
}
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -57,7 +57,7 @@
import cc.kune.core.server.manager.I18nLanguageManager;
import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.manager.UserManager;
-import cc.kune.core.server.notifier.NotifyService;
+import cc.kune.core.server.notifier.NotificationService;
import cc.kune.core.server.properties.ChatProperties;
import cc.kune.core.server.properties.KuneBasicProperties;
import cc.kune.core.server.xmpp.ChatConnection;
@@ -89,7 +89,7 @@
private final I18nTranslationServiceMultiLang i18n;
private final KuneWaveService kuneWaveManager;
private final I18nLanguageManager languageManager;
- private final NotifyService notifyService;
+ private final NotificationService notifyService;
private final ParticipantUtils participantUtils;
private final KuneBasicProperties properties;
private final UserFinder userFinder;
@@ -104,7 +104,7 @@
final I18nTranslationServiceMultiLang i18n, final CustomUserRegistrationServlet waveUserRegister,
final AccountStore waveAccountStore, final KuneWaveService kuneWaveManager,
final ParticipantUtils participantUtils, final KuneBasicProperties properties,
- final GroupManager groupManager, final NotifyService notifyService) {
+ final GroupManager groupManager, final NotificationService notifyService) {
super(provider, User.class);
this.userFinder = finder;
this.languageManager = languageManager;
Added: trunk/src/main/java/cc/kune/core/server/notifier/DestinationProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/DestinationProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/DestinationProvider.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,19 @@
+package cc.kune.core.server.notifier;
+
+import java.util.Collection;
+
+import cc.kune.domain.User;
+
+/**
+ * The Interface DestinationProvider is used to provide a way to get a list of
+ * Users (for instance to send notifications to them)
+ */
+public interface DestinationProvider {
+
+ /**
+ * Gets the destination list
+ *
+ * @return the destination
+ */
+ Collection<User> getDest();
+}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotificationHtmlHelper.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotificationHtmlHelper.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotificationHtmlHelper.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,59 @@
+package cc.kune.core.server.notifier;
+
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.utils.AbsoluteFileDownloadUtils;
+import cc.kune.core.shared.utils.SharedFileDownloadUtils;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * The Class NotifyHtmlHelper is used to get html snippets for email
+ * notifications.
+ */
+@Singleton
+public class NotificationHtmlHelper {
+
+ /** The template used from messages snippets from a group */
+ private static String GROUP_TEMPLATE = "<table style=\"FIXME\" border=\"0\" cellpadding=\"2\" cellspacing=\"2\" width=\"100%%\">"
+ + "<tbody><tr>"
+ + "<td style=\"\" valign=\"top\"><a href=\"%s\">%s</a></td>"
+ + "<td style=\"\" valign=\"top\" width=\"100%%\">"
+ + "<a href=\"%s\">%s</a><br>"
+ + "%s"
+ + "</td></tr></tbody></table>";
+
+ private final SharedFileDownloadUtils fileDownloadUtils;
+
+ /**
+ * Instantiates a new notify html helper.
+ *
+ * @param fileDownloadUtils
+ * the file download utils
+ */
+ @Inject
+ public NotificationHtmlHelper(final AbsoluteFileDownloadUtils fileDownloadUtils) {
+ this.fileDownloadUtils = fileDownloadUtils;
+ }
+
+ /**
+ * Generates a group notification in html like [logo|message]
+ *
+ * @param groupName
+ * the group name you want to get the notification
+ * @param hasLogo
+ * the has logo?
+ * @param message
+ * the message to show close to the logo
+ * @param readMoreMsg
+ * the read more msg
+ * @return the html string
+ */
+ public FormatedString groupNotification(final String groupName, final boolean hasLogo,
+ final String message) {
+ final String groupUrl = fileDownloadUtils.getPrefix() + "#" + groupName;
+ return FormatedString.build(false, GROUP_TEMPLATE, groupUrl,
+ fileDownloadUtils.getLogoAvatarHtml(groupName, hasLogo, false, 50, 50), groupUrl, groupName,
+ message);
+ }
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/NotificationSender.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotificationSender.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotificationSender.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,20 @@
+package cc.kune.core.server.notifier;
+
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
+
+/**
+ * The Interface PendingNotificationSender. Used to send pending notifications
+ */
+public interface NotificationSender {
+
+ /**
+ * Send the notification to users with some frequency configured
+ *
+ * @param notification
+ * the notification to send
+ * @param currentFrequency
+ * the current frequency (only users with this frequency should be
+ * processed
+ */
+ void send(PendingNotification notification, EmailNotificationFrequency currentFrequency);
+}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotificationSenderDefault.java (from rev 1657, trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotificationSenderDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotificationSenderDefault.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,105 @@
+package cc.kune.core.server.notifier;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang;
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.mail.MailService;
+import cc.kune.core.server.properties.KuneProperties;
+import cc.kune.core.server.xmpp.XmppManager;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
+import cc.kune.domain.User;
+import cc.kune.wave.server.kspecific.KuneWaveService;
+
+import com.google.common.base.Preconditions;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class NotificationSenderDefault implements NotificationSender {
+ public static final Log LOG = LogFactory.getLog(NotificationSenderDefault.class);
+ private final String emailTemplate;
+ private final I18nTranslationServiceMultiLang i18n;
+ private final MailService mailService;
+ private final String subjectPrefix;
+ private final UsersOnline usersOnline;
+ private final KuneWaveService waveService;
+ private final XmppManager xmppManager;
+
+ @Inject
+ public NotificationSenderDefault(final MailService mailService, final KuneWaveService waveService,
+ final XmppManager xmppManager, final I18nTranslationServiceMultiLang i18n,
+ final UsersOnline usersOnline, final KuneProperties kuneProperties) throws IOException {
+ this.mailService = mailService;
+ this.waveService = waveService;
+ this.xmppManager = xmppManager;
+ this.i18n = i18n;
+ this.usersOnline = usersOnline;
+ emailTemplate = FileUtils.readFileToString(new File(
+ kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
+ Preconditions.checkNotNull(emailTemplate);
+ Preconditions.checkArgument(TextUtils.notEmpty(emailTemplate));
+ subjectPrefix = new StringBuffer("[").append(kuneProperties.get(KuneProperties.SITE_NAME)).append(
+ "] ").toString();
+ }
+
+ @Override
+ public void send(final PendingNotification notification, final EmailNotificationFrequency withFrequency) {
+ for (final User user : notification.getDestProvider().getDest()) {
+ final String username = user.getShortName();
+ final FormatedString subject = notification.getSubject();
+ final FormatedString body = notification.getBody();
+ final NotificationType notifyType = notification.getNotifyType();
+ final boolean forceSend = notification.isForceSend();
+ final boolean isHtml = notification.isHtml();
+
+ subject.setTemplate(subjectPrefix + subject.getTemplate());
+ if (subject.shouldBeTranslated()) {
+ // Translate per recipient language
+ // final String subjectTranslation = i18n.tWithNT(user.getLanguage(),
+ // subject.getTemplate(), "");
+ // if (subjectTranslation != null) {
+ // Right now commented because we are only testing
+ // subject.setTemplate(subjectTranslation);
+ // }
+ }
+ if (body.shouldBeTranslated()) {
+ // final String bodyTranslation = i18n.tWithNT(user.getLanguage(),
+ // body.getTemplate(), "");
+ // if (bodyTranslation != null) {
+ // Right now commented because we are only testing
+ // body.setTemplate(bodyTranslation);
+ // }
+ }
+ switch (notifyType) {
+ case chat:
+ // FIXME seems that html is not sending correctly... check server specs
+ xmppManager.sendMessage(username,
+ String.format("<b>%s</b>%s", subject.getString(), body.getString()));
+ break;
+ case email:
+ if (forceSend || (!usersOnline.isLogged(username) && withFrequency == user.getEmailNotifFreq())) {
+ // we'll send this notification if is mandatory or this user is not
+ // only and has this freq configured
+ mailService.send(subject, FormatedString.build(emailTemplate.replace("%s", body.getString())),
+ isHtml, user.getEmail());
+ }
+ break;
+ case wave:
+ if (isHtml) {
+ LOG.error("Wave html messages not supported yet");
+ }
+ waveService.createWave(subject.getString(), body.getString(), username);
+ break;
+ }
+ }
+
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotificationService.java (from rev 1657, trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotificationService.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotificationService.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,92 @@
+package cc.kune.core.server.notifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.NoResultException;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.domain.Group;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.UserFinder;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class NotificationService {
+
+ public static final Log LOG = LogFactory.getLog(NotificationService.class);
+ private final NotificationHtmlHelper helper;
+ private final PendingNotificationSender sender;
+ private final UserFinder userFinder;
+
+ @Inject
+ NotificationService(final PendingNotificationSender sender, final NotificationHtmlHelper helper,
+ final UserFinder userFinder) {
+ this.sender = sender;
+ this.helper = helper;
+ this.userFinder = userFinder;
+ }
+
+ @SuppressWarnings("unchecked")
+ private void getAllUserMembers(final Set<User> users, final Group groupToNotify,
+ final boolean onlyAdmins) {
+ final Collection<Group> members;
+ final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
+ if (onlyAdmins) {
+ members = admins;
+ } else {
+ final Set<Group> collabs = groupToNotify.getSocialNetwork().getAccessLists().getEditors().getList();
+ members = CollectionUtils.union(admins, collabs);
+ }
+ for (final Group member : members) {
+ if (member.isPersonal()) {
+ final String shortName = member.getShortName();
+ try {
+ final User user = userFinder.findByShortName(shortName);
+ users.add(user);
+ } catch (final NoResultException e) {
+ LOG.error(String.format("This personal group %s is not a local user", shortName));
+ }
+ } else {
+ // Is a group, so go recursively
+ getAllUserMembers(users, member, onlyAdmins);
+ }
+ }
+
+ }
+
+ public void notifyGroup(final Group groupToNotify, final Group groupSender, final String subject,
+ final String message) {
+ final Set<User> members = new HashSet<User>();
+ getAllUserMembers(members, groupToNotify, false);
+ notifyToAll(groupSender, subject, message, members);
+ }
+
+ public void notifyGroupAdmins(final Group groupToNotify, final Group groupSender,
+ final String subject, final String message) {
+ final Set<User> adminMembers = new HashSet<User>();
+ getAllUserMembers(adminMembers, groupToNotify, true);
+ notifyToAll(groupSender, subject, message, adminMembers);
+ }
+
+ private void notifyToAll(final Group groupSender, final String subject, final String message,
+ final Collection<User> users) {
+ for (final User to : users) {
+ sender.add(NotificationType.email, FormatedString.build(subject),
+ helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message), true,
+ true, to);
+ }
+ }
+
+ public void notifyUser(final User to, final Group group, final String subject, final String message) {
+ sender.add(NotificationType.email, FormatedString.build(subject),
+ helper.groupNotification(group.getShortName(), group.hasLogo(), message), true, true, to);
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotificationType.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/notifier/NotifyType.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotificationType.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotificationType.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,9 @@
+package cc.kune.core.server.notifier;
+
+/**
+ * Type of notifications for users
+ *
+ */
+public enum NotificationType {
+ chat, email, wave
+}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,59 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.core.server.utils.AbsoluteFileDownloadUtils;
-import cc.kune.core.shared.utils.SharedFileDownloadUtils;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-/**
- * The Class NotifyHtmlHelper is used to get html snippets for email
- * notifications.
- */
-@Singleton
-public class NotifyHtmlHelper {
-
- /** The template used from messages snippets from a group */
- private static String GROUP_TEMPLATE = "<table style=\"FIXME\" border=\"0\" cellpadding=\"2\" cellspacing=\"2\" width=\"100%%\">"
- + "<tbody><tr>"
- + "<td style=\"\" valign=\"top\"><a href=\"%s\">%s</a></td>"
- + "<td style=\"\" valign=\"top\" width=\"100%%\">"
- + "<a href=\"%s\">%s</a><br>"
- + "%s"
- + "</td></tr></tbody></table>";
-
- private final SharedFileDownloadUtils fileDownloadUtils;
-
- /**
- * Instantiates a new notify html helper.
- *
- * @param fileDownloadUtils
- * the file download utils
- */
- @Inject
- public NotifyHtmlHelper(final AbsoluteFileDownloadUtils fileDownloadUtils) {
- this.fileDownloadUtils = fileDownloadUtils;
- }
-
- /**
- * Generates a group notification in html like [logo|message]
- *
- * @param groupName
- * the group name you want to get the notification
- * @param hasLogo
- * the has logo?
- * @param message
- * the message to show close to the logo
- * @param readMoreMsg
- * the read more msg
- * @return the html string
- */
- public FormatedString groupNotification(final String groupName, final boolean hasLogo,
- final String message) {
- final String groupUrl = fileDownloadUtils.getPrefix() + "#" + groupName;
- return FormatedString.build(false, GROUP_TEMPLATE, groupUrl,
- fileDownloadUtils.getLogoAvatarHtml(groupName, hasLogo, false, 50, 50), groupUrl, groupName,
- message);
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,49 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.domain.User;
-
-/**
- * The Interface NotifySender.
- */
-public interface NotifySender {
-
- /**
- * Send a html message to the recipients (also translate the subject/body
- * using the user language)
- *
- * @param notifyType
- * the notify type (email, etc)
- * @param subject
- * the subject of the message (not translated)
- * @param body
- * the body of the message (not translated) but with %s
- * {@link String.format} args
- * @param isHtml
- * if the body is html
- * @param forceSend
- * send even this user has "no notifications" selected
- * @param recipients
- * the recipients
- */
- void send(NotifyType notifyType, FormatedString subject, FormatedString body, boolean isHtml,
- final boolean forceSend, User... recipients);
-
- /**
- * Send a text message to the recipients (also translate the subject/body
- * using the user language)
- *
- * @param notifyType
- * the notify type (email, etc)
- * @param subject
- * the subject of the message
- * @param body
- * the body of the message (no translated) but with some %s
- * {@link String.format} args
- * @param recipients
- * the recipients
- */
- @Deprecated
- void send(NotifyType notifyType, FormatedString subject, FormatedString body, User... recipients);
-
-}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,109 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang;
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.core.server.mail.MailService;
-import cc.kune.core.server.properties.KuneProperties;
-import cc.kune.core.server.xmpp.XmppManager;
-import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
-import cc.kune.domain.User;
-import cc.kune.wave.server.kspecific.KuneWaveService;
-
-import com.google.common.base.Preconditions;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-public class NotifySenderDefault implements NotifySender {
- public static final Log LOG = LogFactory.getLog(NotifySenderDefault.class);
- private final String emailTemplate;
- private final I18nTranslationServiceMultiLang i18n;
- private final MailService mailService;
- private final String subjectPrefix;
- private final UsersOnline usersOnline;
- private final KuneWaveService waveService;
- private final XmppManager xmppManager;
-
- @Inject
- public NotifySenderDefault(final MailService mailService, final KuneWaveService waveService,
- final XmppManager xmppManager, final I18nTranslationServiceMultiLang i18n,
- final UsersOnline usersOnline, final KuneProperties kuneProperties) throws IOException {
- this.mailService = mailService;
- this.waveService = waveService;
- this.xmppManager = xmppManager;
- this.i18n = i18n;
- this.usersOnline = usersOnline;
- emailTemplate = FileUtils.readFileToString(new File(
- kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
- Preconditions.checkNotNull(emailTemplate);
- Preconditions.checkArgument(TextUtils.notEmpty(emailTemplate));
- subjectPrefix = new StringBuffer("[").append(kuneProperties.get(KuneProperties.SITE_NAME)).append(
- "] ").toString();
- }
-
- @Override
- public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final boolean isHtml, final boolean forceSend, final User... recipients) {
- for (final User user : recipients) {
- final String username = user.getShortName();
- subject.setTemplate(subjectPrefix + subject.getTemplate());
- if (subject.shouldBeTranslated()) {
- // Translate per recipient language
- // final String subjectTranslation = i18n.tWithNT(user.getLanguage(),
- // subject.getTemplate(), "");
- // if (subjectTranslation != null) {
- // Right now commented because we are only testing
- // subject.setTemplate(subjectTranslation);
- // }
- }
- if (body.shouldBeTranslated()) {
- // final String bodyTranslation = i18n.tWithNT(user.getLanguage(),
- // body.getTemplate(), "");
- // if (bodyTranslation != null) {
- // Right now commented because we are only testing
- // body.setTemplate(bodyTranslation);
- // }
- }
- switch (notifyType) {
- case chat:
- // FIXME seems that html is not sending correctly... check server specs
- xmppManager.sendMessage(username,
- String.format("<b>%s</b>%s", subject.getString(), body.getString()));
- break;
- case email:
- if (forceSend || !usersOnline.isLogged(username)) {
- if (user.getEmailNotifFreq().equals(EmailNotificationFrequency.immediately)) {
- mailService.send(subject,
- FormatedString.build(emailTemplate.replace("%s", body.getString())), isHtml,
- user.getEmail());
- } else {
- // TODO: handle other types of notifications frequencies
- }
- }
- break;
- case wave:
- if (isHtml) {
- LOG.error("Wave html messages not supported yet");
- }
- waveService.createWave(subject.getString(), body.getString(), username);
- break;
- }
- }
- }
-
- @Override
- @Deprecated
- public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final User... dests) {
- send(notifyType, subject, body, false, false, dests);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,91 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.NoResultException;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.domain.Group;
-import cc.kune.domain.User;
-import cc.kune.domain.finders.UserFinder;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-public class NotifyService {
-
- public static final Log LOG = LogFactory.getLog(NotifyService.class);
- private final NotifyHtmlHelper helper;
- private final NotifySender sender;
- private final UserFinder userFinder;
-
- @Inject
- NotifyService(final NotifySender sender, final NotifyHtmlHelper helper, final UserFinder userFinder) {
- this.sender = sender;
- this.helper = helper;
- this.userFinder = userFinder;
- }
-
- @SuppressWarnings("unchecked")
- private void getAllUserMembers(final Set<User> users, final Group groupToNotify,
- final boolean onlyAdmins) {
- final Collection<Group> members;
- final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
- if (onlyAdmins) {
- members = admins;
- } else {
- final Set<Group> collabs = groupToNotify.getSocialNetwork().getAccessLists().getEditors().getList();
- members = CollectionUtils.union(admins, collabs);
- }
- for (final Group member : members) {
- if (member.isPersonal()) {
- final String shortName = member.getShortName();
- try {
- final User user = userFinder.findByShortName(shortName);
- users.add(user);
- } catch (final NoResultException e) {
- LOG.error(String.format("This personal group %s is not a local user", shortName));
- }
- } else {
- // Is a group, so go recursively
- getAllUserMembers(users, member, onlyAdmins);
- }
- }
-
- }
-
- public void notifyGroup(final Group groupToNotify, final Group groupSender, final String subject,
- final String message) {
- final Set<User> members = new HashSet<User>();
- getAllUserMembers(members, groupToNotify, false);
- notifyToAll(groupSender, subject, message, members);
- }
-
- public void notifyGroupAdmins(final Group groupToNotify, final Group groupSender,
- final String subject, final String message) {
- final Set<User> adminMembers = new HashSet<User>();
- getAllUserMembers(adminMembers, groupToNotify, true);
- notifyToAll(groupSender, subject, message, adminMembers);
- }
-
- private void notifyToAll(final Group groupSender, final String subject, final String message,
- final Collection<User> users) {
- for (final User to : users) {
- sender.send(NotifyType.email, FormatedString.build(subject),
- helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message), true,
- true, to);
- }
- }
-
- public void notifyUser(final User to, final Group group, final String subject, final String message) {
- sender.send(NotifyType.email, FormatedString.build(subject),
- helper.groupNotification(group.getShortName(), group.hasLogo(), message), true, true, to);
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifyType.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyType.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyType.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,9 +0,0 @@
-package cc.kune.core.server.notifier;
-
-/**
- * Type of notifications for users
- *
- */
-public enum NotifyType {
- chat, email, wave
-}
Added: trunk/src/main/java/cc/kune/core/server/notifier/PendingNotification.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/PendingNotification.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/PendingNotification.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,110 @@
+package cc.kune.core.server.notifier;
+
+import cc.kune.core.server.mail.FormatedString;
+
+/**
+ * The Class PendingNotification is used to store and send notifications (for
+ * instance email) via cron
+ */
+public class PendingNotification {
+
+ /** The body. */
+ private final FormatedString body;
+
+ /** The dest provider. */
+ private final DestinationProvider destProvider;
+
+ /** The force send. */
+ private final boolean forceSend;
+
+ /** The is html. */
+ private final boolean isHtml;
+
+ /** The notify type. */
+ private final NotificationType notifyType;
+
+ /** The subject. */
+ private final FormatedString subject;
+
+ /**
+ * Instantiates a new pending notification
+ *
+ * @param notifyType
+ * the notify type
+ * @param subject
+ * the subject
+ * @param body
+ * the body
+ * @param isHtml
+ * the is html
+ * @param forceSend
+ * the force send
+ * @param destProvider
+ * the dest provider
+ */
+ public PendingNotification(final NotificationType notifyType, final FormatedString subject,
+ final FormatedString body, final boolean isHtml, final boolean forceSend,
+ final DestinationProvider destProvider) {
+ this.notifyType = notifyType;
+ this.subject = subject;
+ this.body = body;
+ this.isHtml = isHtml;
+ this.forceSend = forceSend;
+ this.destProvider = destProvider;
+ }
+
+ /**
+ * Gets the body.
+ *
+ * @return the body
+ */
+ public FormatedString getBody() {
+ return body;
+ }
+
+ /**
+ * Gets the dest provider.
+ *
+ * @return the dest provider
+ */
+ public DestinationProvider getDestProvider() {
+ return destProvider;
+ }
+
+ /**
+ * Gets the notify type.
+ *
+ * @return the notify type
+ */
+ public NotificationType getNotifyType() {
+ return notifyType;
+ }
+
+ /**
+ * Gets the subject.
+ *
+ * @return the subject
+ */
+ public FormatedString getSubject() {
+ return subject;
+ }
+
+ /**
+ * Checks if is force send.
+ *
+ * @return true, if is force send
+ */
+ public boolean isForceSend() {
+ return forceSend;
+ }
+
+ /**
+ * Checks if is html.
+ *
+ * @return true, if is html
+ */
+ public boolean isHtml() {
+ return isHtml;
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationDailyJob.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationDailyJob.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationDailyJob.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,33 @@
+package cc.kune.core.server.notifier;
+
+import java.text.ParseException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.SchedulerException;
+
+import com.google.inject.Inject;
+
+public class PendingNotificationDailyJob implements Job {
+
+ public static final Log LOG = LogFactory.getLog(PendingNotificationDailyJob.class);
+
+ private final PendingNotificationSender pendingManager;
+
+ @Inject
+ public PendingNotificationDailyJob(final PendingNotificationSender pendingManager)
+ throws ParseException, SchedulerException {
+ this.pendingManager = pendingManager;
+ }
+
+ @Override
+ public void execute(final JobExecutionContext context) throws JobExecutionException {
+ LOG.info(String.format("Daily notifications cron job start, %s", pendingManager));
+ pendingManager.sendDailyNotifications();
+ LOG.info(String.format("Daily notifications cron job end, %s", pendingManager));
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationHourlyJob.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationHourlyJob.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationHourlyJob.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,38 @@
+package cc.kune.core.server.notifier;
+
+import java.text.ParseException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.SchedulerException;
+
+import cc.kune.wave.server.kspecific.WaveEmailNotifier;
+
+import com.google.inject.Inject;
+
+public class PendingNotificationHourlyJob implements Job {
+
+ public static final Log LOG = LogFactory.getLog(PendingNotificationHourlyJob.class);
+ private final PendingNotificationSender pendingManager;
+
+ private final WaveEmailNotifier waveNotifier;
+
+ @Inject
+ public PendingNotificationHourlyJob(final PendingNotificationSender pendingManager,
+ final WaveEmailNotifier waveNotifier) throws ParseException, SchedulerException {
+ this.pendingManager = pendingManager;
+ this.waveNotifier = waveNotifier;
+ }
+
+ @Override
+ public void execute(final JobExecutionContext context) throws JobExecutionException {
+ LOG.info(String.format("Hourly notifications cron job start, %s", pendingManager));
+ pendingManager.sendHourlyNotifications();
+ waveNotifier.clearUpdatedWaves();
+ LOG.info(String.format("Hourly notifications cron job end, %s", pendingManager));
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationImmediateJob.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationImmediateJob.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationImmediateJob.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,33 @@
+package cc.kune.core.server.notifier;
+
+import java.text.ParseException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.SchedulerException;
+
+import com.google.inject.Inject;
+
+public class PendingNotificationImmediateJob implements Job {
+
+ public static final Log LOG = LogFactory.getLog(PendingNotificationImmediateJob.class);
+
+ private final PendingNotificationSender pendingManager;
+
+ @Inject
+ public PendingNotificationImmediateJob(final PendingNotificationSender pendingManager)
+ throws ParseException, SchedulerException {
+ this.pendingManager = pendingManager;
+ }
+
+ @Override
+ public void execute(final JobExecutionContext context) throws JobExecutionException {
+ LOG.info(String.format("Immediate notifications cron job start, %s", pendingManager));
+ pendingManager.sendImmediateNotifications();
+ LOG.info(String.format("Immediate notifications cron job end, %s", pendingManager));
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationSender.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationSender.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/PendingNotificationSender.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,148 @@
+package cc.kune.core.server.notifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
+import cc.kune.domain.User;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * The Class PendingNotificationSender is used to store and send pending
+ * notifications via cron tasks.
+ */
+@Singleton
+public class PendingNotificationSender {
+
+ /** The Constant NO_NEXT. */
+ private static final Collection<PendingNotification> NO_NEXT = null;
+
+ /** The daily pend notif. list */
+ private final Set<PendingNotification> dailyPendNotif;
+
+ /** The houry pend notif. list */
+ private final Set<PendingNotification> hourlyPendNotif;
+
+ /** The immediate pend notif. list */
+ private final Set<PendingNotification> immediatePendNotif;
+
+ /** The sender. */
+ private final NotificationSender sender;
+
+ /**
+ * Instantiates a new pending notifications manager.
+ *
+ * @param sender
+ * the sender
+ */
+ @Inject
+ public PendingNotificationSender(final NotificationSender sender) {
+ this.sender = sender;
+ immediatePendNotif = new HashSet<PendingNotification>();
+ hourlyPendNotif = new HashSet<PendingNotification>();
+ dailyPendNotif = new HashSet<PendingNotification>();
+ }
+
+ public void add(final NotificationType type, final FormatedString subject, final FormatedString body,
+ final boolean isHtml, final boolean forceSend, final User to) {
+ add(new PendingNotification(type, subject, body, isHtml, forceSend,
+ new SimpleDestinationProvider(to)));
+ }
+
+ /**
+ * Adds a pending notification.
+ *
+ * @param notification
+ * the notification
+ */
+ public void add(final PendingNotification notification) {
+ if (!hourlyPendNotif.contains(notification)) {
+ // If we have send a similar notification this hour just ignore
+ immediatePendNotif.add(notification);
+ }
+ }
+
+ /**
+ * Gets the daily pending notifications count.
+ *
+ * @return the daily count
+ */
+ public int getDailyCount() {
+ return dailyPendNotif.size();
+ }
+
+ /**
+ * Gets the hourly pending notifications count.
+ *
+ * @return the hourly count
+ */
+ public int getHourlyCount() {
+ return hourlyPendNotif.size();
+ }
+
+ /**
+ * Gets the immediate pending notifications count.
+ *
+ * @return the immediate count
+ */
+ public int getImmediateCount() {
+ return immediatePendNotif.size();
+ }
+
+ /**
+ * Send some list of notifications (called vÃa cron).
+ *
+ * @param list
+ * the list to process
+ * @param nextList
+ * the next list to store (we have a list of Users some that wants an
+ * immediate notification and other that want periodical
+ * notifications instead.
+ * @param currentFreq
+ * The current frequency of notifications, that is, we'll send
+ * notifications only to users with this frequency configured
+ */
+ private void send(final Collection<PendingNotification> list,
+ final Collection<PendingNotification> nextList, final EmailNotificationFrequency currentFreq) {
+ for (final PendingNotification notification : list) {
+ sender.send(notification, currentFreq);
+ if (!notification.isForceSend() && nextList != NO_NEXT) {
+ // Forced Send, are send immediately (independent of how User has its
+ // notification configured)!
+ nextList.add(notification);
+ }
+ }
+ list.clear();
+ }
+
+ /**
+ * Send daily notifications.
+ */
+ public void sendDailyNotifications() {
+ send(dailyPendNotif, NO_NEXT, EmailNotificationFrequency.immediately);
+ }
+
+ /**
+ * Send hourly notifications.
+ */
+ public void sendHourlyNotifications() {
+ send(hourlyPendNotif, dailyPendNotif, EmailNotificationFrequency.hourly);
+ }
+
+ /**
+ * Send immediate notifications.
+ */
+ public void sendImmediateNotifications() {
+ send(immediatePendNotif, hourlyPendNotif, EmailNotificationFrequency.daily);
+ }
+
+ @Override
+ public String toString() {
+ return "pendingNotifications: [" + getImmediateCount() + ", " + getHourlyCount() + ", "
+ + getDailyCount() + "]";
+ }
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/SimpleDestinationProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/SimpleDestinationProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/SimpleDestinationProvider.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,58 @@
+package cc.kune.core.server.notifier;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import cc.kune.domain.User;
+
+public class SimpleDestinationProvider implements DestinationProvider {
+ private final List<User> list;
+
+ /**
+ * Instantiates a new simple destination provider (used for single
+ * notifications like add/remove participant emails).
+ *
+ * @param user
+ * the user to send the email or other type of notification
+ */
+ public SimpleDestinationProvider(final User user) {
+ list = Arrays.asList(user);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final SimpleDestinationProvider other = (SimpleDestinationProvider) obj;
+ if (list == null) {
+ if (other.list != null) {
+ return false;
+ }
+ } else if (!list.equals(other.list)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public Collection<User> getDest() {
+ return list;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((list == null) ? 0 : list.hashCode());
+ return result;
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/server/notifier/WaveDestinationProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/WaveDestinationProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/WaveDestinationProvider.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,88 @@
+package cc.kune.core.server.notifier;
+
+import java.util.Collection;
+
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.domain.User;
+import cc.kune.wave.server.KuneWaveServerUtils;
+
+/**
+ * The Class WaveDestinationProvider. A WaveRef is used to get the participants
+ * and to send notifications to them
+ */
+public class WaveDestinationProvider implements DestinationProvider {
+
+ private final String author;
+
+ /** The list. */
+ private Collection<User> list;
+
+ /** The ref. */
+ private final WaveRef ref;
+
+ /**
+ * Instantiates a new wave destination provider.
+ *
+ * @param ref
+ * the ref
+ */
+ public WaveDestinationProvider(final WaveRef ref, final String author) {
+ this.ref = ref;
+ this.author = author;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final WaveDestinationProvider other = (WaveDestinationProvider) obj;
+ if (ref == null) {
+ if (other.ref != null) {
+ return false;
+ }
+ } else if (!ref.equals(other.ref)) {
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see cc.kune.wave.server.kspecific.pendnotif.DestinationProvider#getDest()
+ */
+ @Override
+ public Collection<User> getDest() {
+ if (list == null) {
+ list = KuneWaveServerUtils.getLocalParticipants(ref, author);
+ }
+ return list;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((ref == null) ? 0 : ref.hashCode());
+ return result;
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -32,15 +32,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.quartz.SchedulerException;
import org.waveprotocol.box.server.rpc.ServerRpcProvider;
import cc.kune.core.server.error.ServerException;
import cc.kune.core.server.rack.dock.Dock;
import cc.kune.core.server.rack.dock.RequestMatcher;
import cc.kune.core.server.rack.utils.RackHelper;
-import cc.kune.core.server.scheduler.CronServerTasksManager;
-import cc.kune.wave.server.kspecific.WaveEmailNotifier;
+import cc.kune.core.server.scheduler.CustomJobFactory;
import com.google.inject.Injector;
@@ -143,16 +141,12 @@
rack = builder.getRack();
injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE);
final Injector kuneChildInjector = installInjector(filterConfig, rack, injector);
+ final CustomJobFactory jobFactory = kuneChildInjector.getInstance(CustomJobFactory.class);
+ jobFactory.setInjector(kuneChildInjector);
startContainerListeners(rack.getListeners(), kuneChildInjector);
docks = rack.getDocks();
excludes = rack.getExcludes();
initFilters(filterConfig);
- kuneChildInjector.getInstance(WaveEmailNotifier.class);
- try {
- kuneChildInjector.getInstance(CronServerTasksManager.class).start();
- } catch (final SchedulerException e) {
- LOG.error("Error starting cron scheduler", e);
- }
LOG.debug("INITIALIZATION DONE!");
}
@@ -181,7 +175,7 @@
private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
final Injector injector) {
- LOG.debug("STOPING CONTAINER LISTENERS...");
+ LOG.debug("STOPPING CONTAINER LISTENERS...");
for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
final ContainerListener listener = injector.getInstance(listenerClass);
listener.stop();
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -28,7 +28,7 @@
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.SocialNetworkManager;
import cc.kune.core.server.mapper.Mapper;
-import cc.kune.core.server.notifier.NotifyService;
+import cc.kune.core.server.notifier.NotificationService;
import cc.kune.core.shared.domain.AccessRol;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
@@ -43,14 +43,14 @@
private final GroupManager groupManager;
private final Mapper mapper;
- private final NotifyService notifyService;
+ private final NotificationService notifyService;
private final SocialNetworkManager socialNetworkManager;
private final UserSessionManager userSessionManager;
@Inject
public SocialNetworkRPC(final UserSessionManager userSessionManager, final GroupManager groupManager,
final SocialNetworkManager socialNetworkManager, final Mapper mapper,
- final NotifyService notifyService) {
+ final NotificationService notifyService) {
this.userSessionManager = userSessionManager;
this.groupManager = groupManager;
this.socialNetworkManager = socialNetworkManager;
Deleted: trunk/src/main/java/cc/kune/core/server/scheduler/AbstractJob.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/scheduler/AbstractJob.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/scheduler/AbstractJob.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,26 +0,0 @@
-package cc.kune.core.server.scheduler;
-
-import static org.quartz.CronScheduleBuilder.cronSchedule;
-import static org.quartz.JobBuilder.newJob;
-import static org.quartz.TriggerBuilder.newTrigger;
-
-import java.text.ParseException;
-
-import org.quartz.CronTrigger;
-import org.quartz.Job;
-import org.quartz.JobDetail;
-import org.quartz.SchedulerException;
-
-public abstract class AbstractJob implements Job {
- private static final String DEF_GROUP = "groupdef";
-
- public AbstractJob(final CronServerTasksManager manager, final String cronExpression)
- throws ParseException, SchedulerException {
- final JobDetail job = newJob(HourlyJob.class).withIdentity("hourlyjob1", DEF_GROUP).build();
-
- final CronTrigger trigger = newTrigger().withIdentity("hourlytrigger1", DEF_GROUP).withSchedule(
- cronSchedule(cronExpression)).build();
-
- manager.scheduleJob(job, trigger);
- }
-}
Modified: trunk/src/main/java/cc/kune/core/server/scheduler/CronServerTasksManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/scheduler/CronServerTasksManager.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/scheduler/CronServerTasksManager.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,34 +1,77 @@
package cc.kune.core.server.scheduler;
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.JobBuilder.newJob;
+import static org.quartz.TriggerBuilder.newTrigger;
+
+import java.text.ParseException;
import java.util.Date;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.quartz.CronTrigger;
+import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
+import cc.kune.core.server.notifier.PendingNotificationDailyJob;
+import cc.kune.core.server.notifier.PendingNotificationHourlyJob;
+import cc.kune.core.server.notifier.PendingNotificationImmediateJob;
+import cc.kune.core.server.rack.ContainerListener;
+
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
-public class CronServerTasksManager {
+public class CronServerTasksManager implements ContainerListener {
+ private static final String DEF_GROUP = "groupdef";
+ public static final Log LOG = LogFactory.getLog(CronServerTasksManager.class);
private final Scheduler sched;
@Inject
- public CronServerTasksManager(final StdSchedulerFactory sf) throws SchedulerException {
+ public CronServerTasksManager(final StdSchedulerFactory sf, final CustomJobFactory jobFactory)
+ throws SchedulerException {
sched = sf.getScheduler();
+ sched.setJobFactory(jobFactory);
}
- public Date scheduleJob(final JobDetail job, final CronTrigger trigger) throws SchedulerException {
+ private void logError(final Exception e) {
+ LOG.error("Error starting cron scheduler", e);
+ }
+
+ public Date scheduleJob(final Class<? extends Job> jobClass, final String cronExpression,
+ final String identify) throws SchedulerException, ParseException {
+ final JobDetail job = newJob(jobClass).withIdentity(identify + "job", DEF_GROUP).build();
+ final CronTrigger trigger = newTrigger().withIdentity(identify + "trigger", DEF_GROUP).withSchedule(
+ cronSchedule(cronExpression)).startNow().build();
return sched.scheduleJob(job, trigger);
}
- public void start() throws SchedulerException {
- sched.start();
+ @Override
+ public void start() {
+ LOG.info("Starting cron manager");
+ try {
+
+ sched.start();
+ scheduleJob(PendingNotificationImmediateJob.class, "0 */2 * * * ?", "pendinnotifimmediate");
+ scheduleJob(PendingNotificationHourlyJob.class, "0 0 * * * ?", "pendingnotifhourly");
+ scheduleJob(PendingNotificationDailyJob.class, "0 5 0 * * ?", "pendingnotifdaily");
+ } catch (final SchedulerException e) {
+ logError(e);
+ } catch (final ParseException e) {
+ logError(e);
+ }
}
- public void stop() throws SchedulerException {
- sched.shutdown(true);
+ @Override
+ public void stop() {
+ LOG.info("Stopping cron manager");
+ try {
+ sched.shutdown(true);
+ } catch (final SchedulerException e) {
+ logError(e);
+ }
}
}
Added: trunk/src/main/java/cc/kune/core/server/scheduler/CustomJobFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/scheduler/CustomJobFactory.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/scheduler/CustomJobFactory.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,31 @@
+package cc.kune.core.server.scheduler;
+
+import org.quartz.Job;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.spi.JobFactory;
+import org.quartz.spi.TriggerFiredBundle;
+
+import com.google.inject.Injector;
+import com.google.inject.Singleton;
+
+/**
+ * A factory for creating CustomJob objects. See:
+ * http://javaeenotes.blogspot.com
+ * /2011/09/inject-instances-in-quartz-jobs-with.html
+ */
+@Singleton
+public class CustomJobFactory implements JobFactory {
+
+ private Injector injector;
+
+ @Override
+ public Job newJob(final TriggerFiredBundle bundle, final Scheduler scheduler)
+ throws SchedulerException {
+ return injector.getInstance(bundle.getJobDetail().getJobClass());
+ }
+
+ public void setInjector(final Injector injector) {
+ this.injector = injector;
+ }
+}
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/core/server/scheduler/DailyJob.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/scheduler/DailyJob.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/scheduler/DailyJob.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,13 +0,0 @@
-package cc.kune.core.server.scheduler;
-
-import java.text.ParseException;
-
-import org.quartz.SchedulerException;
-
-public abstract class DailyJob extends AbstractJob {
-
- public DailyJob(final CronServerTasksManager manager) throws ParseException, SchedulerException {
- super(manager, "0 0 * * * ?");
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/server/scheduler/HourlyJob.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/scheduler/HourlyJob.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/core/server/scheduler/HourlyJob.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,13 +0,0 @@
-package cc.kune.core.server.scheduler;
-
-import java.text.ParseException;
-
-import org.quartz.SchedulerException;
-
-public abstract class HourlyJob extends AbstractJob {
-
- public HourlyJob(final CronServerTasksManager manager) throws ParseException, SchedulerException {
- super(manager, "0 * * * * ?");
- }
-
-}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -111,7 +111,6 @@
});
};
}
-
);
}
}
Modified: trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -44,7 +44,7 @@
import cc.kune.domain.Content;
import cc.kune.domain.Group;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveUtils;
+import cc.kune.wave.server.KuneWaveServerUtils;
import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
@@ -91,7 +91,7 @@
}
members.add(getUserGroup().getShortName());
Collections.sort(members);
- waveManager.addParticipants(KuneWaveUtils.getWaveRef(content),
+ waveManager.addParticipants(KuneWaveServerUtils.getWaveRef(content),
content.getAuthors().get(0).getShortName(), getUserGroup().getShortName(),
members.toArray(new String[members.size()]));
}
Copied: trunk/src/main/java/cc/kune/wave/server/KuneWaveServerUtils.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveServerUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveServerUtils.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.server;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.NoResultException;
+
+import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
+
+import cc.kune.core.client.errors.DefaultException;
+import cc.kune.domain.Content;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.UserFinder;
+import cc.kune.wave.server.kspecific.KuneWaveService;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.wave.api.Participants;
+
+public class KuneWaveServerUtils {
+
+ @Inject
+ static Provider<ParticipantUtils> participantUtils;
+ @Inject
+ static Provider<UserFinder> userFinder;
+ @Inject
+ static Provider<KuneWaveService> waveService;
+
+ public static Collection<User> getLocalParticipants(final WaveRef waveref, final String author) {
+ final Participants participants = waveService.get().getParticipants(waveref, author);
+ final Set<User> list = new HashSet<User>();
+ for (final String participant : participants) {
+ participantUtils.get().isLocal(participant);
+ try {
+ list.add(userFinder.get().findByShortName(participantUtils.get().getAddressName(participant)));
+ } catch (final NoResultException e) {
+ // Seems is not a local user
+ }
+ }
+ return list;
+ }
+
+ public static String getUrl(final WaveRef waveref) {
+ return JavaWaverefEncoder.encodeToUriPathSegment(waveref);
+ }
+
+ public static WaveRef getWaveRef(final Content content) {
+ try {
+ return JavaWaverefEncoder.decodeWaveRefFromPath(String.valueOf(content.getWaveId()));
+ } catch (final InvalidWaveRefException e) {
+ throw new DefaultException("Error getting the wave");
+ }
+ }
+}
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.server;
-
-import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
-
-import cc.kune.core.client.errors.DefaultException;
-import cc.kune.domain.Content;
-
-public class KuneWaveUtils {
- public static String getUrl(final WaveRef waveref) {
- return JavaWaverefEncoder.encodeToUriPathSegment(waveref);
- }
-
- public static WaveRef getWaveRef(final Content content) {
- try {
- return JavaWaverefEncoder.decodeWaveRefFromPath(String.valueOf(content.getWaveId()));
- } catch (final InvalidWaveRefException e) {
- throw new DefaultException("Error getting the wave");
- }
- }
-}
Modified: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -34,6 +34,7 @@
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Singleton;
+import com.google.wave.api.Participants;
import com.google.wave.api.Wavelet;
@SuppressWarnings("serial")
@@ -145,6 +146,12 @@
}
@Override
+ public Participants getParticipants(final WaveRef waveref, final String author) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
public String getRobotId() {
return "kune-agent";
}
@@ -160,6 +167,12 @@
}
@Override
+ public String getTitle(final WaveRef waveName, final String author) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
public boolean isParticipant(final Wavelet wavelet, final String user) {
// TODO Auto-generated method stub
return false;
Modified: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -26,6 +26,7 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
+import com.google.wave.api.Participants;
import com.google.wave.api.Wavelet;
public interface KuneWaveService {
@@ -54,6 +55,10 @@
Wavelet fetchWave(WaveRef waveRef, String author);
+ Participants getParticipants(WaveRef waveref, String author);
+
+ String getTitle(WaveRef waveName, String author);
+
boolean isParticipant(Wavelet wavelet, String user);
String render(Wavelet wavelet);
@@ -64,5 +69,4 @@
String someValue);
void setTitle(WaveRef waveName, String title, String author);
-
}
Modified: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -419,6 +419,17 @@
}
@Override
+ public Participants getParticipants(final WaveRef waveref, final String author) {
+ return fetchWave(waveref, author).getParticipants();
+ }
+
+ @Override
+ public String getTitle(final WaveRef waveName, final String author) {
+ final Wavelet wavelet = fetchWave(waveName, author);
+ return wavelet.getTitle();
+ }
+
+ @Override
public boolean isParticipant(final Wavelet wavelet, final String user) {
return wavelet.getParticipants().contains(participantUtils.of(user).toString());
}
Deleted: trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,83 +0,0 @@
-package cc.kune.wave.server.kspecific;
-
-import javax.persistence.NoResultException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.waveprotocol.box.common.DeltaSequence;
-import org.waveprotocol.box.server.waveserver.WaveBus;
-import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber;
-import org.waveprotocol.wave.model.id.IdUtil;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.id.WaveletName;
-import org.waveprotocol.wave.model.operation.wave.AddParticipant;
-import org.waveprotocol.wave.model.operation.wave.TransformedWaveletDelta;
-import org.waveprotocol.wave.model.operation.wave.WaveletBlipOperation;
-import org.waveprotocol.wave.model.operation.wave.WaveletOperation;
-import org.waveprotocol.wave.model.version.HashedVersion;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.wave.data.ReadableWaveletData;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import cc.kune.core.server.LogThis;
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.core.server.notifier.NotifySender;
-import cc.kune.core.server.notifier.NotifyType;
-import cc.kune.core.server.properties.KuneBasicProperties;
-import cc.kune.domain.User;
-import cc.kune.domain.finders.UserFinder;
-import cc.kune.wave.server.KuneWaveUtils;
-import cc.kune.wave.server.ParticipantUtils;
-
-import com.google.inject.Inject;
-
-@LogThis
-public class WaveEmailNotifier {
- public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class);
-
- @Inject
- public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService,
- final KuneBasicProperties basicProperties, final ParticipantUtils partUtils,
- final UserFinder userFinder) {
- waveBus.subscribe(new Subscriber() {
- @Override
- public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) {
- }
-
- @Override
- public void waveletUpdate(final ReadableWaveletData wavelet, final DeltaSequence deltas) {
- final WaveletId waveletId = wavelet.getWaveletId();
- if (IdUtil.isUserDataWavelet(waveletId)) {
- return;
- }
- for (final TransformedWaveletDelta delta : deltas) {
- for (final WaveletOperation op : delta) {
- if (op instanceof AddParticipant) {
- final ParticipantId participant = ((AddParticipant) op).getParticipantId();
- final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId));
- final FormatedString body = FormatedString.build(
- "Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>",
- basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url);
- final String address = participant.getAddress();
- if (partUtils.isLocal(address)) {
- final String userName = partUtils.getAddressName(address);
- try {
- final User user = userFinder.findByShortName(userName);
- notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
- body, true, false, user);
- // notifyService.send(NotifyType.chat,
- // FormatedString.build("New message"), body, true,
- // user);
- } catch (final NoResultException e) {
- // Seems is not a local user
- }
- }
- } else if (op instanceof WaveletBlipOperation) {
-
- }
- }
- }
- }
- });
- }
-}
Added: trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,153 @@
+package cc.kune.wave.server.kspecific;
+
+import java.util.HashSet;
+
+import javax.persistence.NoResultException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.waveprotocol.box.common.DeltaSequence;
+import org.waveprotocol.box.server.waveserver.WaveBus;
+import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber;
+import org.waveprotocol.wave.model.id.IdUtil;
+import org.waveprotocol.wave.model.id.WaveId;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.id.WaveletName;
+import org.waveprotocol.wave.model.operation.wave.AddParticipant;
+import org.waveprotocol.wave.model.operation.wave.RemoveParticipant;
+import org.waveprotocol.wave.model.operation.wave.TransformedWaveletDelta;
+import org.waveprotocol.wave.model.operation.wave.WaveletBlipOperation;
+import org.waveprotocol.wave.model.operation.wave.WaveletOperation;
+import org.waveprotocol.wave.model.version.HashedVersion;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.wave.data.ReadableWaveletData;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.core.client.state.SiteTokens;
+import cc.kune.core.server.LogThis;
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.notifier.NotificationType;
+import cc.kune.core.server.notifier.PendingNotification;
+import cc.kune.core.server.notifier.PendingNotificationSender;
+import cc.kune.core.server.notifier.SimpleDestinationProvider;
+import cc.kune.core.server.notifier.WaveDestinationProvider;
+import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.core.server.rack.ContainerListener;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.UserFinder;
+import cc.kune.wave.server.KuneWaveServerUtils;
+import cc.kune.wave.server.ParticipantUtils;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@LogThis
+@Singleton
+public class WaveEmailNotifier implements ContainerListener {
+ public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class);
+ private HashSet<WaveId> updatedWavesInLastHour;
+
+ @Inject
+ public WaveEmailNotifier(final WaveBus waveBus, final PendingNotificationSender notificator,
+ final KuneBasicProperties basicProperties, final ParticipantUtils partUtils,
+ final KuneWaveService waveService, final UserFinder userFinder) {
+
+ final String siteCommonName = basicProperties.getSiteCommonName();
+ final String siteUrl = basicProperties.getSiteUrl();
+ updatedWavesInLastHour = new HashSet<WaveId>();
+ waveBus.subscribe(new Subscriber() {
+
+ private void addPendingNotif(final ParticipantId participant, final FormatedString subject,
+ final FormatedString body) {
+ final String address = participant.getAddress();
+ if (partUtils.isLocal(address)) {
+ final String userName = partUtils.getAddressName(address);
+ try {
+ final User user = userFinder.findByShortName(userName);
+ notificator.add(new PendingNotification(NotificationType.email, subject, body, true, false,
+ new SimpleDestinationProvider(user)));
+ } catch (final NoResultException e) {
+ // Seems is not a local user
+ }
+ }
+ }
+
+ private String getUrl(final ReadableWaveletData wavelet, final WaveletId waveletId) {
+ return KuneWaveServerUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId));
+ }
+
+ private FormatedString newWaveTemplate(final String url) {
+ return FormatedString.build(
+ "Hi there,<br><br>You have a new message in your inbox at %s. <a href=\"%s#%s\">Read more</a>.<br>",
+ siteCommonName, siteUrl, url);
+ }
+
+ private FormatedString removeWaveTemplate(final String by, final String title) {
+ return FormatedString.build(
+ "Hi there,<br><br>You have been removed by '%s' from message '%s' at %s. <a href=\"%s#%s\">Read more</a>.<br>",
+ by, title, siteCommonName, siteUrl, SiteTokens.WAVEINBOX);
+ }
+
+ private FormatedString updatedWaveTemplate(final String by, final String url) {
+ return FormatedString.build(
+ "Hi there,<br><br>You have an updated message by '%s' in your inbox at %s. <a href=\"%s#%s\">Read more</a>.<br>",
+ by, siteCommonName, siteUrl, url);
+ }
+
+ @Override
+ public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) {
+ }
+
+ @Override
+ public void waveletUpdate(final ReadableWaveletData wavelet, final DeltaSequence deltas) {
+ final WaveletId waveletId = wavelet.getWaveletId();
+ if (IdUtil.isUserDataWavelet(waveletId)) {
+ return;
+ }
+ for (final TransformedWaveletDelta delta : deltas) {
+ for (final WaveletOperation op : delta) {
+ if (op instanceof AddParticipant) {
+ final ParticipantId participant = ((AddParticipant) op).getParticipantId();
+ addPendingNotif(participant, FormatedString.build("You have a new message"),
+ newWaveTemplate(getUrl(wavelet, waveletId)));
+ } else if (op instanceof RemoveParticipant) {
+ final ParticipantId participant = ((RemoveParticipant) op).getParticipantId();
+ final ParticipantId by = ((RemoveParticipant) op).getContext().getCreator();
+ final String title = waveService.getTitle(WaveRef.of(wavelet.getWaveId(), waveletId),
+ by.toString());
+ addPendingNotif(participant, FormatedString.build("You have been removed from message"),
+ removeWaveTemplate(by.toString(), title));
+ } else if (op instanceof WaveletBlipOperation) {
+ final WaveId waveId = wavelet.getWaveId();
+ if (!updatedWavesInLastHour.contains(waveId)) {
+ updatedWavesInLastHour.add(waveId);
+ // Replies, etc
+ final ParticipantId by = ((WaveletBlipOperation) op).getContext().getCreator();
+ // Duplicate code above
+ final WaveRef waveref = WaveRef.of(waveId, waveletId);
+ final String url = KuneWaveServerUtils.getUrl(waveref);
+ notificator.add(new PendingNotification(NotificationType.email,
+ FormatedString.build("You have an updated message"), updatedWaveTemplate(
+ by.toString(), url), true, false, new WaveDestinationProvider(waveref,
+ by.toString())));
+ }
+ }
+ }
+ }
+ }
+ });
+ }
+
+ public void clearUpdatedWaves() {
+ updatedWavesInLastHour.clear();
+ }
+
+ @Override
+ public void start() {
+ }
+
+ @Override
+ public void stop() {
+ }
+
+}
Added: trunk/src/test/java/cc/kune/core/server/notifier/AbstractPendingNotificationTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/notifier/AbstractPendingNotificationTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/notifier/AbstractPendingNotificationTest.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,32 @@
+package cc.kune.core.server.notifier;
+
+import org.junit.Before;
+
+import cc.kune.core.server.notifier.SimpleDestinationProvider;
+import cc.kune.domain.User;
+
+public abstract class AbstractPendingNotificationTest {
+
+ protected SimpleDestinationProvider diferentProvider;
+ protected User otherDiferentUser;
+ protected User sameUser;
+ protected SimpleDestinationProvider someSimilarUserProvider;
+ protected SimpleDestinationProvider someSimilarUserProvider2;
+ protected SimpleDestinationProvider someUserProvider;
+ protected User user;
+
+ @Before
+ public void before() {
+ user = new User("test1", "test1 name", "falseEmail@", "some passwd", "somediggest".getBytes(),
+ "some salt".getBytes(), null, null, null);
+ sameUser = new User("test1", "test1 name", "falseEmail@", "some passwd", "somediggest".getBytes(),
+ "some salt".getBytes(), null, null, null);
+ otherDiferentUser = new User("test2", "test2 name", "falseEmail@", "some passwd",
+ "somediggest".getBytes(), "some salt".getBytes(), null, null, null);
+ someUserProvider = new SimpleDestinationProvider(user);
+ someSimilarUserProvider = new SimpleDestinationProvider(user);
+ someSimilarUserProvider2 = new SimpleDestinationProvider(sameUser);
+ diferentProvider = new SimpleDestinationProvider(otherDiferentUser);
+ }
+
+}
Copied: trunk/src/test/java/cc/kune/core/server/notifier/NotificationHtmlHelperTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java)
===================================================================
--- trunk/src/test/java/cc/kune/core/server/notifier/NotificationHtmlHelperTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/notifier/NotificationHtmlHelperTest.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,30 @@
+package cc.kune.core.server.notifier;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.core.server.properties.KunePropertiesDefault;
+import cc.kune.core.server.utils.AbsoluteFileDownloadUtils;
+
+public class NotificationHtmlHelperTest {
+ private static final String GROUP_NAME = "groupShortName";
+ private static final String MESSAGE = "some message";
+
+ NotificationHtmlHelper helper;
+
+ @Test
+ public void basicTest() {
+ assertNotNull(helper.groupNotification(GROUP_NAME, false, MESSAGE).getString());
+ assertNotNull(helper.groupNotification(GROUP_NAME, true, MESSAGE).getString());
+ }
+
+ @Before
+ public void before() {
+ helper = new NotificationHtmlHelper(new AbsoluteFileDownloadUtils(new KuneBasicProperties(
+ new KunePropertiesDefault("kune.properties"))));
+ }
+
+}
Deleted: trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java 2012-01-09 15:37:06 UTC (rev 1657)
+++ trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -1,30 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import cc.kune.core.server.properties.KuneBasicProperties;
-import cc.kune.core.server.properties.KunePropertiesDefault;
-import cc.kune.core.server.utils.AbsoluteFileDownloadUtils;
-
-public class NotifyHtmlHelperTest {
- private static final String GROUP_NAME = "groupShortName";
- private static final String MESSAGE = "some message";
-
- NotifyHtmlHelper helper;
-
- @Test
- public void basicTest() {
- assertNotNull(helper.groupNotification(GROUP_NAME, false, MESSAGE).getString());
- assertNotNull(helper.groupNotification(GROUP_NAME, true, MESSAGE).getString());
- }
-
- @Before
- public void before() {
- helper = new NotifyHtmlHelper(new AbsoluteFileDownloadUtils(new KuneBasicProperties(
- new KunePropertiesDefault("kune.properties"))));
- }
-
-}
Added: trunk/src/test/java/cc/kune/core/server/notifier/PendingNotificationSenderTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/notifier/PendingNotificationSenderTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/notifier/PendingNotificationSenderTest.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,85 @@
+package cc.kune.core.server.notifier;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import cc.kune.core.server.mail.FormatedString;
+
+public class PendingNotificationSenderTest extends AbstractPendingNotificationTest {
+
+ private static final FormatedString BODY = FormatedString.build("Some body");
+ private static final FormatedString OTHER_BODY = FormatedString.build("Some other body");
+ private static final FormatedString OTHER_SUBJECT = FormatedString.build("Some other subject");
+ private static final FormatedString SUBJECT = FormatedString.build("Some subject");
+ private PendingNotificationSender manager;
+ private PendingNotification otherNotif;
+ private NotificationSender sender;
+ private PendingNotification someForcedNotif;
+ private PendingNotification someNotif;
+
+ private void assertQueues(final int i, final int j, final int k) {
+ // TODO Auto-generated method stub
+ assertEquals(manager.getImmediateCount(), i);
+ assertEquals(manager.getHourlyCount(), j);
+ assertEquals(manager.getDailyCount(), k);
+ }
+
+ @Override
+ @Before
+ public void before() {
+ sender = Mockito.mock(NotificationSender.class);
+ manager = new PendingNotificationSender(sender);
+ someNotif = new PendingNotification(NotificationType.email, SUBJECT, BODY, false, false,
+ someUserProvider);
+ otherNotif = new PendingNotification(NotificationType.email, OTHER_SUBJECT, OTHER_BODY, false,
+ false, someUserProvider);
+ someForcedNotif = new PendingNotification(NotificationType.email, SUBJECT, BODY, false, true,
+ someUserProvider);
+ }
+
+ @Test
+ public void testForcePendingNotification() {
+ manager.add(someForcedNotif);
+ assertQueues(1, 0, 0);
+ manager.sendImmediateNotifications();
+ assertQueues(0, 0, 0);
+ }
+
+ @Test
+ public void testMixtureOfNotifications() {
+ manager.add(someNotif);
+ manager.add(someForcedNotif);
+ assertQueues(2, 0, 0);
+ manager.sendImmediateNotifications();
+ assertQueues(0, 1, 0);
+ }
+
+ @Test
+ public void testSimplePendingNotification() {
+ manager.add(someNotif);
+ // we add two times (imagine two editions)
+ manager.add(someNotif);
+ manager.add(otherNotif);
+ assertQueues(2, 0, 0);
+ manager.sendImmediateNotifications();
+ assertQueues(0, 2, 0);
+ // we repeat some notification (for instance an edit) and should be ignored
+ manager.add(someNotif);
+ assertQueues(0, 2, 0);
+ manager.sendHourlyNotifications();
+ assertQueues(0, 0, 2);
+ // we repeat some notification (for instance an edit) and should be ignored
+ manager.add(someNotif);
+ assertQueues(1, 0, 2);
+ manager.sendImmediateNotifications();
+ assertQueues(0, 1, 2);
+ manager.sendHourlyNotifications();
+ assertQueues(0, 0, 2);
+ manager.sendDailyNotifications();
+ assertQueues(0, 0, 0);
+ }
+
+}
Added: trunk/src/test/java/cc/kune/core/server/notifier/SimpleDestinationProviderTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/notifier/SimpleDestinationProviderTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/notifier/SimpleDestinationProviderTest.java 2012-01-12 01:40:41 UTC (rev 1658)
@@ -0,0 +1,18 @@
+package cc.kune.core.server.notifier;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class SimpleDestinationProviderTest extends AbstractPendingNotificationTest {
+
+ @Test
+ public void shouldCompareWell() {
+ assertTrue(someUserProvider.equals(someSimilarUserProvider));
+ assertTrue(someUserProvider.equals(someSimilarUserProvider2));
+ assertTrue(someSimilarUserProvider.equals(someSimilarUserProvider2));
+ assertFalse(someUserProvider.equals(diferentProvider));
+ }
+
+}
1
0
Author: vjrj_
Date: 2012-01-09 16:37:06 +0100 (Mon, 09 Jan 2012)
New Revision: 1657
Removed:
trunk/src/main/java/org/ourproject/
trunk/src/main/java/org/waveprotocol/box/server/
trunk/src/main/java/org/waveprotocol/box/webclient/
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/impl/
Modified:
trunk/src/main/java/cc/kune/core/client/state/Session.java
trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java
trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java
trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/manager/Manager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
trunk/src/main/java/cc/kune/core/shared/domain/dto/EmailNotificationFrequency.java
trunk/src/main/java/cc/kune/domain/Container.java
trunk/src/main/java/cc/kune/domain/Revision.java
trunk/src/main/java/cc/kune/domain/User.java
trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg
trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
trunk/src/main/resources/assembly.xml
Log:
Some Notification fixes and clean up.
NEW - # 185: Implement notification levels (hourly and daily) similar to Google Wave
http://kune.ourproject.org/issues/ticket/185
Modified: trunk/src/main/java/cc/kune/core/client/state/Session.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -65,7 +65,7 @@
long ANON_SESSION_DURATION = A_DAY;
long ANON_SESSION_DURATION_AFTER_REG = A_DAY * 365;
long SESSION_DURATION = A_DAY * 14; // two weeks login session duration
- // long SESSION_DURATION = 1000;
+ // long SESSION_DURATION = 100; // For test
String USERHASH = "k007userHash";
Modified: trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -26,6 +26,9 @@
eventBus.addHandler(SessionExpiredEvent.getType(), new SessionExpiredEvent.SessionExpiredHandler() {
@Override
public void onSessionExpired(final SessionExpiredEvent event) {
+ if (session.isLogged()) {
+ session.signOut();
+ }
NotifyUser.info(i18n.t("Please sign in again"));
}
});
Modified: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -17,4 +17,16 @@
* @return text translated in the specified language
*/
public String tWithNT(I18nLanguage lang, final String text, final String noteForTranslators);
+
+ /**
+ * Use [%s] to reference the String parameter.
+ *
+ * Also adds [%NT noteForTranslators] at the end of text. This tag is later
+ * renderer in the translator panel to inform translator how to do this
+ * translation
+ *
+ */
+ public String tWithNT(I18nLanguage lang, final String text, final String noteForTranslators,
+ final String... args);
+
}
Modified: trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -19,6 +19,7 @@
*/
package cc.kune.core.server.i18n.impl;
+import cc.kune.common.client.utils.Pair;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.server.UserSessionManager;
@@ -65,6 +66,19 @@
}
/**
+ * Use [%s] to reference the string parameter
+ *
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
+ private String t(final I18nLanguage lang, final Pair<String, String> pair, final String... args) {
+ String translation = tWithNT(lang, pair.getLeft(), pair.getRight());
+ for (final String arg : args) {
+ translation = translation.replaceFirst("\\[%s\\]", arg);
+ }
+ return decodeHtml(translation);
+ }
+
+ /**
* If the text is not in the db, it stores the text pending for translation.
*
* Warning: text is escaped as html before insert in the db. Don't use html
@@ -89,6 +103,12 @@
return decodeHtml(translation);
}
+ @Override
+ public String tWithNT(final I18nLanguage lang, final String text, final String noteForTranslators,
+ final String... args) {
+ return t(lang, Pair.create(text, noteForTranslators), args);
+ }
+
/**
* If the text is not in the db, it stores the text pending for translation.
*
Modified: trunk/src/main/java/cc/kune/core/server/manager/Manager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/Manager.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/manager/Manager.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -21,28 +21,25 @@
import org.apache.lucene.search.BooleanClause;
-
public interface Manager<T, X> {
- void clear();
+ T find(X id);
- T find(X id);
+ T merge(T entity);
- T merge(T entity);
+ T persist(T entity);
- T persist(T entity);
+ void reIndex();
- void reIndex();
+ void remove(T entity);
- void remove(T entity);
+ SearchResult<T> search(final String query, final String[] fields, final BooleanClause.Occur[] flags,
+ final Integer firstResult, final Integer maxResults);
- SearchResult<T> search(final String query, final String[] fields, final BooleanClause.Occur[] flags,
- final Integer firstResult, final Integer maxResults);
+ SearchResult<T> search(final String[] queries, final String[] fields,
+ final BooleanClause.Occur[] flags, final Integer firstResult, final Integer maxResults);
- SearchResult<T> search(final String[] queries, final String[] fields, final BooleanClause.Occur[] flags,
- final Integer firstResult, final Integer maxResults);
+ SearchResult<T> search(final String[] queries, final String[] fields, final Integer firstResult,
+ final Integer maxResults);
- SearchResult<T> search(final String[] queries, final String[] fields, final Integer firstResult,
- final Integer maxResults);
-
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -49,10 +49,6 @@
log = LogFactory.getLog(entityClass);
}
- public void clear() {
- getEntityManager().clear();
- }
-
/**
* use carefully!!!
*/
@@ -64,6 +60,10 @@
return getEntityManager().find(entityClass, primaryKey);
}
+ public void flush() {
+ getEntityManager().flush();
+ }
+
private EntityManager getEntityManager() {
return provider.get();
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -43,7 +43,6 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
-import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.EmailAddressInUseException;
@@ -52,6 +51,7 @@
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.client.errors.UserRegistrationException;
import cc.kune.core.client.errors.WrongCurrentPasswordException;
+import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.I18nCountryManager;
import cc.kune.core.server.manager.I18nLanguageManager;
@@ -86,7 +86,7 @@
private final ChatProperties chatProperties;
private final I18nCountryManager countryManager;
private final GroupManager groupManager;
- private final I18nTranslationService i18n;
+ private final I18nTranslationServiceMultiLang i18n;
private final KuneWaveService kuneWaveManager;
private final I18nLanguageManager languageManager;
private final NotifyService notifyService;
@@ -101,7 +101,7 @@
public UserManagerDefault(final Provider<EntityManager> provider, final UserFinder finder,
final I18nLanguageManager languageManager, final I18nCountryManager countryManager,
final XmppManager xmppManager, final ChatProperties chatProperties,
- final I18nTranslationService i18n, final CustomUserRegistrationServlet waveUserRegister,
+ final I18nTranslationServiceMultiLang i18n, final CustomUserRegistrationServlet waveUserRegister,
final AccountStore waveAccountStore, final KuneWaveService kuneWaveManager,
final ParticipantUtils participantUtils, final KuneBasicProperties properties,
final GroupManager groupManager, final NotifyService notifyService) {
@@ -201,13 +201,13 @@
passwdDigest.getSalt(), language, country, tz);
final String defWave = properties.getWelcomewave();
+ groupManager.createUserGroup(user, wantPersonalHomepage);
if (defWave != null) {
welcome = kuneWaveManager.createWave(
ContentConstants.WELCOME_WAVE_CONTENT_TITLE.replaceAll("\\[%s\\]",
properties.getDefaultSiteName()), "", defWave, null,
participantUtils.of(properties.getAdminShortName()), participantUtils.of(shortName));
}
- groupManager.createUserGroup(user, wantPersonalHomepage);
// Is this necessary? try to remove (used when we were setting the def
// content
// contentManager.save(userGroup.getDefaultContent());
@@ -318,6 +318,7 @@
return null;
}
}
+ final I18nLanguage lang = user.getLanguage();
if (user.getPassword().equals(passwd)) {
if (user.getLastLogin() == null) {
final String userName = user.getShortName();
@@ -325,13 +326,15 @@
timer.schedule(new TimerTask() {
@Override
public void run() {
+ // FIXME: Use notifyService!
xmppManager.sendMessage(
userName,
- i18n.t(
+ i18n.tWithNT(
+ lang,
"This is the chat window. "
+ "Here you can communicate with other users of [%s] but also with other users with compatible accounts (like gmail accounts). "
- + "Just add some buddy and start to chat.",
- i18n.t(properties.getSiteCommonName())));
+ + "Just add some buddy and start to chat.", "",
+ i18n.tWithNT(lang, properties.getSiteCommonName(), "")));
}
}, 5000);
}
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -9,8 +9,8 @@
public interface NotifySender {
/**
- * Send a message to the recipients (also translate the subject/body using the
- * user language)
+ * Send a html message to the recipients (also translate the subject/body
+ * using the user language)
*
* @param notifyType
* the notify type (email, etc)
@@ -21,15 +21,17 @@
* {@link String.format} args
* @param isHtml
* if the body is html
+ * @param forceSend
+ * send even this user has "no notifications" selected
* @param recipients
* the recipients
*/
void send(NotifyType notifyType, FormatedString subject, FormatedString body, boolean isHtml,
- User... recipients);
+ final boolean forceSend, User... recipients);
/**
- * Send a message to the recipients (also translate the subject/body using the
- * user language)
+ * Send a text message to the recipients (also translate the subject/body
+ * using the user language)
*
* @param notifyType
* the notify type (email, etc)
@@ -41,6 +43,7 @@
* @param recipients
* the recipients
*/
+ @Deprecated
void send(NotifyType notifyType, FormatedString subject, FormatedString body, User... recipients);
}
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -27,28 +27,34 @@
private final String emailTemplate;
private final I18nTranslationServiceMultiLang i18n;
private final MailService mailService;
+ private final String subjectPrefix;
+ private final UsersOnline usersOnline;
private final KuneWaveService waveService;
private final XmppManager xmppManager;
@Inject
public NotifySenderDefault(final MailService mailService, final KuneWaveService waveService,
final XmppManager xmppManager, final I18nTranslationServiceMultiLang i18n,
- final KuneProperties kuneProperties) throws IOException {
+ final UsersOnline usersOnline, final KuneProperties kuneProperties) throws IOException {
this.mailService = mailService;
this.waveService = waveService;
this.xmppManager = xmppManager;
this.i18n = i18n;
+ this.usersOnline = usersOnline;
emailTemplate = FileUtils.readFileToString(new File(
kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
Preconditions.checkNotNull(emailTemplate);
Preconditions.checkArgument(TextUtils.notEmpty(emailTemplate));
+ subjectPrefix = new StringBuffer("[").append(kuneProperties.get(KuneProperties.SITE_NAME)).append(
+ "] ").toString();
}
@Override
public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final boolean isHtml, final User... recipients) {
+ final boolean isHtml, final boolean forceSend, final User... recipients) {
for (final User user : recipients) {
final String username = user.getShortName();
+ subject.setTemplate(subjectPrefix + subject.getTemplate());
if (subject.shouldBeTranslated()) {
// Translate per recipient language
// final String subjectTranslation = i18n.tWithNT(user.getLanguage(),
@@ -68,15 +74,19 @@
}
switch (notifyType) {
case chat:
+ // FIXME seems that html is not sending correctly... check server specs
xmppManager.sendMessage(username,
String.format("<b>%s</b>%s", subject.getString(), body.getString()));
break;
case email:
- if (user.getEmailNotifFreq().equals(EmailNotificationFrequency.immediately)) {
- mailService.send(subject, FormatedString.build(emailTemplate.replace("%s", body.getString())),
- isHtml, user.getEmail());
- } else {
- // TODO: handle other types of notifications frequencies
+ if (forceSend || !usersOnline.isLogged(username)) {
+ if (user.getEmailNotifFreq().equals(EmailNotificationFrequency.immediately)) {
+ mailService.send(subject,
+ FormatedString.build(emailTemplate.replace("%s", body.getString())), isHtml,
+ user.getEmail());
+ } else {
+ // TODO: handle other types of notifications frequencies
+ }
}
break;
case wave:
@@ -90,9 +100,10 @@
}
@Override
+ @Deprecated
public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
final User... dests) {
- send(notifyType, subject, body, false, dests);
+ send(notifyType, subject, body, false, false, dests);
}
}
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -79,12 +79,13 @@
final Collection<User> users) {
for (final User to : users) {
sender.send(NotifyType.email, FormatedString.build(subject),
- helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message), to);
+ helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message), true,
+ true, to);
}
}
public void notifyUser(final User to, final Group group, final String subject, final String message) {
sender.send(NotifyType.email, FormatedString.build(subject),
- helper.groupNotification(group.getShortName(), group.hasLogo(), message), to);
+ helper.groupNotification(group.getShortName(), group.hasLogo(), message), true, true, to);
}
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -85,7 +85,8 @@
checkIsNotPersonalGroup(group);
final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
socialNetworkManager.addGroupToAdmins(userLogged, groupToAdd, group);
- notifyService.notifyGroup(groupToAdd, group, "Accepted as admin", "You are now admin of this group");
+ notifyService.notifyGroup(groupToAdd, group, "Added as administrator",
+ "You are now admin of this group");
return generateResponse(userLogged, group);
}
@@ -100,7 +101,7 @@
checkIsNotPersonalGroup(group);
final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
socialNetworkManager.addGroupToCollabs(userLogged, groupToAdd, group);
- notifyService.notifyGroup(groupToAdd, group, "Accepted as collaborator",
+ notifyService.notifyGroup(groupToAdd, group, "Added as collaborator",
"You are now a collaborator of this group");
return generateResponse(userLogged, group);
}
Modified: trunk/src/main/java/cc/kune/core/shared/domain/dto/EmailNotificationFrequency.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/domain/dto/EmailNotificationFrequency.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/core/shared/domain/dto/EmailNotificationFrequency.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -22,8 +22,8 @@
import com.google.gwt.user.client.rpc.IsSerializable;
public enum EmailNotificationFrequency implements IsSerializable {
- daily, // at most daily,
- hourly, // at most hourly
- immediately, // almost immediately
- no // I don't need email notifications
+ daily, // at most daily, (not used yet)
+ hourly, // at most hourly (not used yet)
+ immediately, // almost immediately (currently used)
+ no // I don't need email notifications (currently used)
}
Modified: trunk/src/main/java/cc/kune/domain/Container.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/Container.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/domain/Container.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -99,7 +99,7 @@
private String name;
@IndexedEmbedded(depth = 1, prefix = "owner_")
- @OneToOne
+ @OneToOne(cascade = CascadeType.ALL)
private Group owner;
// Parent/Child pattern:
Modified: trunk/src/main/java/cc/kune/domain/Revision.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/Revision.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/domain/Revision.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -48,114 +48,114 @@
@Table(name = "revisions")
@Indexed
public class Revision {
- @Id
- @GeneratedValue
- @DocumentId
- private Long id;
+ // http://www.hibernate.org/112.html
+ @Lob
+ @Column(length = 2147483647)
+ @Field(index = Index.TOKENIZED, store = Store.NO)
+ @FieldBridge(impl = DataFieldBridge.class)
+ char[] body;
- @Field(index = Index.TOKENIZED, store = Store.NO)
- String title;
+ @ContainedIn
+ @ManyToOne(cascade = CascadeType.ALL)
+ @JoinColumn
+ private Content content;
- // http://www.hibernate.org/112.html
- @Lob
- @Column(length = 2147483647)
- @Field(index = Index.TOKENIZED, store = Store.NO)
- @FieldBridge(impl = DataFieldBridge.class)
- char[] body;
+ @Basic(optional = false)
+ private Long createdOn;
- @OneToOne
- private User editor;
+ @OneToOne
+ private User editor;
- @Basic(optional = false)
- private Long createdOn;
+ @Id
+ @GeneratedValue
+ @DocumentId
+ private Long id;
- @Version
- private int version;
+ @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ private Revision previous;
- @ContainedIn
- @ManyToOne
- @JoinColumn
- private Content content;
+ @Field(index = Index.TOKENIZED, store = Store.NO)
+ String title;
- @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
- private Revision previous;
+ @Version
+ private int version;
- public Revision() {
- this(null);
- }
+ public Revision() {
+ this(null);
+ }
- public Revision(final Content content) {
- this.content = content;
- createdOn = System.currentTimeMillis();
- }
+ public Revision(final Content content) {
+ this.content = content;
+ createdOn = System.currentTimeMillis();
+ }
- public Long getId() {
- return id;
- }
+ public char[] getBody() {
+ return body;
+ }
- public void setId(final Long id) {
- this.id = id;
- }
+ public Content getContent() {
+ return content;
+ }
- public User getEditor() {
- return editor;
- }
+ public Long getCreatedOn() {
+ return createdOn;
+ }
- public void setEditor(final User editor) {
- this.editor = editor;
- }
+ public User getEditor() {
+ return editor;
+ }
- public Long getCreatedOn() {
- return createdOn;
- }
+ public Long getId() {
+ return id;
+ }
- public void setCreatedOn(final Long modifiedOn) {
- this.createdOn = modifiedOn;
- }
+ public Revision getPrevious() {
+ return previous;
+ }
- public int getVersion() {
- return version;
- }
+ public String getTitle() {
+ return title;
+ }
- public void setVersion(final int version) {
- this.version = version;
- }
+ public int getVersion() {
+ return version;
+ }
- public Revision getPrevious() {
- return previous;
- }
+ @Transient
+ public boolean isLast() {
+ return content.getLastRevision().equals(this);
+ }
- public void setPrevious(final Revision previous) {
- this.previous = previous;
- }
+ public void setBody(final String body) {
+ this.body = body.toCharArray();
+ }
- public Content getContent() {
- return content;
- }
+ public void setContent(final Content content) {
+ this.content = content;
+ }
- public void setContent(final Content content) {
- this.content = content;
- }
+ public void setCreatedOn(final Long modifiedOn) {
+ this.createdOn = modifiedOn;
+ }
- public String getTitle() {
- return title;
- }
+ public void setEditor(final User editor) {
+ this.editor = editor;
+ }
- public void setTitle(final String title) {
- this.title = title;
- }
+ public void setId(final Long id) {
+ this.id = id;
+ }
- public char[] getBody() {
- return body;
- }
+ public void setPrevious(final Revision previous) {
+ this.previous = previous;
+ }
- public void setBody(final String body) {
- this.body = body.toCharArray();
- }
+ public void setTitle(final String title) {
+ this.title = title;
+ }
- @Transient
- public boolean isLast() {
- return content.getLastRevision().equals(this);
- }
+ public void setVersion(final int version) {
+ this.version = version;
+ }
}
Modified: trunk/src/main/java/cc/kune/domain/User.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/User.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/domain/User.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -128,7 +128,7 @@
@NotNull
private TimeZone timezone;
- @OneToOne(cascade = CascadeType.REMOVE)
+ @OneToOne(cascade = CascadeType.ALL)
private Group userGroup;
public User() {
Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -57,6 +57,7 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
+import cc.kune.common.client.log.Log;
import cc.kune.common.shared.i18n.I18nTranslationService;
import com.google.gwt.dom.client.Element;
@@ -270,15 +271,27 @@
wave = null;
}
if (three != null) {
+ try {
three.getEditActions().stopEditing();
+ } catch (final Exception e) {
+ Log.info("Some exception stoping editing", e);
+ }
three = null;
}
if (two != null) {
+ try {
two.getConnector().close();
+ } catch (final Exception e) {
+ Log.info("Some exception closing connector", e);
+ }
two = null;
}
if (one != null) {
+ try {
one.getWavePanel().destroy();
+ } catch (final Exception e) {
+ Log.info("Some exception destroying panel", e);
+ }
one = null;
}
closed = true;
Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg 2012-01-09 15:37:06 UTC (rev 1657)
@@ -57,6 +57,7 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
+import cc.kune.common.client.log.Log;
import cc.kune.common.shared.i18n.I18nTranslationService;
import com.google.gwt.dom.client.Element;
@@ -270,15 +271,27 @@
wave = null;
}
if (three != null) {
+ try {
three.getEditActions().stopEditing();
+ } catch (final Exception e) {
+ Log.info("Some exception stoping editing", e);
+ }
three = null;
}
if (two != null) {
+ try {
two.getConnector().close();
+ } catch (final Exception e) {
+ Log.info("Some exception closing connector", e);
+ }
two = null;
}
if (one != null) {
+ try {
one.getWavePanel().destroy();
+ } catch (final Exception e) {
+ Log.info("Some exception destroying panel", e);
+ }
one = null;
}
closed = true;
Modified: trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-09 15:37:06 UTC (rev 1657)
@@ -23,7 +23,6 @@
import cc.kune.core.server.mail.FormatedString;
import cc.kune.core.server.notifier.NotifySender;
import cc.kune.core.server.notifier.NotifyType;
-import cc.kune.core.server.notifier.UsersOnline;
import cc.kune.core.server.properties.KuneBasicProperties;
import cc.kune.domain.User;
import cc.kune.domain.finders.UserFinder;
@@ -38,8 +37,8 @@
@Inject
public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService,
- final UsersOnline usersOnline, final KuneBasicProperties basicProperties,
- final ParticipantUtils partUtils, final UserFinder userFinder) {
+ final KuneBasicProperties basicProperties, final ParticipantUtils partUtils,
+ final UserFinder userFinder) {
waveBus.subscribe(new Subscriber() {
@Override
public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) {
@@ -62,15 +61,13 @@
final String address = participant.getAddress();
if (partUtils.isLocal(address)) {
final String userName = partUtils.getAddressName(address);
- // FIXME only for testing
try {
final User user = userFinder.findByShortName(userName);
- if (!usersOnline.isLogged(userName)) {
- notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
- body, true, user);
- notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true,
- user);
- }
+ notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
+ body, true, false, user);
+ // notifyService.send(NotifyType.chat,
+ // FormatedString.build("New message"), body, true,
+ // user);
} catch (final NoResultException e) {
// Seems is not a local user
}
Modified: trunk/src/main/resources/assembly.xml
===================================================================
--- trunk/src/main/resources/assembly.xml 2012-01-08 23:06:53 UTC (rev 1656)
+++ trunk/src/main/resources/assembly.xml 2012-01-09 15:37:06 UTC (rev 1657)
@@ -16,11 +16,11 @@
</dependencySet>
</dependencySets>
<fileSets>
- <fileSet>
+ <!-- <fileSet> -->
<!-- ${module.groupId}-${module.artifactId}-${module.version}.${module.extension} -->
- <directory>target/kune-0.1.0-SNAPSHOT/ws/</directory>
+ <!-- <directory>target/kune-0.1.0-SNAPSHOT/ws/</directory>
<outputDirectory>META-INF/resources/ws</outputDirectory>
- </fileSet>
+ </fileSet>-->
<fileSet>
<directory>${project.basedir}/src/main/webapp/</directory>
<outputDirectory>META-INF/resources/webapp</outputDirectory>
1
0
Author: vjrj_
Date: 2012-01-09 00:06:53 +0100 (Mon, 09 Jan 2012)
New Revision: 1656
Added:
trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java
trunk/src/main/java/cc/kune/core/client/contacts/
trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java
trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java
trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java
trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java
trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java
trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java
trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java
trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java
trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java
trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java
trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java
trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java
trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java
trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java
trunk/src/main/java/cc/kune/core/client/state/impl/
trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java
trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java
trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java
trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java
trunk/src/main/java/cc/kune/core/server/i18n/impl/
trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java
trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
trunk/src/main/java/cc/kune/core/server/rack/utils/
trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java
trunk/src/main/java/cc/kune/gspace/client/armor/
trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java
trunk/src/main/java/cc/kune/gspace/client/armor/impl/
trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml
trunk/src/main/java/cc/kune/gspace/client/armor/resources/
trunk/src/main/java/cc/kune/gspace/client/events/
trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java
trunk/src/main/java/cc/kune/gspace/client/viewers/items/
trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java
trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java
trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml
trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg
trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java
trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
trunk/src/main/java/cc/kune/wave/client/resources/
trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css
trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java
trunk/src/main/java/cc/kune/wave/client/resources/toolbar_empty.png
trunk/src/main/java/cc/kune/wave/server/kspecific/
trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java
trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java
trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java
trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java
trunk/src/test/java/cc/kune/core/client/state/impl/
trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java
trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java
trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java
Removed:
trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java
trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java
trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java
trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java
trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java
trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java
trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java
trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java
trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java
trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java
trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java
trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java
trunk/src/main/java/cc/kune/gspace/client/resources/
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml
trunk/src/main/java/cc/kune/wave/client/KuneConversation.css
trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java
trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java
trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png
trunk/src/main/java/cc/kune/wave/server/KuneAgent.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java
trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java
trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java
trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java
Modified:
trunk/.classpath
trunk/pom.xml
trunk/src/main/java/cc/kune/chat/client/ChatClient.java
trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
trunk/src/main/java/cc/kune/chat/client/ChatParts.java
trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java
trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java
trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java
trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/CoreParts.java
trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java
trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java
trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java
trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java
trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java
trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java
trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java
trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties
trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java
trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java
trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java
trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java
trunk/src/main/java/cc/kune/core/client/state/Session.java
trunk/src/main/java/cc/kune/core/client/state/StateManager.java
trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java
trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java
trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java
trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java
trunk/src/main/java/cc/kune/core/server/content/ContentManager.java
trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java
trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java
trunk/src/main/java/cc/kune/core/server/manager/Manager.java
trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java
trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java
trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java
trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java
trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java
trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java
trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java
trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java
trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java
trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java
trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java
trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java
trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java
trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java
trunk/src/main/java/cc/kune/gspace/client/armor/resources/GSpaceArmorResources.java
trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java
trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java
trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java
trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java
trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java
trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java
trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java
trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java
trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java
trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java
trunk/src/main/java/cc/kune/wave/client/WaveParts.java
trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java
trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java
trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java
trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java
trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java
trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java
trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java
trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java
Log:
Refactorization and Wave update
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/.classpath 2012-01-08 23:06:53 UTC (rev 1656)
@@ -13,19 +13,19 @@
<classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
<classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar" sourcepath="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.8/box-0.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.8/box-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.8/box-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.9/box-0.3.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.9/box-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.9/box-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
<classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.8/client-0.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.8/client-common-0.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.8/client-common-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/client-common-src/0.3.8/client-common-src-0.3.8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.8/client-scheduler-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.8/client-scheduler-src-0.3.8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.8/client-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/client-src/0.3.8/client-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.9/client-0.3.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.9/client-common-0.3.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.9/client-common-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/client-common-src/0.3.9/client-common-src-0.3.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.9/client-scheduler-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.9/client-scheduler-src-0.3.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.9/client-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/client-src/0.3.9/client-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.8/common-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/common-src/0.3.8/common-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.9/common-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/common-src/0.3.9/common-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
@@ -34,8 +34,8 @@
<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.8/communication-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/communication-src/0.3.8/communication-src-0.3.8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.8/concurrencycontrol-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.8/concurrencycontrol-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.9/communication-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/communication-src/0.3.9/communication-src-0.3.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.9/concurrencycontrol-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.9/concurrencycontrol-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
@@ -57,7 +57,7 @@
<classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.8/gwt-util-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/gwt-util-src/0.3.8/gwt-util-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.9/gwt-util-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/gwt-util-src/0.3.9/gwt-util-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/>
<classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/>
@@ -114,16 +114,16 @@
<classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.8/media-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/media-src/0.3.8/media-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.9/media-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/media-src/0.3.9/media-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.8/model-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/model-src/0.3.8/model-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.9/model-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/model-src/0.3.9/model-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.8/proto-msg-0.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.9/proto-msg-0.3.9.jar"/>
<classpathentry kind="var" path="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0.jar" sourcepath="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0-sources.jar"/>
@@ -148,9 +148,9 @@
<classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1.jar" sourcepath="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.8/util-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/util-src/0.3.8/util-src-0.3.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.9/util-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/util-src/0.3.9/util-src-0.3.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.8/waveinabox-server-0.3-0.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.9/waveinabox-server-0.3-0.3.9.jar"/>
<classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/pom.xml 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,7 +19,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4j.version>1.6.1</slf4j.version>
<openjpa.version>2.0.1</openjpa.version>
- <wiab.version>0.3.8</wiab.version>
+ <wiab.version>0.3.9</wiab.version>
<skipTests>true</skipTests>
</properties>
<repositories>
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClient.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,7 +19,7 @@
*/
package cc.kune.chat.client;
-import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.contacts.SimpleContactManager;
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
import com.calclab.emite.xep.muc.client.Room;
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -40,18 +40,18 @@
import cc.kune.common.client.utils.WindowUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStopEvent;
import cc.kune.core.client.events.AvatarChangedEvent;
import cc.kune.core.client.events.NewUserRegisteredEvent;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStopEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sitebar.SitebarActions;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.dto.UserInfoDTO;
import com.calclab.emite.core.client.xmpp.session.XmppSession;
Modified: trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,7 +25,7 @@
import cc.kune.core.client.ExtendedGinModule;
import cc.kune.core.client.avatar.MediumAvatarDecorator;
import cc.kune.core.client.avatar.SmallAvatarDecorator;
-import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.contacts.SimpleContactManager;
public class ChatGinModule extends ExtendedGinModule {
/*
Modified: trunk/src/main/java/cc/kune/chat/client/ChatParts.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatParts.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/ChatParts.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -34,8 +34,8 @@
import cc.kune.common.client.actions.PropertyChangeListener;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sn.GroupSNPresenter;
import cc.kune.core.client.sn.actions.conditions.IsBuddieCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAGroupCondition;
Modified: trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,11 +29,11 @@
import cc.kune.common.client.actions.PropertyChangeListener;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.ws.entheader.EntityHeader;
import cc.kune.core.shared.dto.StateAbstractDTO;
Modified: trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,10 +29,10 @@
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.actions.RolActionAutoUpdated;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.AccessRightsClientManager;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.AccessRolDTO;
import cc.kune.core.shared.dto.GroupDTO;
Modified: trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,7 +21,7 @@
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
+import cc.kune.core.client.sn.actions.GroupSNOptionsMenu;
import com.google.inject.Inject;
@@ -29,12 +29,12 @@
@Inject
public StartAssemblyWithMembers(final StartAssemblyWithMembersAction action,
- final I18nTranslationService i18n) {
+ final I18nTranslationService i18n, final GroupSNOptionsMenu optionsMenu) {
super(action);
action.setInviteMembers(true);
withText(i18n.t("Start a public assembly with members")).withToolTip(
i18n.t("Enter to this group public chat room and invite members"));
- setParent(GroupSNConfActions.OPTIONS_MENU);
+ setParent(optionsMenu);
setPosition(0);
}
}
Modified: trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,9 +20,9 @@
package cc.kune.client;
import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.groups.newgroup.NewGroup;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SiteTokenListeners;
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -93,17 +93,17 @@
import cc.kune.core.client.sn.actions.registry.UserSNMenuItemsRegistry;
import cc.kune.core.client.state.AccessRightsClientManager;
import cc.kune.core.client.state.ContentCache;
-import cc.kune.core.client.state.ContentCacheDefault;
import cc.kune.core.client.state.HistoryWrapper;
-import cc.kune.core.client.state.HistoryWrapperDefault;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.SessionDefault;
import cc.kune.core.client.state.SessionExpirationManager;
import cc.kune.core.client.state.SiteTokenListeners;
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.StateManagerDefault;
import cc.kune.core.client.state.TokenMatcher;
+import cc.kune.core.client.state.impl.ContentCacheDefault;
+import cc.kune.core.client.state.impl.HistoryWrapperDefault;
+import cc.kune.core.client.state.impl.SessionDefault;
+import cc.kune.core.client.state.impl.StateManagerDefault;
import cc.kune.core.client.sub.SubtitlesManager;
import cc.kune.core.client.sub.SubtitlesWidget;
import cc.kune.core.client.ws.CorePresenter;
Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,9 +22,9 @@
import cc.kune.core.client.auth.AnonUsersManager;
import cc.kune.core.client.auth.Register;
import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.groups.newgroup.NewGroup;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.AboutKuneDialog;
import cc.kune.core.client.sitebar.SiteUserOptionsPresenter;
import cc.kune.core.client.sitebar.spaces.Space;
Modified: trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,9 +21,8 @@
import cc.kune.common.client.actions.AbstractExtendedAction;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.core.client.sn.actions.RolComparator;
-import cc.kune.core.client.state.AccessRightsChangedEvent;
-import cc.kune.core.client.state.AccessRightsChangedEvent.AccessRightsChangedHandler;
+import cc.kune.core.client.events.AccessRightsChangedEvent;
+import cc.kune.core.client.events.AccessRightsChangedEvent.AccessRightsChangedHandler;
import cc.kune.core.client.state.AccessRightsClientManager;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
Copied: trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.actions;
+
+import cc.kune.core.shared.domain.utils.AccessRights;
+import cc.kune.core.shared.dto.AccessRolDTO;
+
+public final class RolComparator {
+
+ public static boolean isEnabled(final AccessRolDTO rolRequired, final AccessRights rights) {
+ switch (rolRequired) {
+ case Administrator:
+ return rights.isAdministrable();
+ case Editor:
+ return rights.isEditable();
+ case Viewer:
+ return rights.isVisible();
+ }
+ return false;
+ }
+
+ public static boolean isMember(final AccessRights newRights) {
+ return newRights.isAdministrable() || newRights.isEditable();
+ }
+
+ private RolComparator() {
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,13 +23,13 @@
import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SiteTokens;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,7 +20,7 @@
package cc.kune.core.client.auth;
import cc.kune.core.client.events.StackErrorEvent;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.http.client.Request;
Modified: trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,7 +19,7 @@
*/
package cc.kune.core.client.cnt;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.gwt.user.client.ui.Widget;
Modified: trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,7 +22,7 @@
import cc.kune.common.client.actions.ui.ActionFlowPanel;
import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,7 +24,7 @@
import cc.kune.common.client.resources.CommonResources;
import cc.kune.common.client.ui.IconLabel;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.wave.client.WaveClientManager;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,12 +22,12 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.services.ImageSize;
import cc.kune.core.client.services.MediaUtils;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.BasicMimeTypeDTO;
Copied: trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.contacts;
+
+public interface SimpleContactManager {
+
+ void addNewBuddy(String shortName);
+
+ void chat(String shortName);
+
+ boolean isBuddy(String shortName);
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -30,7 +30,7 @@
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.StateContainerDTO;
-import cc.kune.gspace.client.viewers.FolderItemWidget;
+import cc.kune.gspace.client.viewers.items.FolderItemWidget;
import com.allen_sauer.gwt.dnd.client.DragContext;
import com.allen_sauer.gwt.dnd.client.VetoDragException;
@@ -41,14 +41,6 @@
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
-/**
- * @author vjrj
- *
- */
-/**
- * @author vjrj
- *
- */
public class FolderViewerDropController implements DropTarget {
private final ContentCache contentCache;
Modified: trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,7 +19,7 @@
*/
package cc.kune.core.client.dnd;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.core.client.Scheduler;
Modified: trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,7 +20,7 @@
package cc.kune.core.client.dnd;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.event.logical.shared.AttachEvent;
import com.google.gwt.event.logical.shared.AttachEvent.Handler;
Copied: trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,115 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class AccessRightsChangedEvent extends GwtEvent<AccessRightsChangedEvent.AccessRightsChangedHandler> {
+
+ public interface HasAccessRightsChangedHandlers extends HasHandlers {
+ HandlerRegistration addAccessRightsChangedHandler(AccessRightsChangedHandler handler);
+ }
+
+ public interface AccessRightsChangedHandler extends EventHandler {
+ public void onAccessRightsChanged(AccessRightsChangedEvent event);
+ }
+
+ private static final Type<AccessRightsChangedHandler> TYPE = new Type<AccessRightsChangedHandler>();
+
+ public static void fire(HasHandlers source, cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) {
+ source.fireEvent(new AccessRightsChangedEvent(previousRights, currentRights));
+ }
+
+ public static Type<AccessRightsChangedHandler> getType() {
+ return TYPE;
+ }
+
+ cc.kune.core.shared.domain.utils.AccessRights previousRights;
+ cc.kune.core.shared.domain.utils.AccessRights currentRights;
+
+ public AccessRightsChangedEvent(cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) {
+ this.previousRights = previousRights;
+ this.currentRights = currentRights;
+ }
+
+ protected AccessRightsChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<AccessRightsChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.domain.utils.AccessRights getPreviousRights() {
+ return previousRights;
+ }
+
+ public cc.kune.core.shared.domain.utils.AccessRights getCurrentRights() {
+ return currentRights;
+ }
+
+ @Override
+ protected void dispatch(AccessRightsChangedHandler handler) {
+ handler.onAccessRightsChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ AccessRightsChangedEvent other = (AccessRightsChangedEvent) obj;
+ if (previousRights == null) {
+ if (other.previousRights != null)
+ return false;
+ } else if (!previousRights.equals(other.previousRights))
+ return false;
+ if (currentRights == null) {
+ if (other.currentRights != null)
+ return false;
+ } else if (!currentRights.equals(other.currentRights))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (previousRights == null ? 1 : previousRights.hashCode());
+ hashCode = (hashCode * 37) + (currentRights == null ? 1 : currentRights.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "AccessRightsChangedEvent["
+ + previousRights
+ + ","
+ + currentRights
+ + "]";
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,94 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+import com.gwtplatform.mvp.client.HasEventBus;
+
+public class AppStartEvent extends GwtEvent<AppStartEvent.AppStartHandler> {
+
+ public interface HasAppStartHandlers extends HasHandlers {
+ HandlerRegistration addAppStartHandler(AppStartHandler handler);
+ }
+
+ public interface AppStartHandler extends EventHandler {
+ public void onAppStart(AppStartEvent event);
+ }
+
+ private static final Type<AppStartHandler> TYPE = new Type<AppStartHandler>();
+
+ public static void fire(HasEventBus source, cc.kune.core.shared.dto.InitDataDTO initData) {
+ source.fireEvent(new AppStartEvent(initData));
+ }
+
+ public static Type<AppStartHandler> getType() {
+ return TYPE;
+ }
+
+ private final cc.kune.core.shared.dto.InitDataDTO initData;
+
+ public AppStartEvent(cc.kune.core.shared.dto.InitDataDTO initData) {
+ this.initData = initData;
+ }
+
+ @Override
+ public Type<AppStartHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.InitDataDTO getInitData() {
+ return initData;
+ }
+
+ @Override
+ protected void dispatch(AppStartHandler handler) {
+ handler.onAppStart(this);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ AppStartEvent o = (AppStartEvent) other;
+ return true
+ && ((o.initData == null && this.initData == null) || (o.initData != null && o.initData.equals(this.initData)))
+ ;
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ hashCode = (hashCode * 37) + (initData == null ? 1 : initData.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "AppStartEvent["
+ + initData
+ + "]";
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,85 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+import com.gwtplatform.mvp.client.HasEventBus;
+
+public class AppStopEvent extends GwtEvent<AppStopEvent.AppStopHandler> {
+
+ public interface HasAppStopHandlers extends HasHandlers {
+ HandlerRegistration addAppStopHandler(AppStopHandler handler);
+ }
+
+ public interface AppStopHandler extends EventHandler {
+ public void onAppStop(AppStopEvent event);
+ }
+
+ private static final Type<AppStopHandler> TYPE = new Type<AppStopHandler>();
+
+ public static void fire(HasEventBus source) {
+ source.fireEvent(new AppStopEvent());
+ }
+
+ public static Type<AppStopHandler> getType() {
+ return TYPE;
+ }
+
+
+ public AppStopEvent() {
+ }
+
+ @Override
+ public Type<AppStopHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ protected void dispatch(AppStopHandler handler) {
+ handler.onAppStop(this);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ AppStopEvent o = (AppStopEvent) other;
+ return true
+ ;
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "AppStopEvent["
+ + "]";
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,115 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class GroupChangedEvent extends GwtEvent<GroupChangedEvent.GroupChangedHandler> {
+
+ public interface HasGroupChangedHandlers extends HasHandlers {
+ HandlerRegistration addGroupChangedHandler(GroupChangedHandler handler);
+ }
+
+ public interface GroupChangedHandler extends EventHandler {
+ public void onGroupChanged(GroupChangedEvent event);
+ }
+
+ private static final Type<GroupChangedHandler> TYPE = new Type<GroupChangedHandler>();
+
+ public static void fire(HasHandlers source, java.lang.String previousGroup, java.lang.String newGroup) {
+ source.fireEvent(new GroupChangedEvent(previousGroup, newGroup));
+ }
+
+ public static Type<GroupChangedHandler> getType() {
+ return TYPE;
+ }
+
+ java.lang.String previousGroup;
+ java.lang.String newGroup;
+
+ public GroupChangedEvent(java.lang.String previousGroup, java.lang.String newGroup) {
+ this.previousGroup = previousGroup;
+ this.newGroup = newGroup;
+ }
+
+ protected GroupChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<GroupChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public java.lang.String getPreviousGroup() {
+ return previousGroup;
+ }
+
+ public java.lang.String getNewGroup() {
+ return newGroup;
+ }
+
+ @Override
+ protected void dispatch(GroupChangedHandler handler) {
+ handler.onGroupChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ GroupChangedEvent other = (GroupChangedEvent) obj;
+ if (previousGroup == null) {
+ if (other.previousGroup != null)
+ return false;
+ } else if (!previousGroup.equals(other.previousGroup))
+ return false;
+ if (newGroup == null) {
+ if (other.newGroup != null)
+ return false;
+ } else if (!newGroup.equals(other.newGroup))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (previousGroup == null ? 1 : previousGroup.hashCode());
+ hashCode = (hashCode * 37) + (newGroup == null ? 1 : newGroup.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "GroupChangedEvent["
+ + previousGroup
+ + ","
+ + newGroup
+ + "]";
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,101 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class SocialNetworkChangedEvent extends GwtEvent<SocialNetworkChangedEvent.SocialNetworkChangedHandler> {
+
+ public interface HasSocialNetworkChangedHandlers extends HasHandlers {
+ HandlerRegistration addSocialNetworkChangedHandler(SocialNetworkChangedHandler handler);
+ }
+
+ public interface SocialNetworkChangedHandler extends EventHandler {
+ public void onSocialNetworkChanged(SocialNetworkChangedEvent event);
+ }
+
+ private static final Type<SocialNetworkChangedHandler> TYPE = new Type<SocialNetworkChangedHandler>();
+
+ public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) {
+ source.fireEvent(new SocialNetworkChangedEvent(state));
+ }
+
+ public static Type<SocialNetworkChangedHandler> getType() {
+ return TYPE;
+ }
+
+ cc.kune.core.shared.dto.StateAbstractDTO state;
+
+ public SocialNetworkChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) {
+ this.state = state;
+ }
+
+ protected SocialNetworkChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<SocialNetworkChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.StateAbstractDTO getState() {
+ return state;
+ }
+
+ @Override
+ protected void dispatch(SocialNetworkChangedHandler handler) {
+ handler.onSocialNetworkChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SocialNetworkChangedEvent other = (SocialNetworkChangedEvent) obj;
+ if (state == null) {
+ if (other.state != null)
+ return false;
+ } else if (!state.equals(other.state))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "SocialNetworkChangedEvent["
+ + state
+ + "]";
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,101 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class StateChangedEvent extends GwtEvent<StateChangedEvent.StateChangedHandler> {
+
+ public interface HasStateChangedHandlers extends HasHandlers {
+ HandlerRegistration addStateChangedHandler(StateChangedHandler handler);
+ }
+
+ public interface StateChangedHandler extends EventHandler {
+ public void onStateChanged(StateChangedEvent event);
+ }
+
+ private static final Type<StateChangedHandler> TYPE = new Type<StateChangedHandler>();
+
+ public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) {
+ source.fireEvent(new StateChangedEvent(state));
+ }
+
+ public static Type<StateChangedHandler> getType() {
+ return TYPE;
+ }
+
+ cc.kune.core.shared.dto.StateAbstractDTO state;
+
+ public StateChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) {
+ this.state = state;
+ }
+
+ protected StateChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<StateChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.StateAbstractDTO getState() {
+ return state;
+ }
+
+ @Override
+ protected void dispatch(StateChangedHandler handler) {
+ handler.onStateChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StateChangedEvent other = (StateChangedEvent) obj;
+ if (state == null) {
+ if (other.state != null)
+ return false;
+ } else if (!state.equals(other.state))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "StateChangedEvent["
+ + state
+ + "]";
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,130 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import cc.kune.core.shared.domain.utils.StateToken;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class ToolChangedEvent extends GwtEvent<ToolChangedEvent.ToolChangedHandler> {
+
+ public interface HasToolChangedHandlers extends HasHandlers {
+ HandlerRegistration addToolChangedHandler(ToolChangedHandler handler);
+ }
+
+ public interface ToolChangedHandler extends EventHandler {
+ public void onToolChanged(ToolChangedEvent event);
+ }
+
+ private static final Type<ToolChangedHandler> TYPE = new Type<ToolChangedHandler>();
+
+ public static void fire(final HasHandlers source, final StateToken previousToken,
+ final StateToken newToken) {
+ source.fireEvent(new ToolChangedEvent(previousToken, newToken));
+ }
+
+ public static Type<ToolChangedHandler> getType() {
+ return TYPE;
+ }
+
+ private StateToken newToken;
+ private StateToken previousToken;
+
+ protected ToolChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ public ToolChangedEvent(final StateToken previousToken, final StateToken newToken) {
+ this.previousToken = previousToken;
+ this.newToken = newToken;
+ }
+
+ @Override
+ protected void dispatch(final ToolChangedHandler handler) {
+ handler.onToolChanged(this);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final ToolChangedEvent other = (ToolChangedEvent) obj;
+ if (newToken == null) {
+ if (other.newToken != null) {
+ return false;
+ }
+ } else if (!newToken.equals(other.newToken)) {
+ return false;
+ }
+ if (previousToken == null) {
+ if (other.previousToken != null) {
+ return false;
+ }
+ } else if (!previousToken.equals(other.previousToken)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public Type<ToolChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public StateToken getNewToken() {
+ return newToken;
+ }
+
+ public java.lang.String getNewTool() {
+ return newToken != null ? newToken.getTool() : null;
+ }
+
+ public StateToken getPreviousToken() {
+ return previousToken;
+ }
+
+ public java.lang.String getPreviousTool() {
+ return previousToken != null ? previousToken.getTool() : null;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((newToken == null) ? 0 : newToken.hashCode());
+ result = prime * result + ((previousToken == null) ? 0 : previousToken.hashCode());
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "ToolChangedEvent[" + getPreviousTool() + "," + getNewTool() + "]";
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,85 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class UserSignInEvent extends GwtEvent<UserSignInEvent.UserSignInHandler> {
+
+ public interface HasUserSignInHandlers extends HasHandlers {
+ HandlerRegistration addUserSignInHandler(UserSignInHandler handler);
+ }
+
+ public interface UserSignInHandler extends EventHandler {
+ public void onUserSignIn(UserSignInEvent event);
+ }
+
+ private static final Type<UserSignInHandler> TYPE = new Type<UserSignInHandler>();
+
+ public static Type<UserSignInHandler> getType() {
+ return TYPE;
+ }
+
+ private final cc.kune.core.shared.dto.UserInfoDTO userInfo;
+
+ public UserSignInEvent(final cc.kune.core.shared.dto.UserInfoDTO userInfo) {
+ this.userInfo = userInfo;
+ }
+
+ @Override
+ protected void dispatch(final UserSignInHandler handler) {
+ handler.onUserSignIn(this);
+ }
+
+ @Override
+ public boolean equals(final Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ final UserSignInEvent o = (UserSignInEvent) other;
+ return true && ((o.userInfo == null && this.userInfo == null) || (o.userInfo != null && o.userInfo.equals(this.userInfo)));
+ }
+ return false;
+ }
+
+ @Override
+ public Type<UserSignInHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.UserInfoDTO getUserInfo() {
+ return userInfo;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ hashCode = (hashCode * 37) + (userInfo == null ? 1 : userInfo.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "UserSignInEvent[" + userInfo + "]";
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,94 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class UserSignInOrSignOutEvent extends GwtEvent<UserSignInOrSignOutEvent.UserSignInOrSignOutHandler> {
+
+ public interface HasUserSignInOrSignOutHandlers extends HasHandlers {
+ HandlerRegistration addUserSignInOrSignOutHandler(UserSignInOrSignOutHandler handler);
+ }
+
+ public interface UserSignInOrSignOutHandler extends EventHandler {
+ public void onUserSignInOrSignOut(UserSignInOrSignOutEvent event);
+ }
+
+ private static final Type<UserSignInOrSignOutHandler> TYPE = new Type<UserSignInOrSignOutHandler>();
+
+ public static Type<UserSignInOrSignOutHandler> getType() {
+ return TYPE;
+ }
+
+ private final boolean loggedin;
+
+ public UserSignInOrSignOutEvent(final boolean loggedin) {
+ this.loggedin = loggedin;
+ }
+
+ @Override
+ protected void dispatch(final UserSignInOrSignOutHandler handler) {
+ handler.onUserSignInOrSignOut(this);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final UserSignInOrSignOutEvent other = (UserSignInOrSignOutEvent) obj;
+ if (loggedin != other.loggedin) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public Type<UserSignInOrSignOutHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (loggedin ? 1231 : 1237);
+ return result;
+ }
+
+ public boolean isLogged() {
+ return loggedin;
+ }
+
+ @Override
+ public String toString() {
+ return "UserSignInOrSignOutEvent[" + loggedin + "]";
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,81 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+import com.gwtplatform.mvp.client.HasEventBus;
+
+public class UserSignOutEvent extends GwtEvent<UserSignOutEvent.UserSignOutHandler> {
+
+ public interface HasUserSignOutHandlers extends HasHandlers {
+ HandlerRegistration addUserSignOutHandler(UserSignOutHandler handler);
+ }
+
+ public interface UserSignOutHandler extends EventHandler {
+ public void onUserSignOut(UserSignOutEvent event);
+ }
+
+ private static final Type<UserSignOutHandler> TYPE = new Type<UserSignOutHandler>();
+
+ public static void fire(final HasEventBus source) {
+ source.fireEvent(new UserSignOutEvent());
+ }
+
+ public static Type<UserSignOutHandler> getType() {
+ return TYPE;
+ }
+
+ public UserSignOutEvent() {
+ }
+
+ @Override
+ protected void dispatch(final UserSignOutHandler handler) {
+ handler.onUserSignOut(this);
+ }
+
+ @Override
+ public boolean equals(final Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public Type<UserSignOutHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "UserSignOutEvent[" + "]";
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -35,10 +35,10 @@
import cc.kune.common.client.utils.WindowUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.rpcservices.I18nServiceAsync;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.dto.I18nLanguageDTO;
import com.google.gwt.core.client.Scheduler;
Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2012-01-08 23:06:53 UTC (rev 1656)
@@ -102,7 +102,7 @@
andNExternalUser = and [%d] external user
thisIsOnlyAPreviewOfHowThisPageWouldLookLikeToTheGeneralPublicOnTheInternet = This is only a preview of how this page would look like to the general public on the internet.
preview = Preview
-paramUnderLicenseParam = � [%s], under license: [%s]
+paramUnderLicenseParam = © [%s], under license: [%s]
clickToRename = Click to rename
createANewDocumentIfYouChooseToPublishItThisDocumentWillAppearAsANewPageInThePublicWeb = Create a New Document. If you choose to publish it, this document will appear as a new 'Page' in the public web
reloadCurrentPage = Reload current page
@@ -343,8 +343,8 @@
error = Error
toJoinAChatroomYouNeedToBeOnline = To join a chatroom you need to be 'online'
licenseWizard = License wizard
-backUsedInButton = � Back
-nextUsedInButton = Next �
+backUsedInButton = « Back
+nextUsedInButton = Next »
select = Select
finishUsedInButton = Finish
selectTheLicenseYouPreferUsingForSharingYourGroupContentsWithOtherPeople = Select the license you prefer using for sharing your group contents with other people:
@@ -433,7 +433,6 @@
nowadaysTheGadgetsMapsPollsEtcAreExperimentalInSomeBrowsersYouMightExperienceProblemsWithCertainGadg = Nowadays the gadgets (maps, polls, etc) are experimental. In some browsers you might experience problems with certain gadgets
errorConfiguringTheTool = Error configuring the tool
youDoNotHaveRightsToPerformThatAction = You do not have rights to perform that action
-0 = 0
signInOrRegisterToHelpWithTheTranslation = Sign in or register to help with the translation
thisNameAlreadyExistsItIsUsedWhenAFileOrAFolderWithTheSameNameAlreadyExists = This name already exists
doYouWantToAddParamAsAMemberOfParam = Do you want to add '[%s]' as a member of '[%s]'?
Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties 2012-01-08 23:06:53 UTC (rev 1656)
@@ -431,7 +431,6 @@
nowadaysTheGadgetsMapsPollsEtcAreExperimentalInSomeBrowsersYouMightExperienceProblemsWithCertainGadg = Les gadgets (cartes, sondages, etc) sont encore expérimentaux. Dans certains navigateurs, vous pourrez avoir des problèmes avec certains gadgets
errorConfiguringTheTool = Erreur lors de la configuration de l'outil
youDoNotHaveRightsToPerformThatAction = Vous n'avez pas les permissions suffisantes pour accomplir cette action
-0 = 0
signInOrRegisterToHelpWithTheTranslation = Connectez-vous ou créez un compte pour aider à la traduction
thisNameAlreadyExistsItIsUsedWhenAFileOrAFolderWithTheSameNameAlreadyExists = Ce nom existe déjÃ
doYouWantToAddParamAsAMemberOfParam = Voulez-vous ajouter '[%s]' comme membre de '[%s]' ?
Deleted: trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,94 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.init;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-import com.gwtplatform.mvp.client.HasEventBus;
-
-public class AppStartEvent extends GwtEvent<AppStartEvent.AppStartHandler> {
-
- public interface HasAppStartHandlers extends HasHandlers {
- HandlerRegistration addAppStartHandler(AppStartHandler handler);
- }
-
- public interface AppStartHandler extends EventHandler {
- public void onAppStart(AppStartEvent event);
- }
-
- private static final Type<AppStartHandler> TYPE = new Type<AppStartHandler>();
-
- public static void fire(HasEventBus source, cc.kune.core.shared.dto.InitDataDTO initData) {
- source.fireEvent(new AppStartEvent(initData));
- }
-
- public static Type<AppStartHandler> getType() {
- return TYPE;
- }
-
- private final cc.kune.core.shared.dto.InitDataDTO initData;
-
- public AppStartEvent(cc.kune.core.shared.dto.InitDataDTO initData) {
- this.initData = initData;
- }
-
- @Override
- public Type<AppStartHandler> getAssociatedType() {
- return TYPE;
- }
-
- public cc.kune.core.shared.dto.InitDataDTO getInitData() {
- return initData;
- }
-
- @Override
- protected void dispatch(AppStartHandler handler) {
- handler.onAppStart(this);
- }
-
- @Override
- public boolean equals(Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- AppStartEvent o = (AppStartEvent) other;
- return true
- && ((o.initData == null && this.initData == null) || (o.initData != null && o.initData.equals(this.initData)))
- ;
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- hashCode = (hashCode * 37) + (initData == null ? 1 : initData.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "AppStartEvent["
- + initData
- + "]";
- }
-
-}
Modified: trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -26,6 +26,8 @@
import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.client.resources.CommonResources;
import cc.kune.common.client.utils.SimpleResponseCallback;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStopEvent;
import cc.kune.core.client.rpcservices.SiteServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.InitDataDTO;
Deleted: trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,85 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.init;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-import com.gwtplatform.mvp.client.HasEventBus;
-
-public class AppStopEvent extends GwtEvent<AppStopEvent.AppStopHandler> {
-
- public interface HasAppStopHandlers extends HasHandlers {
- HandlerRegistration addAppStopHandler(AppStopHandler handler);
- }
-
- public interface AppStopHandler extends EventHandler {
- public void onAppStop(AppStopEvent event);
- }
-
- private static final Type<AppStopHandler> TYPE = new Type<AppStopHandler>();
-
- public static void fire(HasEventBus source) {
- source.fireEvent(new AppStopEvent());
- }
-
- public static Type<AppStopHandler> getType() {
- return TYPE;
- }
-
-
- public AppStopEvent() {
- }
-
- @Override
- public Type<AppStopHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- protected void dispatch(AppStopHandler handler) {
- handler.onAppStop(this);
- }
-
- @Override
- public boolean equals(Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- AppStopEvent o = (AppStopEvent) other;
- return true
- ;
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "AppStopEvent["
- + "]";
- }
-
-}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -31,16 +31,16 @@
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.actions.GotoGroupAction;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,7 +24,7 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.sitebar.SitebarActionsPresenter.SitebarActionsView;
import cc.kune.core.client.sitebar.logo.SiteLogo;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -33,7 +33,7 @@
import cc.kune.common.client.resources.CommonResources;
import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent;
import cc.kune.core.client.resources.CoreResources;
import com.google.gwt.event.shared.EventBus;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,14 +23,14 @@
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -33,12 +33,12 @@
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.errors.SessionExpiredException;
import cc.kune.core.client.errors.UserMustBeLoggedException;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,9 +20,9 @@
package cc.kune.core.client.sitebar.logo;
import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,7 +24,7 @@
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter.SitebarSearchView;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.event.dom.client.HasAllFocusHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,8 +24,8 @@
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView;
import cc.kune.core.client.state.Session;
-import cc.kune.gspace.client.GSpaceArmor;
-import cc.kune.gspace.client.resources.GSpaceArmorResources;
+import cc.kune.gspace.client.armor.GSpaceArmor;
+import cc.kune.gspace.client.armor.resources.GSpaceArmorResources;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml 2012-01-08 23:06:53 UTC (rev 1656)
@@ -2,7 +2,7 @@
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='img'
- type='cc.kune.gspace.client.resources.GSpaceArmorResources' />
+ type='cc.kune.gspace.client.armor.resources.GSpaceArmorResources' />
<g:FlowPanel ui:field="panel" addStyleNames="k-space-sel k-10corners k-floatleft k-pointer" >
<g:ToggleButton ui:field="homeButton" styleName="k-space-sel-btn">
<g:upFace image='{img.homeSpaceDisabled}' />
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,14 +24,14 @@
import cc.kune.common.client.ui.MaskWidgetView;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
import cc.kune.core.client.events.WindowFocusEvent;
-import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.TokenUtils;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.style.GSpaceBackManager;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -33,7 +33,7 @@
import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.dnd.NotImplementedDropManager;
import cc.kune.core.client.ui.BasicDragableThumb;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -30,7 +30,7 @@
import cc.kune.core.client.sn.GroupSNPresenter.GroupSNView;
import cc.kune.core.client.ui.BasicDragableThumb;
import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,19 +23,19 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
+import cc.kune.core.client.events.SocialNetworkChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.actions.registry.GroupSNAdminsMenuItemsRegistry;
import cc.kune.core.client.sn.actions.registry.GroupSNCollabsMenuItemsRegistry;
import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
import cc.kune.core.client.sn.actions.registry.GroupSNPendingsMenuItemsRegistry;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.SocialNetworkChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.domain.utils.AccessRights;
import cc.kune.core.shared.dto.AccessListsDTO;
import cc.kune.core.shared.dto.GroupDTO;
Deleted: trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,30 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.sn;
-
-public interface SimpleContactManager {
-
- void addNewBuddy(String shortName);
-
- void chat(String shortName);
-
- boolean isBuddy(String shortName);
-
-}
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -31,7 +31,7 @@
import cc.kune.core.client.ui.BasicDragableThumb;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.UserSimpleDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,19 +24,19 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.SocialNetworkChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.UserSNPresenter.UserSNProxy;
import cc.kune.core.client.sn.UserSNPresenter.UserSNView;
import cc.kune.core.client.sn.actions.registry.UserSNConfActions;
import cc.kune.core.client.sn.actions.registry.UserSNMenuItemsRegistry;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.SocialNetworkChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.ParticipationDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,10 +25,10 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.utils.SimpleResponseCallback;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.contacts.SimpleContactManager;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sitebar.search.EntitySearchPanel;
import cc.kune.core.client.sitebar.search.OnEntitySelectedInSearch;
-import cc.kune.core.client.sn.SimpleContactManager;
import com.google.inject.Inject;
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,9 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor;
+
+import com.google.inject.Singleton;
+
+@Singleton
+public class GroupSNModerationSubMenu extends SubMenuDescriptor {
+}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,9 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+
+import com.google.inject.Singleton;
+
+@Singleton
+public class GroupSNOptionsMenu extends MenuDescriptor {
+}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,9 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor;
+
+import com.google.inject.Singleton;
+
+@Singleton
+public class GroupSNVisibilitySubMenu extends SubMenuDescriptor {
+}
Deleted: trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,45 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.sn.actions;
-
-import cc.kune.core.shared.domain.utils.AccessRights;
-import cc.kune.core.shared.dto.AccessRolDTO;
-
-public final class RolComparator {
-
- public static boolean isEnabled(final AccessRolDTO rolRequired, final AccessRights rights) {
- switch (rolRequired) {
- case Administrator:
- return rights.isAdministrable();
- case Editor:
- return rights.isEditable();
- case Viewer:
- return rights.isVisible();
- }
- return false;
- }
-
- public static boolean isMember(final AccessRights newRights) {
- return newRights.isAdministrable() || newRights.isEditable();
- }
-
- private RolComparator() {
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,9 +21,9 @@
import cc.kune.common.client.actions.AbstractExtendedAction;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,18 +21,18 @@
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
import com.google.inject.Inject;
public class WriteToAdmins extends MenuItemDescriptor {
@Inject
- public WriteToAdmins(final WriteToAction action, final I18nTranslationService i18n) {
+ public WriteToAdmins(final WriteToAction action, final I18nTranslationService i18n,
+ final GroupSNOptionsMenu optionsMenu) {
super(action);
action.setOnlyToAdmin(true);
withText(i18n.t("Write to the administrators of this group"));
- setParent(GroupSNConfActions.OPTIONS_MENU);
+ setParent(optionsMenu);
setPosition(0);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,10 +23,10 @@
import cc.kune.common.client.actions.PropertyChangeEvent;
import cc.kune.common.client.actions.PropertyChangeListener;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
-import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.contacts.SimpleContactManager;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.ws.entheader.EntityHeader;
import cc.kune.core.shared.dto.GroupDTO;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,18 +21,18 @@
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
import com.google.inject.Inject;
public class WriteToMembers extends MenuItemDescriptor {
@Inject
- public WriteToMembers(final WriteToAction action, final I18nTranslationService i18n) {
+ public WriteToMembers(final WriteToAction action, final I18nTranslationService i18n,
+ final GroupSNOptionsMenu optionsMenu) {
super(action);
action.setOnlyToAdmin(false);
withText(i18n.t("Write to the members of this group"));
- setParent(GroupSNConfActions.OPTIONS_MENU);
+ setParent(optionsMenu);
setPosition(0);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,7 +22,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.GuiAddCondition;
import cc.kune.common.client.errors.UIException;
-import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.contacts.SimpleContactManager;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.UserSimpleDTO;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,7 +20,7 @@
package cc.kune.core.client.sn.actions.conditions;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.contacts.SimpleContactManager;
import cc.kune.core.client.state.Session;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,15 +21,18 @@
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuTitleItemDescriptor;
-import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sn.GroupSNPresenter;
import cc.kune.core.client.sn.actions.AddEntityToThisGroupAction;
+import cc.kune.core.client.sn.actions.GroupSNModerationSubMenu;
+import cc.kune.core.client.sn.actions.GroupSNOptionsMenu;
+import cc.kune.core.client.sn.actions.GroupSNVisibilitySubMenu;
import cc.kune.core.client.sn.actions.JoinGroupAction;
import cc.kune.core.client.sn.actions.MembersModerationMenuItem;
import cc.kune.core.client.sn.actions.MembersVisibilityMenuItem;
@@ -39,8 +42,6 @@
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.AdmissionType;
import cc.kune.core.shared.domain.SocialNetworkVisibility;
@@ -60,10 +61,7 @@
@SuppressWarnings("serial")
public class GroupSNConfActions extends AbstractSNActionsRegistry {
- public static final SubMenuDescriptor MODERATION_SUBMENU = new SubMenuDescriptor();
- public static final MenuDescriptor OPTIONS_MENU = new MenuDescriptor();
public static final String OPTIONS_STYLES = "k-sn-options-menu, k-noborder, k-nobackcolor, k-no-backimage, k-btn-min";
- public static final SubMenuDescriptor VISIBILITY_SUBMENU = new SubMenuDescriptor();
@Inject
public GroupSNConfActions(final Session session, final StateManager stateManager,
@@ -72,8 +70,9 @@
final IsLoggedCondition isLoggedCondition, final JoinGroupAction joinGroupAction,
final WriteToMembers writeToMembers, final WriteToAdmins writeToAdmins,
final IsGroupCondition isGroupCondition, final UnJoinFromCurrentGroupAction unJoinGroupAction,
- final AddEntityToThisGroupAction addEntityToThisGroupAction) {
- OPTIONS_MENU.withToolTip(i18n.t("Options")).withIcon(res.arrowdownsitebar()).withStyles(
+ final AddEntityToThisGroupAction addEntityToThisGroupAction, final GroupSNOptionsMenu optionsMenu,
+ final GroupSNModerationSubMenu moderationSubMenu, final GroupSNVisibilitySubMenu visibilitySubMenu) {
+ optionsMenu.withToolTip(i18n.t("Options")).withIcon(res.arrowdownsitebar()).withStyles(
OPTIONS_STYLES);
final MenuRadioItemDescriptor anyoneItem = membersVisibility.get().withVisibility(
SocialNetworkVisibility.anyone);
@@ -87,19 +86,19 @@
AdmissionType.Moderated);
final MenuRadioItemDescriptor openItem = membersModeration.get().withModeration(AdmissionType.Open);
- addImpl(OPTIONS_MENU);
- new MenuTitleItemDescriptor(i18n.t("Options")).withParent(OPTIONS_MENU);
- new MenuItemDescriptor(addEntityToThisGroupAction).withParent(OPTIONS_MENU).setPosition(0);
- new MenuItemDescriptor(unJoinGroupAction).withParent(OPTIONS_MENU).setPosition(1);
+ addImpl(optionsMenu);
+ new MenuTitleItemDescriptor(i18n.t("Options")).withParent(optionsMenu);
+ new MenuItemDescriptor(addEntityToThisGroupAction).withParent(optionsMenu).setPosition(0);
+ new MenuItemDescriptor(unJoinGroupAction).withParent(optionsMenu).setPosition(1);
- VISIBILITY_SUBMENU.withText(i18n.t("Users who can view this member list")).withParent(OPTIONS_MENU);
- MODERATION_SUBMENU.withText(i18n.t("New members policy")).withParent(OPTIONS_MENU);
- anyoneItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("anyone"));
- onlyMembersItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("only members"));
- onlyAdminsItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("only administrators"));
- moderatedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("moderate request to join"));
- openItem.withParent(MODERATION_SUBMENU).withText(i18n.t("auto accept request to join"));
- closedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("closed for new members"));
+ visibilitySubMenu.withText(i18n.t("Users who can view this member list")).withParent(optionsMenu);
+ moderationSubMenu.withText(i18n.t("New members policy")).withParent(optionsMenu);
+ anyoneItem.withParent(visibilitySubMenu).withText(i18n.t("anyone"));
+ onlyMembersItem.withParent(visibilitySubMenu).withText(i18n.t("only members"));
+ onlyAdminsItem.withParent(visibilitySubMenu).withText(i18n.t("only administrators"));
+ moderatedItem.withParent(moderationSubMenu).withText(i18n.t("moderate request to join"));
+ openItem.withParent(moderationSubMenu).withText(i18n.t("auto accept request to join"));
+ closedItem.withParent(moderationSubMenu).withText(i18n.t("closed for new members"));
final ButtonDescriptor joinBtn = new ButtonDescriptor(joinGroupAction);
// final ButtonDescriptor unJoinBtn = new
@@ -116,8 +115,8 @@
@Override
public void onStateChanged(final StateChangedEvent event) {
final boolean administrable = event.getState().getGroupRights().isAdministrable();
- OPTIONS_MENU.setVisible(administrable);
- OPTIONS_MENU.setEnabled(administrable);
+ optionsMenu.setVisible(administrable);
+ optionsMenu.setEnabled(administrable);
final StateAbstractDTO state = event.getState();
final GroupDTO currentGroup = state.getGroup();
if (currentGroup.isNotPersonal()) {
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,14 +25,14 @@
import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sn.UserSNPresenter;
import cc.kune.core.client.sn.actions.AddNewBuddiesAction;
import cc.kune.core.client.sn.actions.UserSNVisibilityMenuItem;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.dto.StateAbstractDTO;
Deleted: trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,115 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class AccessRightsChangedEvent extends GwtEvent<AccessRightsChangedEvent.AccessRightsChangedHandler> {
-
- public interface HasAccessRightsChangedHandlers extends HasHandlers {
- HandlerRegistration addAccessRightsChangedHandler(AccessRightsChangedHandler handler);
- }
-
- public interface AccessRightsChangedHandler extends EventHandler {
- public void onAccessRightsChanged(AccessRightsChangedEvent event);
- }
-
- private static final Type<AccessRightsChangedHandler> TYPE = new Type<AccessRightsChangedHandler>();
-
- public static void fire(HasHandlers source, cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) {
- source.fireEvent(new AccessRightsChangedEvent(previousRights, currentRights));
- }
-
- public static Type<AccessRightsChangedHandler> getType() {
- return TYPE;
- }
-
- cc.kune.core.shared.domain.utils.AccessRights previousRights;
- cc.kune.core.shared.domain.utils.AccessRights currentRights;
-
- public AccessRightsChangedEvent(cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) {
- this.previousRights = previousRights;
- this.currentRights = currentRights;
- }
-
- protected AccessRightsChangedEvent() {
- // Possibly for serialization.
- }
-
- @Override
- public Type<AccessRightsChangedHandler> getAssociatedType() {
- return TYPE;
- }
-
- public cc.kune.core.shared.domain.utils.AccessRights getPreviousRights() {
- return previousRights;
- }
-
- public cc.kune.core.shared.domain.utils.AccessRights getCurrentRights() {
- return currentRights;
- }
-
- @Override
- protected void dispatch(AccessRightsChangedHandler handler) {
- handler.onAccessRightsChanged(this);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- AccessRightsChangedEvent other = (AccessRightsChangedEvent) obj;
- if (previousRights == null) {
- if (other.previousRights != null)
- return false;
- } else if (!previousRights.equals(other.previousRights))
- return false;
- if (currentRights == null) {
- if (other.currentRights != null)
- return false;
- } else if (!currentRights.equals(other.currentRights))
- return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + (previousRights == null ? 1 : previousRights.hashCode());
- hashCode = (hashCode * 37) + (currentRights == null ? 1 : currentRights.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "AccessRightsChangedEvent["
- + previousRights
- + ","
- + currentRights
- + "]";
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,7 +19,9 @@
*/
package cc.kune.core.client.state;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.events.AccessRightsChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.shared.domain.utils.AccessRights;
import cc.kune.core.shared.dto.StateAbstractDTO;
Deleted: trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,107 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import cc.kune.common.client.notify.ProgressShowEvent;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
-import cc.kune.core.client.rpcservices.ContentServiceAsync;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.inject.Inject;
-
-public class ContentCacheDefault implements ContentCache {
- private final Map<StateToken, StateAbstractDTO> cacheMap;
- private final EventBus eventBus;
- private final ContentServiceAsync server;
- private boolean useCache = false;
-
- @Inject
- public ContentCacheDefault(final ContentServiceAsync server, final EventBus eventBus,
- final Session session) {
- this.server = server;
- this.eventBus = eventBus;
- this.cacheMap = new HashMap<StateToken, StateAbstractDTO>();
- // Better, don't use while we don't check changes in the server (by others)
- // and we do server pub/sub
- session.onAppStart(true, new AppStartHandler() {
- @Override
- public void onAppStart(final AppStartEvent event) {
- useCache = event.getInitData().useClientContentCache();
- }
- });
- useCache = true;
- session.onUserSignInOrSignOut(false, new UserSignInOrSignOutHandler() {
- @Override
- public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) {
- cacheMap.clear();
- }
- });
- }
-
- @Override
- public void cache(final StateToken encodeState, final StateAbstractDTO content) {
- assert encodeState != null;
- if (useCache) {
- cacheMap.put(encodeState, content);
- }
- }
-
- private StateAbstractDTO getCached(final StateToken newState) {
- assert newState != null;
- return useCache ? cacheMap.get(newState) : null;
- }
-
- @Override
- public void getContent(final String user, final StateToken newState,
- final AsyncCallback<StateAbstractDTO> callback) {
- assert newState != null;
- eventBus.fireEvent(new ProgressShowEvent(""));
- final StateAbstractDTO catched = getCached(newState);
- if (catched != null) {
- callback.onSuccess(catched);
- } else {
- // NotifyUser.info("Getting state of: " + newState, true);
- server.getContent(user, newState, callback);
- }
- }
-
- @Override
- public void remove(final StateToken token) {
- cacheMap.remove(token);
- }
-
- @Override
- public void removeCacheOfGroup(final String group) {
- for (final StateToken entry : cacheMap.keySet()) {
- if (entry.getGroup().equals(group)) {
- cacheMap.put(entry, null);
- }
- }
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,115 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class GroupChangedEvent extends GwtEvent<GroupChangedEvent.GroupChangedHandler> {
-
- public interface HasGroupChangedHandlers extends HasHandlers {
- HandlerRegistration addGroupChangedHandler(GroupChangedHandler handler);
- }
-
- public interface GroupChangedHandler extends EventHandler {
- public void onGroupChanged(GroupChangedEvent event);
- }
-
- private static final Type<GroupChangedHandler> TYPE = new Type<GroupChangedHandler>();
-
- public static void fire(HasHandlers source, java.lang.String previousGroup, java.lang.String newGroup) {
- source.fireEvent(new GroupChangedEvent(previousGroup, newGroup));
- }
-
- public static Type<GroupChangedHandler> getType() {
- return TYPE;
- }
-
- java.lang.String previousGroup;
- java.lang.String newGroup;
-
- public GroupChangedEvent(java.lang.String previousGroup, java.lang.String newGroup) {
- this.previousGroup = previousGroup;
- this.newGroup = newGroup;
- }
-
- protected GroupChangedEvent() {
- // Possibly for serialization.
- }
-
- @Override
- public Type<GroupChangedHandler> getAssociatedType() {
- return TYPE;
- }
-
- public java.lang.String getPreviousGroup() {
- return previousGroup;
- }
-
- public java.lang.String getNewGroup() {
- return newGroup;
- }
-
- @Override
- protected void dispatch(GroupChangedHandler handler) {
- handler.onGroupChanged(this);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- GroupChangedEvent other = (GroupChangedEvent) obj;
- if (previousGroup == null) {
- if (other.previousGroup != null)
- return false;
- } else if (!previousGroup.equals(other.previousGroup))
- return false;
- if (newGroup == null) {
- if (other.newGroup != null)
- return false;
- } else if (!newGroup.equals(other.newGroup))
- return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + (previousGroup == null ? 1 : previousGroup.hashCode());
- hashCode = (hashCode * 37) + (newGroup == null ? 1 : newGroup.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "GroupChangedEvent["
- + previousGroup
- + ","
- + newGroup
- + "]";
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.user.client.History;
-
-public class HistoryWrapperDefault implements HistoryWrapper {
-
- @Override
- public String getToken() {
- return History.getToken();
- }
-
- @Override
- public void newItem(final String historyToken) {
- History.newItem(historyToken);
- }
-
- @Override
- public void newItem(final String historyToken, final boolean issueEvent) {
- History.newItem(historyToken, issueEvent);
- }
-
-}
Modified: trunk/src/main/java/cc/kune/core/client/state/Session.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -41,7 +41,10 @@
import java.util.Collection;
import java.util.List;
-import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.I18nCountryDTO;
Deleted: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,373 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import java.util.Collection;
-import java.util.List;
-
-import cc.kune.common.client.log.Log;
-import cc.kune.core.client.cookies.CookiesManager;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.I18nCountryDTO;
-import cc.kune.core.shared.dto.I18nLanguageDTO;
-import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
-import cc.kune.core.shared.dto.InitDataDTO;
-import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-import cc.kune.core.shared.dto.StateContainerDTO;
-import cc.kune.core.shared.dto.StateContentDTO;
-import cc.kune.core.shared.dto.ToolSimpleDTO;
-import cc.kune.core.shared.dto.UserInfoDTO;
-import cc.kune.core.shared.dto.UserSimpleDTO;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class SessionDefault implements Session {
- private final CookiesManager cookieManager;
- private Object[][] countriesArray;
- private I18nLanguageDTO currentLanguage;
- private StateAbstractDTO currentState;
- private UserInfoDTO currentUserInfo;
- private final EventBus eventBus;
- private InitDataDTO initData;
- private Object[][] languagesArray;
- private Object[][] timezonesArray;
- private String userHash;
- private final Provider<UserServiceAsync> userServiceProvider;
-
- @Inject
- public SessionDefault(final CookiesManager cookieManager,
- final Provider<UserServiceAsync> userServiceProvider, final EventBus eventBus) {
- this.cookieManager = cookieManager;
- this.eventBus = eventBus;
- this.userHash = cookieManager.getAuthCookie();
- this.userHash = userHash == null || userHash.equals("null") ? null : userHash;
- this.userServiceProvider = userServiceProvider;
- languagesArray = null;
- check(new AsyncCallbackSimple<Void>() {
- @Override
- public void onSuccess(final Void result) {
- }
- });
- }
-
- @Override
- public void check(final AsyncCallbackSimple<Void> callback) {
- Log.debug("Checking session (userhash: " + getUserHash() + ")");
- userServiceProvider.get().onlyCheckSession(getUserHash(), callback);
- }
-
- @Override
- public StateContainerDTO getContainerState() {
- return (StateContainerDTO) currentState;
- }
-
- @Override
- public StateContentDTO getContentState() {
- return (StateContentDTO) currentState;
- }
-
- @Override
- public List<I18nCountryDTO> getCountries() {
- return initData.getCountries();
- }
-
- @Override
- public Object[][] getCountriesArray() {
- if (countriesArray == null) {
- countriesArray = mapCountries();
- }
- return countriesArray.clone();
- }
-
- @Override
- public String getCurrentCCversion() {
- return initData.getCurrentCCversion();
- }
-
- @Override
- public String getCurrentGroupShortName() {
- return currentState == null ? null : currentState.getStateToken().getGroup();
- }
-
- @Override
- public I18nLanguageDTO getCurrentLanguage() {
- return currentLanguage;
- }
-
- @Override
- public StateAbstractDTO getCurrentState() {
- return currentState;
- }
-
- @Override
- public StateToken getCurrentStateToken() {
- return currentState == null ? null : currentState.getStateToken();
- }
-
- @Override
- public UserSimpleDTO getCurrentUser() {
- return currentUserInfo == null ? null : currentUserInfo.getUser();
- }
-
- @Override
- public UserInfoDTO getCurrentUserInfo() {
- return currentUserInfo;
- }
-
- @Override
- public LicenseDTO getDefLicense() {
- return initData.getDefaultLicense();
- }
-
- @Override
- public String getGalleryPermittedExtensions() {
- return initData.getGalleryPermittedExtensions();
- }
-
- @Override
- public Collection<ToolSimpleDTO> getGroupTools() {
- return initData.getGroupTools();
- }
-
- @Override
- public int getImgCropsize() {
- return initData.getImgCropsize();
- }
-
- @Override
- public int getImgIconsize() {
- return initData.getImgIconsize();
- }
-
- @Override
- public int getImgResizewidth() {
- return initData.getImgResizewidth();
- }
-
- @Override
- public int getImgThumbsize() {
- return initData.getImgThumbsize();
- }
-
- @Override
- public InitDataDTO getInitData() {
- return initData;
- }
-
- @Override
- public List<I18nLanguageSimpleDTO> getLanguages() {
- return initData.getLanguages();
- }
-
- @Override
- public Object[][] getLanguagesArray() {
- if (languagesArray == null) {
- languagesArray = mapLangs();
- }
- return languagesArray.clone();
- }
-
- @Override
- public List<LicenseDTO> getLicenses() {
- return initData.getLicenses();
- }
-
- @Override
- public boolean getShowDeletedContent() {
- return currentUserInfo == null ? false : currentUserInfo.getShowDeletedContent();
- }
-
- @Override
- public String getSiteUrl() {
- final String baseURL = GWT.getModuleBaseURL();
- return baseURL.substring(0, baseURL.lastIndexOf("/" + GWT.getModuleName()));
- }
-
- @Override
- public Object[][] getTimezones() {
- if (timezonesArray == null) {
- mapTimezones();
- }
- return timezonesArray.clone();
- }
-
- @Override
- public String getUserHash() {
- return userHash;
- }
-
- @Override
- public Collection<ToolSimpleDTO> getUserTools() {
- return initData.getUserTools();
- }
-
- @Override
- public boolean inSameToken(final StateToken token) {
- return getCurrentStateToken().equals(token);
- }
-
- @Override
- public boolean isCurrentStateAContent() {
- return currentState instanceof StateContentDTO;
- }
-
- @Override
- public boolean isCurrentStateAGroup() {
- return currentState == null ? false : !currentState.getGroup().isPersonal();
- }
-
- @Override
- public boolean isCurrentStateAPerson() {
- return currentState == null ? false : currentState.getGroup().isPersonal();
- }
-
- @Override
- public boolean isInCurrentUserSpace() {
- if (!isLogged()) {
- return false;
- }
- if (getCurrentStateToken().getGroup().equals(getCurrentUser().getShortName())) {
- return true;
- }
- return false;
- }
-
- @Override
- public boolean isLogged() {
- return userHash != null;
- }
-
- @Override
- public boolean isNotLogged() {
- return !isLogged();
- }
-
- private Object[][] mapCountries() {
- assert initData != null;
- final Object[][] objs = new Object[initData.getCountries().size()][1];
- int i = 0;
- for (final I18nCountryDTO country : initData.getCountries()) {
- final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() };
- objs[i++] = obj;
- }
- return objs;
- }
-
- private Object[][] mapLangs() {
- assert initData != null;
- final Object[][] objs = new Object[initData.getLanguages().size()][1];
- int i = 0;
- for (final I18nLanguageSimpleDTO language : initData.getLanguages()) {
- final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() };
- objs[i++] = obj;
- }
- return objs;
- }
-
- private void mapTimezones() {
- assert initData != null;
- timezonesArray = new Object[initData.getTimezones().length][1];
- for (int i = 0; i < getTimezones().length; i++) {
- final Object[] obj = new Object[] { initData.getTimezones()[i] };
- timezonesArray[i] = obj;
- }
- }
-
- @Override
- public void onAppStart(final boolean fireNow, final AppStartHandler handler) {
- eventBus.addHandler(AppStartEvent.getType(), handler);
- if (fireNow && initData != null) {
- handler.onAppStart(new AppStartEvent(initData));
- }
- }
-
- @Override
- public void onUserSignIn(final boolean fireNow, final UserSignInHandler handler) {
- eventBus.addHandler(UserSignInEvent.getType(), handler);
- if (fireNow && isLogged() && currentUserInfo != null) {
- handler.onUserSignIn(new UserSignInEvent(currentUserInfo));
- }
- }
-
- @Override
- public void onUserSignInOrSignOut(final boolean fireNow, final UserSignInOrSignOutHandler handler) {
- eventBus.addHandler(UserSignInOrSignOutEvent.getType(), handler);
- if (fireNow) {
- handler.onUserSignInOrSignOut(new UserSignInOrSignOutEvent(isLogged()));
- }
- }
-
- @Override
- public void onUserSignOut(final boolean fireNow, final UserSignOutHandler handler) {
- eventBus.addHandler(UserSignOutEvent.getType(), handler);
- if (fireNow && isNotLogged()) {
- handler.onUserSignOut(new UserSignOutEvent());
- }
- }
-
- @Override
- public void setCurrentLanguage(final I18nLanguageDTO currentLanguage) {
- this.currentLanguage = currentLanguage;
- }
-
- @Override
- public void setCurrentState(final StateAbstractDTO currentState) {
- this.currentState = currentState;
- }
-
- @Override
- public void setCurrentUserInfo(final UserInfoDTO currentUserInfo) {
- this.currentUserInfo = currentUserInfo;
- if (currentUserInfo != null) {
- eventBus.fireEvent(new UserSignInEvent(this.currentUserInfo));
- } else {
- eventBus.fireEvent(new UserSignOutEvent());
- }
- eventBus.fireEvent(new UserSignInOrSignOutEvent(isLogged()));
- }
-
- @Override
- public void setInitData(final InitDataDTO initData) {
- this.initData = initData;
- }
-
- @Override
- public void setUserHash(final String userHash) {
- this.userHash = userHash;
- }
-
- @Override
- public void signOut() {
- cookieManager.removeAuthCookie();
- setUserHash(null);
- setCurrentUserInfo(null);
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,101 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class SocialNetworkChangedEvent extends GwtEvent<SocialNetworkChangedEvent.SocialNetworkChangedHandler> {
-
- public interface HasSocialNetworkChangedHandlers extends HasHandlers {
- HandlerRegistration addSocialNetworkChangedHandler(SocialNetworkChangedHandler handler);
- }
-
- public interface SocialNetworkChangedHandler extends EventHandler {
- public void onSocialNetworkChanged(SocialNetworkChangedEvent event);
- }
-
- private static final Type<SocialNetworkChangedHandler> TYPE = new Type<SocialNetworkChangedHandler>();
-
- public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) {
- source.fireEvent(new SocialNetworkChangedEvent(state));
- }
-
- public static Type<SocialNetworkChangedHandler> getType() {
- return TYPE;
- }
-
- cc.kune.core.shared.dto.StateAbstractDTO state;
-
- public SocialNetworkChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) {
- this.state = state;
- }
-
- protected SocialNetworkChangedEvent() {
- // Possibly for serialization.
- }
-
- @Override
- public Type<SocialNetworkChangedHandler> getAssociatedType() {
- return TYPE;
- }
-
- public cc.kune.core.shared.dto.StateAbstractDTO getState() {
- return state;
- }
-
- @Override
- protected void dispatch(SocialNetworkChangedHandler handler) {
- handler.onSocialNetworkChanged(this);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- SocialNetworkChangedEvent other = (SocialNetworkChangedEvent) obj;
- if (state == null) {
- if (other.state != null)
- return false;
- } else if (!state.equals(other.state))
- return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "SocialNetworkChangedEvent["
- + state
- + "]";
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,101 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class StateChangedEvent extends GwtEvent<StateChangedEvent.StateChangedHandler> {
-
- public interface HasStateChangedHandlers extends HasHandlers {
- HandlerRegistration addStateChangedHandler(StateChangedHandler handler);
- }
-
- public interface StateChangedHandler extends EventHandler {
- public void onStateChanged(StateChangedEvent event);
- }
-
- private static final Type<StateChangedHandler> TYPE = new Type<StateChangedHandler>();
-
- public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) {
- source.fireEvent(new StateChangedEvent(state));
- }
-
- public static Type<StateChangedHandler> getType() {
- return TYPE;
- }
-
- cc.kune.core.shared.dto.StateAbstractDTO state;
-
- public StateChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) {
- this.state = state;
- }
-
- protected StateChangedEvent() {
- // Possibly for serialization.
- }
-
- @Override
- public Type<StateChangedHandler> getAssociatedType() {
- return TYPE;
- }
-
- public cc.kune.core.shared.dto.StateAbstractDTO getState() {
- return state;
- }
-
- @Override
- protected void dispatch(StateChangedHandler handler) {
- handler.onStateChanged(this);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- StateChangedEvent other = (StateChangedEvent) obj;
- if (state == null) {
- if (other.state != null)
- return false;
- } else if (!state.equals(other.state))
- return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "StateChangedEvent["
- + state
- + "]";
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,6 +20,10 @@
package cc.kune.core.client.state;
import cc.kune.common.client.actions.BeforeActionListener;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.SocialNetworkChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.ToolChangedEvent;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
Deleted: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,461 +0,0 @@
-/*
- *
-
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import org.waveprotocol.box.webclient.client.ClientEvents;
-import org.waveprotocol.box.webclient.client.events.WaveSelectionEvent;
-import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
-import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder;
-
-import cc.kune.common.client.actions.BeforeActionCollection;
-import cc.kune.common.client.actions.BeforeActionListener;
-import cc.kune.common.client.log.Log;
-import cc.kune.common.client.notify.ProgressHideEvent;
-import cc.kune.common.client.utils.Pair;
-import cc.kune.core.client.events.GoHomeEvent;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import cc.kune.core.client.sitebar.spaces.Space;
-import cc.kune.core.client.sitebar.spaces.SpaceConfEvent;
-import cc.kune.core.client.sitebar.spaces.SpaceSelectEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
-import cc.kune.core.client.state.SocialNetworkChangedEvent.SocialNetworkChangedHandler;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
-import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.SocialNetworkDataDTO;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-
-import com.google.gwt.event.logical.shared.ValueChangeEvent;
-import com.google.gwt.event.logical.shared.ValueChangeHandler;
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-
-public class StateManagerDefault implements StateManager, ValueChangeHandler<String> {
- private final BeforeActionCollection beforeStateChangeCollection;
- private final ContentCache contentCache;
- private final EventBus eventBus;
- private final HistoryWrapper history;
- private StateToken previousGroupToken;
- /**
- * When a historyChanged is interrupted (for instance because you are editing
- * something), the new history token is stored here
- */
- private String resumedHistoryToken;
- private final Session session;
- private final SiteTokenListeners siteTokens;
- private final TokenMatcher tokenMatcher;
-
- @Inject
- public StateManagerDefault(final ContentCache contentProvider, final Session session,
- final HistoryWrapper history, final TokenMatcher tokenMatcher, final EventBus eventBus,
- final SiteTokenListeners siteTokens) {
- this.tokenMatcher = tokenMatcher;
- this.eventBus = eventBus;
- this.contentCache = contentProvider;
- this.session = session;
- this.history = history;
- this.previousGroupToken = null;
- this.resumedHistoryToken = null;
- tokenMatcher.init(GwtWaverefEncoder.INSTANCE);
- this.siteTokens = siteTokens;
- beforeStateChangeCollection = new BeforeActionCollection();
- session.onAppStart(true, new AppStartHandler() {
- @Override
- public void onAppStart(final AppStartEvent event) {
- session.onUserSignIn(false, new UserSignInEvent.UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- // refreshCurrentGroupState();
- }
- });
- session.onUserSignOut(false, new UserSignOutEvent.UserSignOutHandler() {
- @Override
- public void onUserSignOut(final UserSignOutEvent event) {
- refreshCurrentStateWithoutCache();
- }
- });
- processCurrentHistoryToken();
- }
- });
- onSocialNetworkChanged(false, new SocialNetworkChangedHandler() {
- @Override
- public void onSocialNetworkChanged(final SocialNetworkChangedEvent event) {
- contentCache.removeCacheOfGroup(event.getState().getStateToken().getGroup());
- }
- });
- eventBus.addHandler(GoHomeEvent.getType(), new GoHomeEvent.GoHomeHandler() {
- @Override
- public void onGoHome(final GoHomeEvent event) {
- gotoDefaultHomepage();
- }
- });
- }
-
- @Override
- public void addBeforeStateChangeListener(final BeforeActionListener listener) {
- beforeStateChangeCollection.add(listener);
- }
-
- @Override
- public void addSiteToken(final String token, final HistoryTokenCallback callback) {
- siteTokens.put(token.toLowerCase(), callback);
- }
-
- private void checkGroupAndToolChange(final StateAbstractDTO newState) {
- final String newGroup = newState.getStateToken().getGroup();
- final String previousGroup = getPreviousGroup();
- if (startingUp() || !previousGroup.equals(newGroup)) {
- GroupChangedEvent.fire(eventBus, previousGroup, newGroup);
- }
- final String previousToolName = getPreviousTool();
- final String newTokenTool = newState.getStateToken().getTool();
- final String newToolName = newTokenTool == null ? "" : newTokenTool;
- if (startingUp() || previousToolName == null || !previousToolName.equals(newToolName)) {
- ToolChangedEvent.fire(eventBus, previousGroupToken, newState.getStateToken());
- }
- }
-
- private void getContent(final StateToken newState) {
- getContent(newState, false);
- }
-
- private void getContent(final StateToken newState, final boolean setBrowserHistory) {
- // NotifyUser.info("loading: " + newState + " because current:" +
- // session.getCurrentStateToken());
- contentCache.getContent(session.getUserHash(), newState,
- new AsyncCallbackSimple<StateAbstractDTO>() {
- @Override
- public void onSuccess(final StateAbstractDTO newState) {
- setState(newState);
- final String currentToken = newState.getStateToken().toString();
- SpaceConfEvent.fire(eventBus, Space.groupSpace, currentToken);
- SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(currentToken));
- if (setBrowserHistory) {
- history.newItem(currentToken, false);
- SpaceSelectEvent.fire(eventBus, Space.groupSpace);
- }
- }
- });
- }
-
- @Override
- public String getCurrentToken() {
- return history.getToken();
- }
-
- private String getPreviousGroup() {
- final String previousGroup = startingUp() ? "" : previousGroupToken.getGroup();
- return previousGroup;
- }
-
- private String getPreviousTool() {
- final String previousTool = startingUp() ? "" : previousGroupToken.getTool();
- return previousTool;
- }
-
- @Override
- public void gotoDefaultHomepage() {
- getContent(new StateToken(SiteTokens.GROUP_HOME), true);
- }
-
- @Override
- public void gotoHistoryToken(final String token) {
- Log.debug("StateManager: history goto-string-token: " + token);
- history.newItem(token);
- }
-
- @Override
- public void gotoHistoryTokenButRedirectToCurrent(final String token) {
- gotoHistoryToken(TokenUtils.addRedirect(token, history.getToken()));
-
- }
-
- @Override
- public void gotoStateToken(final StateToken newToken) {
- Log.debug("StateManager: history goto-token: " + newToken + ", previous: " + previousGroupToken);
- history.newItem(newToken.getEncoded());
- }
-
- @Override
- public void gotoStateToken(final StateToken token, final boolean useCache) {
- if (!useCache) {
- contentCache.remove(token);
- }
- gotoStateToken(token);
- }
-
- @Override
- public void onGroupChanged(final boolean fireNow, final GroupChangedHandler handler) {
- eventBus.addHandler(GroupChangedEvent.getType(), handler);
- final StateAbstractDTO currentState = session.getCurrentState();
- if (fireNow && currentState != null) {
- handler.onGroupChanged(new GroupChangedEvent(getPreviousGroup(),
- currentState.getStateToken().getGroup()));
- }
-
- }
-
- @Override
- public void onSocialNetworkChanged(final boolean fireNow, final SocialNetworkChangedHandler handler) {
- eventBus.addHandler(SocialNetworkChangedEvent.getType(), handler);
- final StateAbstractDTO currentState = session.getCurrentState();
- if (fireNow && currentState != null) {
- handler.onSocialNetworkChanged(new SocialNetworkChangedEvent(currentState));
- }
- }
-
- @Override
- public void onStateChanged(final boolean fireNow, final StateChangedHandler handler) {
- eventBus.addHandler(StateChangedEvent.getType(), handler);
- final StateAbstractDTO currentState = session.getCurrentState();
- if (fireNow && currentState != null) {
- handler.onStateChanged(new StateChangedEvent(currentState));
- }
- }
-
- @Override
- public void onToolChanged(final boolean fireNow, final ToolChangedHandler handler) {
- eventBus.addHandler(ToolChangedEvent.getType(), handler);
- final StateAbstractDTO currentState = session.getCurrentState();
- if (fireNow && currentState != null) {
- handler.onToolChanged(new ToolChangedEvent(previousGroupToken, currentState.getStateToken()));
- }
- }
-
- @Override
- public void onValueChange(final ValueChangeEvent<String> event) {
- Log.info("History event value changed: " + event.getValue());
- processHistoryToken(event.getValue());
- }
-
- private void processCurrentHistoryToken() {
- processHistoryToken(history.getToken());
- }
-
- void processHistoryToken(final String newHistoryToken) {
- // http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideHistory
- if (beforeStateChangeCollection.checkBeforeAction()) {
- // There isn't a beforeStateChange listener that stops this history
- // change
- HistoryTokenCallback tokenListener = null;
- if (newHistoryToken != null) {
- final String nToken = newHistoryToken.toLowerCase();
- tokenListener = siteTokens.get(nToken);
- }
- Log.debug("StateManager: on history changed (" + newHistoryToken + ")");
- if (tokenListener == null) {
- // Log.debug("Is not a special hash");
- // token is not one of #newgroup #signin #translate ...
- final String nToken = newHistoryToken != null ? newHistoryToken.toLowerCase() : null;
- if (nToken != null && tokenMatcher.hasRedirect(nToken)) {
- final Pair<String, String> redirect = tokenMatcher.getRedirect(nToken);
- final String firstToken = redirect.getLeft();
- final String sndToken = redirect.getRight();
- if (firstToken.equals(SiteTokens.PREVIEW)) {
- SpaceSelectEvent.fire(eventBus, Space.publicSpace);
- SpaceConfEvent.fire(eventBus, Space.groupSpace, sndToken);
- SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(sndToken));
- getContent(new StateToken(sndToken));
- } else if (firstToken.equals(SiteTokens.SUBTITLES)) {
- siteTokens.get(SiteTokens.SUBTITLES).onHistoryToken(
- tokenMatcher.getRedirect(newHistoryToken).getRight());
- } else if (firstToken.equals(SiteTokens.NEWGROUP)) {
- siteTokens.get(SiteTokens.NEWGROUP).onHistoryToken(newHistoryToken);
- } else if (firstToken.equals(SiteTokens.SIGNIN)) {
- if (session.isLogged()) {
- // We are logged, then redirect:
- history.newItem(sndToken, false);
- processHistoryToken(sndToken);
- } else {
- // We have to loggin
- siteTokens.get(SiteTokens.SIGNIN).onHistoryToken(newHistoryToken);
- }
- }
- } else
- // No redirection
- if (tokenMatcher.isWaveToken(newHistoryToken)) {
- if (session.isLogged()) {
- SpaceConfEvent.fire(eventBus, Space.userSpace, newHistoryToken);
- SpaceSelectEvent.fire(eventBus, Space.userSpace);
- try {
- ClientEvents.get().fireEvent(
- new WaveSelectionEvent(GwtWaverefEncoder.decodeWaveRefFromPath(newHistoryToken)));
- } catch (final InvalidWaveRefException e) {
- Log.error(nToken, e);
- }
- } else {
- // Wave, but don't logged
- history.newItem(TokenUtils.addRedirect(SiteTokens.SIGNIN, newHistoryToken));
- if (startingUp()) {
- // Starting application (with Wave)
- getContent(new StateToken(SiteTokens.GROUP_HOME), false);
- }
- }
- } else if (tokenMatcher.isGroupToken(newHistoryToken)) {
- SpaceConfEvent.fire(eventBus, Space.groupSpace, newHistoryToken);
- SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(newHistoryToken));
- SpaceSelectEvent.fire(eventBus, Space.groupSpace);
- getContent(new StateToken(newHistoryToken));
- } else {
- gotoDefaultHomepage();
- }
- } else {
- // token is one of #newgroup #signin #translate ...
- if (startingUp()) {
- // Starting with some token like "signin": load defContent
- // also
- getContent(new StateToken(SiteTokens.GROUP_HOME), false);
- // processHistoryToken(SiteTokens.GROUP_HOME);
- // SpaceSelectEvent.fire(eventBus, Space.groupSpace);
- }
- // Fire the listener of this #hash token
- tokenListener.onHistoryToken(newHistoryToken);
- }
- } else {
- resumedHistoryToken = newHistoryToken;
- }
- }
-
- @Override
- public void redirectOrRestorePreviousToken() {
- final String token = history.getToken();
- if (tokenMatcher.hasRedirect(token)) {
- // URL of the form signin(group.tool)
- final String previousToken = tokenMatcher.getRedirect(token).getRight();
- if (previousToken.equals(SiteTokens.WAVEINBOX) && session.isNotLogged()) {
- // signin(inbox) && cancel
- restorePreviousToken();
- } else {
- history.newItem(previousToken); // FIXMEKK
- }
- } else {
- // No redirect then restore previous token
- restorePreviousToken();
- }
- }
-
- /**
- * <p>
- * Reload current state (using client cache if available)
- * </p>
- */
- @Override
- public void refreshCurrentState() {
- processHistoryToken(history.getToken());
- }
-
- /**
- * <p>
- * Reload current state (not using client cache)
- * </p>
- */
- @Override
- public void refreshCurrentStateWithoutCache() {
- final StateToken currentStateToken = session.getCurrentStateToken();
- if (currentStateToken == null) {
- processCurrentHistoryToken();
- } else {
- contentCache.remove(currentStateToken);
- getContent(currentStateToken);
- }
- }
-
- @Override
- public void removeBeforeStateChangeListener(final BeforeActionListener listener) {
- beforeStateChangeCollection.remove(listener);
- }
-
- @Override
- public void removeCache(final StateToken parentToken) {
- contentCache.remove(parentToken);
- }
-
- @Override
- public void removeCacheOfGroup(final String group) {
- contentCache.removeCacheOfGroup(group);
- }
-
- @Override
- public void removeSiteToken(final String token) {
- siteTokens.remove(token);
- }
-
- @Override
- public void restorePreviousToken() {
- if (previousGroupToken != null) {
- gotoStateToken(previousGroupToken);
- }
- }
-
- @Override
- public void resumeTokenChange() {
- if (resumedHistoryToken != null) {
- // Is this reload redundant?
- refreshCurrentState();
- gotoHistoryToken(resumedHistoryToken);
- resumedHistoryToken = null;
- }
- }
-
- @Override
- public void setRetrievedState(final StateAbstractDTO newState) {
- contentCache.cache(newState.getStateToken(), newState);
- }
-
- @Override
- public void setRetrievedStateAndGo(final StateAbstractDTO newState) {
- setRetrievedState(newState);
- final String token = newState.getStateToken().toString();
- if (history.getToken().equals(token)) {
- setState(newState);
- }
- history.newItem(token);
- }
-
- @Override
- public void setSocialNetwork(final SocialNetworkDataDTO socialNet) {
- StateAbstractDTO state;
- if (session != null && (state = session.getCurrentState()) != null) {
- // After a SN operation, usually returns a SocialNetworkResultDTO
- // with new SN data and we refresh the state
- // to avoid to reload() again the state
- state.setSocialNetworkData(socialNet);
- SocialNetworkChangedEvent.fire(eventBus, state);
- }
- }
-
- void setState(final StateAbstractDTO newState) {
- session.setCurrentState(newState);
- final StateToken newToken = newState.getStateToken();
- contentCache.cache(newToken, newState);
- // history.newItem(newToken.toString(), false);
- StateChangedEvent.fire(eventBus, newState);
- checkGroupAndToolChange(newState);
- previousGroupToken = newToken.copy();
- eventBus.fireEvent(new ProgressHideEvent());
- }
-
- private boolean startingUp() {
- return previousGroupToken == null;
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,130 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import cc.kune.core.shared.domain.utils.StateToken;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class ToolChangedEvent extends GwtEvent<ToolChangedEvent.ToolChangedHandler> {
-
- public interface HasToolChangedHandlers extends HasHandlers {
- HandlerRegistration addToolChangedHandler(ToolChangedHandler handler);
- }
-
- public interface ToolChangedHandler extends EventHandler {
- public void onToolChanged(ToolChangedEvent event);
- }
-
- private static final Type<ToolChangedHandler> TYPE = new Type<ToolChangedHandler>();
-
- public static void fire(final HasHandlers source, final StateToken previousToken,
- final StateToken newToken) {
- source.fireEvent(new ToolChangedEvent(previousToken, newToken));
- }
-
- public static Type<ToolChangedHandler> getType() {
- return TYPE;
- }
-
- private StateToken newToken;
- private StateToken previousToken;
-
- protected ToolChangedEvent() {
- // Possibly for serialization.
- }
-
- public ToolChangedEvent(final StateToken previousToken, final StateToken newToken) {
- this.previousToken = previousToken;
- this.newToken = newToken;
- }
-
- @Override
- protected void dispatch(final ToolChangedHandler handler) {
- handler.onToolChanged(this);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final ToolChangedEvent other = (ToolChangedEvent) obj;
- if (newToken == null) {
- if (other.newToken != null) {
- return false;
- }
- } else if (!newToken.equals(other.newToken)) {
- return false;
- }
- if (previousToken == null) {
- if (other.previousToken != null) {
- return false;
- }
- } else if (!previousToken.equals(other.previousToken)) {
- return false;
- }
- return true;
- }
-
- @Override
- public Type<ToolChangedHandler> getAssociatedType() {
- return TYPE;
- }
-
- public StateToken getNewToken() {
- return newToken;
- }
-
- public java.lang.String getNewTool() {
- return newToken != null ? newToken.getTool() : null;
- }
-
- public StateToken getPreviousToken() {
- return previousToken;
- }
-
- public java.lang.String getPreviousTool() {
- return previousToken != null ? previousToken.getTool() : null;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((newToken == null) ? 0 : newToken.hashCode());
- result = prime * result + ((previousToken == null) ? 0 : previousToken.hashCode());
- return result;
- }
-
- @Override
- public String toString() {
- return "ToolChangedEvent[" + getPreviousTool() + "," + getNewTool() + "]";
- }
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,85 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class UserSignInEvent extends GwtEvent<UserSignInEvent.UserSignInHandler> {
-
- public interface HasUserSignInHandlers extends HasHandlers {
- HandlerRegistration addUserSignInHandler(UserSignInHandler handler);
- }
-
- public interface UserSignInHandler extends EventHandler {
- public void onUserSignIn(UserSignInEvent event);
- }
-
- private static final Type<UserSignInHandler> TYPE = new Type<UserSignInHandler>();
-
- public static Type<UserSignInHandler> getType() {
- return TYPE;
- }
-
- private final cc.kune.core.shared.dto.UserInfoDTO userInfo;
-
- public UserSignInEvent(final cc.kune.core.shared.dto.UserInfoDTO userInfo) {
- this.userInfo = userInfo;
- }
-
- @Override
- protected void dispatch(final UserSignInHandler handler) {
- handler.onUserSignIn(this);
- }
-
- @Override
- public boolean equals(final Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- final UserSignInEvent o = (UserSignInEvent) other;
- return true && ((o.userInfo == null && this.userInfo == null) || (o.userInfo != null && o.userInfo.equals(this.userInfo)));
- }
- return false;
- }
-
- @Override
- public Type<UserSignInHandler> getAssociatedType() {
- return TYPE;
- }
-
- public cc.kune.core.shared.dto.UserInfoDTO getUserInfo() {
- return userInfo;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- hashCode = (hashCode * 37) + (userInfo == null ? 1 : userInfo.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "UserSignInEvent[" + userInfo + "]";
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,94 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class UserSignInOrSignOutEvent extends GwtEvent<UserSignInOrSignOutEvent.UserSignInOrSignOutHandler> {
-
- public interface HasUserSignInOrSignOutHandlers extends HasHandlers {
- HandlerRegistration addUserSignInOrSignOutHandler(UserSignInOrSignOutHandler handler);
- }
-
- public interface UserSignInOrSignOutHandler extends EventHandler {
- public void onUserSignInOrSignOut(UserSignInOrSignOutEvent event);
- }
-
- private static final Type<UserSignInOrSignOutHandler> TYPE = new Type<UserSignInOrSignOutHandler>();
-
- public static Type<UserSignInOrSignOutHandler> getType() {
- return TYPE;
- }
-
- private final boolean loggedin;
-
- public UserSignInOrSignOutEvent(final boolean loggedin) {
- this.loggedin = loggedin;
- }
-
- @Override
- protected void dispatch(final UserSignInOrSignOutHandler handler) {
- handler.onUserSignInOrSignOut(this);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final UserSignInOrSignOutEvent other = (UserSignInOrSignOutEvent) obj;
- if (loggedin != other.loggedin) {
- return false;
- }
- return true;
- }
-
- @Override
- public Type<UserSignInOrSignOutHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (loggedin ? 1231 : 1237);
- return result;
- }
-
- public boolean isLogged() {
- return loggedin;
- }
-
- @Override
- public String toString() {
- return "UserSignInOrSignOutEvent[" + loggedin + "]";
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,81 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-import com.gwtplatform.mvp.client.HasEventBus;
-
-public class UserSignOutEvent extends GwtEvent<UserSignOutEvent.UserSignOutHandler> {
-
- public interface HasUserSignOutHandlers extends HasHandlers {
- HandlerRegistration addUserSignOutHandler(UserSignOutHandler handler);
- }
-
- public interface UserSignOutHandler extends EventHandler {
- public void onUserSignOut(UserSignOutEvent event);
- }
-
- private static final Type<UserSignOutHandler> TYPE = new Type<UserSignOutHandler>();
-
- public static void fire(final HasEventBus source) {
- source.fireEvent(new UserSignOutEvent());
- }
-
- public static Type<UserSignOutHandler> getType() {
- return TYPE;
- }
-
- public UserSignOutEvent() {
- }
-
- @Override
- protected void dispatch(final UserSignOutHandler handler) {
- handler.onUserSignOut(this);
- }
-
- @Override
- public boolean equals(final Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- return true;
- }
- return false;
- }
-
- @Override
- public Type<UserSignOutHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "UserSignOutEvent[" + "]";
- }
-
-}
Copied: trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,110 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import cc.kune.common.client.notify.ProgressShowEvent;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
+import cc.kune.core.client.rpcservices.ContentServiceAsync;
+import cc.kune.core.client.state.ContentCache;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.inject.Inject;
+
+public class ContentCacheDefault implements ContentCache {
+ private final Map<StateToken, StateAbstractDTO> cacheMap;
+ private final EventBus eventBus;
+ private final ContentServiceAsync server;
+ private boolean useCache = false;
+
+ @Inject
+ public ContentCacheDefault(final ContentServiceAsync server, final EventBus eventBus,
+ final Session session) {
+ this.server = server;
+ this.eventBus = eventBus;
+ this.cacheMap = new HashMap<StateToken, StateAbstractDTO>();
+ // Better, don't use while we don't check changes in the server (by others)
+ // and we do server pub/sub
+ session.onAppStart(true, new AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ useCache = event.getInitData().useClientContentCache();
+ }
+ });
+ useCache = true;
+ session.onUserSignInOrSignOut(false, new UserSignInOrSignOutHandler() {
+ @Override
+ public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) {
+ cacheMap.clear();
+ }
+ });
+ }
+
+ @Override
+ public void cache(final StateToken encodeState, final StateAbstractDTO content) {
+ assert encodeState != null;
+ if (useCache) {
+ cacheMap.put(encodeState, content);
+ }
+ }
+
+ private StateAbstractDTO getCached(final StateToken newState) {
+ assert newState != null;
+ return useCache ? cacheMap.get(newState) : null;
+ }
+
+ @Override
+ public void getContent(final String user, final StateToken newState,
+ final AsyncCallback<StateAbstractDTO> callback) {
+ assert newState != null;
+ eventBus.fireEvent(new ProgressShowEvent(""));
+ final StateAbstractDTO catched = getCached(newState);
+ if (catched != null) {
+ callback.onSuccess(catched);
+ } else {
+ // NotifyUser.info("Getting state of: " + newState, true);
+ server.getContent(user, newState, callback);
+ }
+ }
+
+ @Override
+ public void remove(final StateToken token) {
+ cacheMap.remove(token);
+ }
+
+ @Override
+ public void removeCacheOfGroup(final String group) {
+ for (final StateToken entry : cacheMap.keySet()) {
+ if (entry.getGroup().equals(group)) {
+ cacheMap.put(entry, null);
+ }
+ }
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import cc.kune.core.client.state.HistoryWrapper;
+
+import com.google.gwt.user.client.History;
+
+public class HistoryWrapperDefault implements HistoryWrapper {
+
+ @Override
+ public String getToken() {
+ return History.getToken();
+ }
+
+ @Override
+ public void newItem(final String historyToken) {
+ History.newItem(historyToken);
+ }
+
+ @Override
+ public void newItem(final String historyToken, final boolean issueEvent) {
+ History.newItem(historyToken, issueEvent);
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,377 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import cc.kune.common.client.log.Log;
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.I18nCountryDTO;
+import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
+import cc.kune.core.shared.dto.InitDataDTO;
+import cc.kune.core.shared.dto.LicenseDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+import cc.kune.core.shared.dto.StateContainerDTO;
+import cc.kune.core.shared.dto.StateContentDTO;
+import cc.kune.core.shared.dto.ToolSimpleDTO;
+import cc.kune.core.shared.dto.UserInfoDTO;
+import cc.kune.core.shared.dto.UserSimpleDTO;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class SessionDefault implements Session {
+ private final CookiesManager cookieManager;
+ private Object[][] countriesArray;
+ private I18nLanguageDTO currentLanguage;
+ private StateAbstractDTO currentState;
+ private UserInfoDTO currentUserInfo;
+ private final EventBus eventBus;
+ private InitDataDTO initData;
+ private Object[][] languagesArray;
+ private Object[][] timezonesArray;
+ private String userHash;
+ private final Provider<UserServiceAsync> userServiceProvider;
+
+ @Inject
+ public SessionDefault(final CookiesManager cookieManager,
+ final Provider<UserServiceAsync> userServiceProvider, final EventBus eventBus) {
+ this.cookieManager = cookieManager;
+ this.eventBus = eventBus;
+ this.userHash = cookieManager.getAuthCookie();
+ this.userHash = userHash == null || userHash.equals("null") ? null : userHash;
+ this.userServiceProvider = userServiceProvider;
+ languagesArray = null;
+ check(new AsyncCallbackSimple<Void>() {
+ @Override
+ public void onSuccess(final Void result) {
+ }
+ });
+ }
+
+ @Override
+ public void check(final AsyncCallbackSimple<Void> callback) {
+ Log.debug("Checking session (userhash: " + getUserHash() + ")");
+ userServiceProvider.get().onlyCheckSession(getUserHash(), callback);
+ }
+
+ @Override
+ public StateContainerDTO getContainerState() {
+ return (StateContainerDTO) currentState;
+ }
+
+ @Override
+ public StateContentDTO getContentState() {
+ return (StateContentDTO) currentState;
+ }
+
+ @Override
+ public List<I18nCountryDTO> getCountries() {
+ return initData.getCountries();
+ }
+
+ @Override
+ public Object[][] getCountriesArray() {
+ if (countriesArray == null) {
+ countriesArray = mapCountries();
+ }
+ return countriesArray;
+ }
+
+ @Override
+ public String getCurrentCCversion() {
+ return initData.getCurrentCCversion();
+ }
+
+ @Override
+ public String getCurrentGroupShortName() {
+ return currentState == null ? null : currentState.getStateToken().getGroup();
+ }
+
+ @Override
+ public I18nLanguageDTO getCurrentLanguage() {
+ return currentLanguage;
+ }
+
+ @Override
+ public StateAbstractDTO getCurrentState() {
+ return currentState;
+ }
+
+ @Override
+ public StateToken getCurrentStateToken() {
+ return currentState == null ? null : currentState.getStateToken();
+ }
+
+ @Override
+ public UserSimpleDTO getCurrentUser() {
+ return currentUserInfo == null ? null : currentUserInfo.getUser();
+ }
+
+ @Override
+ public UserInfoDTO getCurrentUserInfo() {
+ return currentUserInfo;
+ }
+
+ @Override
+ public LicenseDTO getDefLicense() {
+ return initData.getDefaultLicense();
+ }
+
+ @Override
+ public String getGalleryPermittedExtensions() {
+ return initData.getGalleryPermittedExtensions();
+ }
+
+ @Override
+ public Collection<ToolSimpleDTO> getGroupTools() {
+ return initData.getGroupTools();
+ }
+
+ @Override
+ public int getImgCropsize() {
+ return initData.getImgCropsize();
+ }
+
+ @Override
+ public int getImgIconsize() {
+ return initData.getImgIconsize();
+ }
+
+ @Override
+ public int getImgResizewidth() {
+ return initData.getImgResizewidth();
+ }
+
+ @Override
+ public int getImgThumbsize() {
+ return initData.getImgThumbsize();
+ }
+
+ @Override
+ public InitDataDTO getInitData() {
+ return initData;
+ }
+
+ @Override
+ public List<I18nLanguageSimpleDTO> getLanguages() {
+ return initData.getLanguages();
+ }
+
+ @Override
+ public Object[][] getLanguagesArray() {
+ if (languagesArray == null) {
+ languagesArray = mapLangs();
+ }
+ return languagesArray;
+ }
+
+ @Override
+ public List<LicenseDTO> getLicenses() {
+ return initData.getLicenses();
+ }
+
+ @Override
+ public boolean getShowDeletedContent() {
+ return currentUserInfo == null ? false : currentUserInfo.getShowDeletedContent();
+ }
+
+ @Override
+ public String getSiteUrl() {
+ final String baseURL = GWT.getModuleBaseURL();
+ return baseURL.substring(0, baseURL.lastIndexOf("/" + GWT.getModuleName()));
+ }
+
+ @Override
+ public Object[][] getTimezones() {
+ if (timezonesArray == null) {
+ mapTimezones();
+ }
+ return timezonesArray;
+ }
+
+ @Override
+ public String getUserHash() {
+ return userHash;
+ }
+
+ @Override
+ public Collection<ToolSimpleDTO> getUserTools() {
+ return initData.getUserTools();
+ }
+
+ @Override
+ public boolean inSameToken(final StateToken token) {
+ return getCurrentStateToken().equals(token);
+ }
+
+ @Override
+ public boolean isCurrentStateAContent() {
+ return currentState instanceof StateContentDTO;
+ }
+
+ @Override
+ public boolean isCurrentStateAGroup() {
+ return currentState == null ? false : !currentState.getGroup().isPersonal();
+ }
+
+ @Override
+ public boolean isCurrentStateAPerson() {
+ return currentState == null ? false : currentState.getGroup().isPersonal();
+ }
+
+ @Override
+ public boolean isInCurrentUserSpace() {
+ if (!isLogged()) {
+ return false;
+ }
+ if (getCurrentStateToken().getGroup().equals(getCurrentUser().getShortName())) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isLogged() {
+ return userHash != null;
+ }
+
+ @Override
+ public boolean isNotLogged() {
+ return !isLogged();
+ }
+
+ private Object[][] mapCountries() {
+ assert initData != null;
+ final Object[][] objs = new Object[initData.getCountries().size()][1];
+ int i = 0;
+ for (final I18nCountryDTO country : initData.getCountries()) {
+ final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() };
+ objs[i++] = obj;
+ }
+ return objs;
+ }
+
+ private Object[][] mapLangs() {
+ assert initData != null;
+ final Object[][] objs = new Object[initData.getLanguages().size()][1];
+ int i = 0;
+ for (final I18nLanguageSimpleDTO language : initData.getLanguages()) {
+ final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() };
+ objs[i++] = obj;
+ }
+ return objs;
+ }
+
+ private void mapTimezones() {
+ assert initData != null;
+ timezonesArray = new Object[initData.getTimezones().length][1];
+ for (int i = 0; i < getTimezones().length; i++) {
+ final Object[] obj = new Object[] { initData.getTimezones()[i] };
+ timezonesArray[i] = obj;
+ }
+ }
+
+ @Override
+ public void onAppStart(final boolean fireNow, final AppStartHandler handler) {
+ eventBus.addHandler(AppStartEvent.getType(), handler);
+ if (fireNow && initData != null) {
+ handler.onAppStart(new AppStartEvent(initData));
+ }
+ }
+
+ @Override
+ public void onUserSignIn(final boolean fireNow, final UserSignInHandler handler) {
+ eventBus.addHandler(UserSignInEvent.getType(), handler);
+ if (fireNow && isLogged() && currentUserInfo != null) {
+ handler.onUserSignIn(new UserSignInEvent(currentUserInfo));
+ }
+ }
+
+ @Override
+ public void onUserSignInOrSignOut(final boolean fireNow, final UserSignInOrSignOutHandler handler) {
+ eventBus.addHandler(UserSignInOrSignOutEvent.getType(), handler);
+ if (fireNow) {
+ handler.onUserSignInOrSignOut(new UserSignInOrSignOutEvent(isLogged()));
+ }
+ }
+
+ @Override
+ public void onUserSignOut(final boolean fireNow, final UserSignOutHandler handler) {
+ eventBus.addHandler(UserSignOutEvent.getType(), handler);
+ if (fireNow && isNotLogged()) {
+ handler.onUserSignOut(new UserSignOutEvent());
+ }
+ }
+
+ @Override
+ public void setCurrentLanguage(final I18nLanguageDTO currentLanguage) {
+ this.currentLanguage = currentLanguage;
+ }
+
+ @Override
+ public void setCurrentState(final StateAbstractDTO currentState) {
+ this.currentState = currentState;
+ }
+
+ @Override
+ public void setCurrentUserInfo(final UserInfoDTO currentUserInfo) {
+ this.currentUserInfo = currentUserInfo;
+ if (currentUserInfo != null) {
+ eventBus.fireEvent(new UserSignInEvent(this.currentUserInfo));
+ } else {
+ eventBus.fireEvent(new UserSignOutEvent());
+ }
+ eventBus.fireEvent(new UserSignInOrSignOutEvent(isLogged()));
+ }
+
+ @Override
+ public void setInitData(final InitDataDTO initData) {
+ this.initData = initData;
+ }
+
+ @Override
+ public void setUserHash(final String userHash) {
+ this.userHash = userHash;
+ }
+
+ @Override
+ public void signOut() {
+ cookieManager.removeAuthCookie();
+ setUserHash(null);
+ setCurrentUserInfo(null);
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,476 @@
+/*
+ *
+
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import org.waveprotocol.box.webclient.client.ClientEvents;
+import org.waveprotocol.box.webclient.client.events.WaveSelectionEvent;
+import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
+import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder;
+
+import cc.kune.common.client.actions.BeforeActionCollection;
+import cc.kune.common.client.actions.BeforeActionListener;
+import cc.kune.common.client.log.Log;
+import cc.kune.common.client.notify.ProgressHideEvent;
+import cc.kune.common.client.utils.Pair;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.GoHomeEvent;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.SocialNetworkChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.ToolChangedEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
+import cc.kune.core.client.events.SocialNetworkChangedEvent.SocialNetworkChangedHandler;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.sitebar.spaces.Space;
+import cc.kune.core.client.sitebar.spaces.SpaceConfEvent;
+import cc.kune.core.client.sitebar.spaces.SpaceSelectEvent;
+import cc.kune.core.client.state.ContentCache;
+import cc.kune.core.client.state.HistoryTokenCallback;
+import cc.kune.core.client.state.HistoryWrapper;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokenListeners;
+import cc.kune.core.client.state.SiteTokens;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.TokenMatcher;
+import cc.kune.core.client.state.TokenUtils;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.SocialNetworkDataDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class StateManagerDefault implements StateManager, ValueChangeHandler<String> {
+ private final BeforeActionCollection beforeStateChangeCollection;
+ private final ContentCache contentCache;
+ private final EventBus eventBus;
+ private final HistoryWrapper history;
+ private StateToken previousGroupToken;
+ /**
+ * When a historyChanged is interrupted (for instance because you are editing
+ * something), the new history token is stored here
+ */
+ private String resumedHistoryToken;
+ private final Session session;
+ private final SiteTokenListeners siteTokens;
+ private final TokenMatcher tokenMatcher;
+
+ @Inject
+ public StateManagerDefault(final ContentCache contentProvider, final Session session,
+ final HistoryWrapper history, final TokenMatcher tokenMatcher, final EventBus eventBus,
+ final SiteTokenListeners siteTokens) {
+ this.tokenMatcher = tokenMatcher;
+ this.eventBus = eventBus;
+ this.contentCache = contentProvider;
+ this.session = session;
+ this.history = history;
+ this.previousGroupToken = null;
+ this.resumedHistoryToken = null;
+ tokenMatcher.init(GwtWaverefEncoder.INSTANCE);
+ this.siteTokens = siteTokens;
+ beforeStateChangeCollection = new BeforeActionCollection();
+ session.onAppStart(true, new AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ session.onUserSignIn(false, new UserSignInEvent.UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ // refreshCurrentGroupState();
+ }
+ });
+ session.onUserSignOut(false, new UserSignOutEvent.UserSignOutHandler() {
+ @Override
+ public void onUserSignOut(final UserSignOutEvent event) {
+ refreshCurrentStateWithoutCache();
+ }
+ });
+ processCurrentHistoryToken();
+ }
+ });
+ onSocialNetworkChanged(false, new SocialNetworkChangedHandler() {
+ @Override
+ public void onSocialNetworkChanged(final SocialNetworkChangedEvent event) {
+ contentCache.removeCacheOfGroup(event.getState().getStateToken().getGroup());
+ }
+ });
+ eventBus.addHandler(GoHomeEvent.getType(), new GoHomeEvent.GoHomeHandler() {
+ @Override
+ public void onGoHome(final GoHomeEvent event) {
+ gotoDefaultHomepage();
+ }
+ });
+ }
+
+ @Override
+ public void addBeforeStateChangeListener(final BeforeActionListener listener) {
+ beforeStateChangeCollection.add(listener);
+ }
+
+ @Override
+ public void addSiteToken(final String token, final HistoryTokenCallback callback) {
+ siteTokens.put(token.toLowerCase(), callback);
+ }
+
+ private void checkGroupAndToolChange(final StateAbstractDTO newState) {
+ final String newGroup = newState.getStateToken().getGroup();
+ final String previousGroup = getPreviousGroup();
+ if (startingUp() || !previousGroup.equals(newGroup)) {
+ GroupChangedEvent.fire(eventBus, previousGroup, newGroup);
+ }
+ final String previousToolName = getPreviousTool();
+ final String newTokenTool = newState.getStateToken().getTool();
+ final String newToolName = newTokenTool == null ? "" : newTokenTool;
+ if (startingUp() || previousToolName == null || !previousToolName.equals(newToolName)) {
+ ToolChangedEvent.fire(eventBus, previousGroupToken, newState.getStateToken());
+ }
+ }
+
+ private void getContent(final StateToken newState) {
+ getContent(newState, false);
+ }
+
+ private void getContent(final StateToken newState, final boolean setBrowserHistory) {
+ // NotifyUser.info("loading: " + newState + " because current:" +
+ // session.getCurrentStateToken());
+ contentCache.getContent(session.getUserHash(), newState,
+ new AsyncCallbackSimple<StateAbstractDTO>() {
+ @Override
+ public void onSuccess(final StateAbstractDTO newState) {
+ setState(newState);
+ final String currentToken = newState.getStateToken().toString();
+ SpaceConfEvent.fire(eventBus, Space.groupSpace, currentToken);
+ SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(currentToken));
+ if (setBrowserHistory) {
+ history.newItem(currentToken, false);
+ SpaceSelectEvent.fire(eventBus, Space.groupSpace);
+ }
+ }
+ });
+ }
+
+ @Override
+ public String getCurrentToken() {
+ return history.getToken();
+ }
+
+ private String getPreviousGroup() {
+ final String previousGroup = startingUp() ? "" : previousGroupToken.getGroup();
+ return previousGroup;
+ }
+
+ private String getPreviousTool() {
+ final String previousTool = startingUp() ? "" : previousGroupToken.getTool();
+ return previousTool;
+ }
+
+ @Override
+ public void gotoDefaultHomepage() {
+ getContent(new StateToken(SiteTokens.GROUP_HOME), true);
+ }
+
+ @Override
+ public void gotoHistoryToken(final String token) {
+ Log.debug("StateManager: history goto-string-token: " + token);
+ history.newItem(token);
+ }
+
+ @Override
+ public void gotoHistoryTokenButRedirectToCurrent(final String token) {
+ gotoHistoryToken(TokenUtils.addRedirect(token, history.getToken()));
+
+ }
+
+ @Override
+ public void gotoStateToken(final StateToken newToken) {
+ Log.debug("StateManager: history goto-token: " + newToken + ", previous: " + previousGroupToken);
+ history.newItem(newToken.getEncoded());
+ }
+
+ @Override
+ public void gotoStateToken(final StateToken token, final boolean useCache) {
+ if (!useCache) {
+ contentCache.remove(token);
+ }
+ gotoStateToken(token);
+ }
+
+ @Override
+ public void onGroupChanged(final boolean fireNow, final GroupChangedHandler handler) {
+ eventBus.addHandler(GroupChangedEvent.getType(), handler);
+ final StateAbstractDTO currentState = session.getCurrentState();
+ if (fireNow && currentState != null) {
+ handler.onGroupChanged(new GroupChangedEvent(getPreviousGroup(),
+ currentState.getStateToken().getGroup()));
+ }
+
+ }
+
+ @Override
+ public void onSocialNetworkChanged(final boolean fireNow, final SocialNetworkChangedHandler handler) {
+ eventBus.addHandler(SocialNetworkChangedEvent.getType(), handler);
+ final StateAbstractDTO currentState = session.getCurrentState();
+ if (fireNow && currentState != null) {
+ handler.onSocialNetworkChanged(new SocialNetworkChangedEvent(currentState));
+ }
+ }
+
+ @Override
+ public void onStateChanged(final boolean fireNow, final StateChangedHandler handler) {
+ eventBus.addHandler(StateChangedEvent.getType(), handler);
+ final StateAbstractDTO currentState = session.getCurrentState();
+ if (fireNow && currentState != null) {
+ handler.onStateChanged(new StateChangedEvent(currentState));
+ }
+ }
+
+ @Override
+ public void onToolChanged(final boolean fireNow, final ToolChangedHandler handler) {
+ eventBus.addHandler(ToolChangedEvent.getType(), handler);
+ final StateAbstractDTO currentState = session.getCurrentState();
+ if (fireNow && currentState != null) {
+ handler.onToolChanged(new ToolChangedEvent(previousGroupToken, currentState.getStateToken()));
+ }
+ }
+
+ @Override
+ public void onValueChange(final ValueChangeEvent<String> event) {
+ Log.info("History event value changed: " + event.getValue());
+ processHistoryToken(event.getValue());
+ }
+
+ private void processCurrentHistoryToken() {
+ processHistoryToken(history.getToken());
+ }
+
+ void processHistoryToken(final String newHistoryToken) {
+ // http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideHistory
+ if (beforeStateChangeCollection.checkBeforeAction()) {
+ // There isn't a beforeStateChange listener that stops this history
+ // change
+ HistoryTokenCallback tokenListener = null;
+ if (newHistoryToken != null) {
+ final String nToken = newHistoryToken.toLowerCase();
+ tokenListener = siteTokens.get(nToken);
+ }
+ Log.debug("StateManager: on history changed (" + newHistoryToken + ")");
+ if (tokenListener == null) {
+ // Log.debug("Is not a special hash");
+ // token is not one of #newgroup #signin #translate ...
+ final String nToken = newHistoryToken != null ? newHistoryToken.toLowerCase() : null;
+ if (nToken != null && tokenMatcher.hasRedirect(nToken)) {
+ final Pair<String, String> redirect = tokenMatcher.getRedirect(nToken);
+ final String firstToken = redirect.getLeft();
+ final String sndToken = redirect.getRight();
+ if (firstToken.equals(SiteTokens.PREVIEW)) {
+ SpaceSelectEvent.fire(eventBus, Space.publicSpace);
+ SpaceConfEvent.fire(eventBus, Space.groupSpace, sndToken);
+ SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(sndToken));
+ getContent(new StateToken(sndToken));
+ } else if (firstToken.equals(SiteTokens.SUBTITLES)) {
+ siteTokens.get(SiteTokens.SUBTITLES).onHistoryToken(
+ tokenMatcher.getRedirect(newHistoryToken).getRight());
+ } else if (firstToken.equals(SiteTokens.NEWGROUP)) {
+ siteTokens.get(SiteTokens.NEWGROUP).onHistoryToken(newHistoryToken);
+ } else if (firstToken.equals(SiteTokens.SIGNIN)) {
+ if (session.isLogged()) {
+ // We are logged, then redirect:
+ history.newItem(sndToken, false);
+ processHistoryToken(sndToken);
+ } else {
+ // We have to loggin
+ siteTokens.get(SiteTokens.SIGNIN).onHistoryToken(newHistoryToken);
+ }
+ }
+ } else
+ // No redirection
+ if (tokenMatcher.isWaveToken(newHistoryToken)) {
+ if (session.isLogged()) {
+ SpaceConfEvent.fire(eventBus, Space.userSpace, newHistoryToken);
+ SpaceSelectEvent.fire(eventBus, Space.userSpace);
+ try {
+ ClientEvents.get().fireEvent(
+ new WaveSelectionEvent(GwtWaverefEncoder.decodeWaveRefFromPath(newHistoryToken)));
+ } catch (final InvalidWaveRefException e) {
+ Log.error(nToken, e);
+ }
+ } else {
+ // Wave, but don't logged
+ history.newItem(TokenUtils.addRedirect(SiteTokens.SIGNIN, newHistoryToken));
+ if (startingUp()) {
+ // Starting application (with Wave)
+ getContent(new StateToken(SiteTokens.GROUP_HOME), false);
+ }
+ }
+ } else if (tokenMatcher.isGroupToken(newHistoryToken)) {
+ SpaceConfEvent.fire(eventBus, Space.groupSpace, newHistoryToken);
+ SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(newHistoryToken));
+ SpaceSelectEvent.fire(eventBus, Space.groupSpace);
+ getContent(new StateToken(newHistoryToken));
+ } else {
+ gotoDefaultHomepage();
+ }
+ } else {
+ // token is one of #newgroup #signin #translate ...
+ if (startingUp()) {
+ // Starting with some token like "signin": load defContent
+ // also
+ getContent(new StateToken(SiteTokens.GROUP_HOME), false);
+ // processHistoryToken(SiteTokens.GROUP_HOME);
+ // SpaceSelectEvent.fire(eventBus, Space.groupSpace);
+ }
+ // Fire the listener of this #hash token
+ tokenListener.onHistoryToken(newHistoryToken);
+ }
+ } else {
+ resumedHistoryToken = newHistoryToken;
+ }
+ }
+
+ @Override
+ public void redirectOrRestorePreviousToken() {
+ final String token = history.getToken();
+ if (tokenMatcher.hasRedirect(token)) {
+ // URL of the form signin(group.tool)
+ final String previousToken = tokenMatcher.getRedirect(token).getRight();
+ if (previousToken.equals(SiteTokens.WAVEINBOX) && session.isNotLogged()) {
+ // signin(inbox) && cancel
+ restorePreviousToken();
+ } else {
+ history.newItem(previousToken); // FIXMEKK
+ }
+ } else {
+ // No redirect then restore previous token
+ restorePreviousToken();
+ }
+ }
+
+ /**
+ * <p>
+ * Reload current state (using client cache if available)
+ * </p>
+ */
+ @Override
+ public void refreshCurrentState() {
+ processHistoryToken(history.getToken());
+ }
+
+ /**
+ * <p>
+ * Reload current state (not using client cache)
+ * </p>
+ */
+ @Override
+ public void refreshCurrentStateWithoutCache() {
+ final StateToken currentStateToken = session.getCurrentStateToken();
+ if (currentStateToken == null) {
+ processCurrentHistoryToken();
+ } else {
+ contentCache.remove(currentStateToken);
+ getContent(currentStateToken);
+ }
+ }
+
+ @Override
+ public void removeBeforeStateChangeListener(final BeforeActionListener listener) {
+ beforeStateChangeCollection.remove(listener);
+ }
+
+ @Override
+ public void removeCache(final StateToken parentToken) {
+ contentCache.remove(parentToken);
+ }
+
+ @Override
+ public void removeCacheOfGroup(final String group) {
+ contentCache.removeCacheOfGroup(group);
+ }
+
+ @Override
+ public void removeSiteToken(final String token) {
+ siteTokens.remove(token);
+ }
+
+ @Override
+ public void restorePreviousToken() {
+ if (previousGroupToken != null) {
+ gotoStateToken(previousGroupToken);
+ }
+ }
+
+ @Override
+ public void resumeTokenChange() {
+ if (resumedHistoryToken != null) {
+ // Is this reload redundant?
+ refreshCurrentState();
+ gotoHistoryToken(resumedHistoryToken);
+ resumedHistoryToken = null;
+ }
+ }
+
+ @Override
+ public void setRetrievedState(final StateAbstractDTO newState) {
+ contentCache.cache(newState.getStateToken(), newState);
+ }
+
+ @Override
+ public void setRetrievedStateAndGo(final StateAbstractDTO newState) {
+ setRetrievedState(newState);
+ final String token = newState.getStateToken().toString();
+ if (history.getToken().equals(token)) {
+ setState(newState);
+ }
+ history.newItem(token);
+ }
+
+ @Override
+ public void setSocialNetwork(final SocialNetworkDataDTO socialNet) {
+ StateAbstractDTO state;
+ if (session != null && (state = session.getCurrentState()) != null) {
+ // After a SN operation, usually returns a SocialNetworkResultDTO
+ // with new SN data and we refresh the state
+ // to avoid to reload() again the state
+ state.setSocialNetworkData(socialNet);
+ SocialNetworkChangedEvent.fire(eventBus, state);
+ }
+ }
+
+ void setState(final StateAbstractDTO newState) {
+ session.setCurrentState(newState);
+ final StateToken newToken = newState.getStateToken();
+ contentCache.cache(newToken, newState);
+ // history.newItem(newToken.toString(), false);
+ StateChangedEvent.fire(eventBus, newState);
+ checkGroupAndToolChange(newState);
+ previousGroupToken = newToken.copy();
+ eventBus.fireEvent(new ProgressHideEvent());
+ }
+
+ private boolean startingUp() {
+ return previousGroupToken == null;
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,9 +20,9 @@
package cc.kune.core.client.ws;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.state.StateManagerDefault;
-import cc.kune.gspace.client.GSpaceArmorImpl;
-import cc.kune.gspace.client.resources.GSpaceArmorResources;
+import cc.kune.core.client.state.impl.StateManagerDefault;
+import cc.kune.gspace.client.armor.impl.GSpaceArmorImpl;
+import cc.kune.gspace.client.armor.resources.GSpaceArmorResources;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.History;
Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -30,7 +30,7 @@
import cc.kune.core.shared.FileConstants;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.HorizontalPanel;
Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,13 +20,13 @@
package cc.kune.core.client.ws.entheader;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent;
-import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent.CurrentEntityChangedHandler;
+import cc.kune.gspace.client.events.CurrentEntityChangedEvent;
+import cc.kune.gspace.client.events.CurrentEntityChangedEvent.CurrentEntityChangedHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.IsWidget;
Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -49,7 +49,8 @@
import cc.kune.core.server.content.CreationService;
import cc.kune.core.server.content.CreationServiceDefault;
import cc.kune.core.server.content.XMLActionReader;
-import cc.kune.core.server.i18n.I18nTranslationServiceDefault;
+import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang;
+import cc.kune.core.server.i18n.impl.I18nTranslationServiceDefault;
import cc.kune.core.server.mail.MailService;
import cc.kune.core.server.mail.MailServiceDefault;
import cc.kune.core.server.manager.ExtMediaDescripManager;
@@ -64,7 +65,6 @@
import cc.kune.core.server.manager.SocialNetworkManager;
import cc.kune.core.server.manager.TagManager;
import cc.kune.core.server.manager.TagUserContentManager;
-import cc.kune.core.server.manager.TagUserContentManagerDefault;
import cc.kune.core.server.manager.ToolConfigurationManager;
import cc.kune.core.server.manager.UserManager;
import cc.kune.core.server.manager.file.EntityLogoDownloadManager;
@@ -82,6 +82,7 @@
import cc.kune.core.server.manager.impl.RateManagerDefault;
import cc.kune.core.server.manager.impl.SocialNetworkManagerDefault;
import cc.kune.core.server.manager.impl.TagManagerDefault;
+import cc.kune.core.server.manager.impl.TagUserContentManagerDefault;
import cc.kune.core.server.manager.impl.ToolConfigurationManagerDefault;
import cc.kune.core.server.manager.impl.UserManagerDefault;
import cc.kune.core.server.mapper.DozerMapper;
@@ -110,10 +111,10 @@
import cc.kune.hspace.client.ClientStatsService;
import cc.kune.lists.client.rpc.ListsService;
import cc.kune.lists.server.rpc.ListsRPC;
-import cc.kune.wave.server.KuneWaveService;
-import cc.kune.wave.server.KuneWaveServiceDefault;
import cc.kune.wave.server.ParticipantUtils;
-import cc.kune.wave.server.WaveEmailNotifier;
+import cc.kune.wave.server.kspecific.KuneWaveService;
+import cc.kune.wave.server.kspecific.KuneWaveServiceDefault;
+import cc.kune.wave.server.kspecific.WaveEmailNotifier;
import com.google.inject.Singleton;
import com.google.inject.matcher.Matchers;
@@ -168,6 +169,7 @@
bind(FinderService.class).to(FinderServiceDefault.class);
bind(StateService.class).to(StateServiceDefault.class);
bind(I18nTranslationService.class).to(I18nTranslationServiceDefault.class);
+ bind(I18nTranslationServiceMultiLang.class).to(I18nTranslationServiceDefault.class);
bind(KuneWaveService.class).to(KuneWaveServiceDefault.class);
bind(MailService.class).to(MailServiceDefault.class);
bind(XMLActionReader.class);
Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,7 +21,7 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.Manager;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.domain.AccessLists;
import cc.kune.domain.Container;
import cc.kune.domain.Group;
Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -30,9 +30,9 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.MoveOnSameContainerException;
import cc.kune.core.client.errors.NameInUseException;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.manager.file.FileUtils;
import cc.kune.core.server.manager.impl.DefaultManager;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.server.manager.impl.ServerManagerException;
import cc.kune.core.server.utils.FilenameUtils;
import cc.kune.domain.AccessLists;
Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,7 +23,7 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.Manager;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.shared.domain.ContentStatus;
import cc.kune.core.shared.domain.RateResult;
import cc.kune.domain.Container;
Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -38,10 +38,10 @@
import cc.kune.core.client.errors.NameInUseException;
import cc.kune.core.client.errors.UserNotFoundException;
import cc.kune.core.server.access.FinderService;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.manager.TagUserContentManager;
import cc.kune.core.server.manager.file.FileUtils;
import cc.kune.core.server.manager.impl.DefaultManager;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.server.manager.impl.ServerManagerException;
import cc.kune.core.server.utils.FilenameUtils;
import cc.kune.core.shared.domain.ContentStatus;
@@ -56,9 +56,9 @@
import cc.kune.domain.finders.ContentFinder;
import cc.kune.domain.finders.I18nLanguageFinder;
import cc.kune.domain.finders.UserFinder;
-import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.KuneWaveUtils;
import cc.kune.wave.server.ParticipantUtils;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Provider;
Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -35,7 +35,7 @@
import cc.kune.domain.Group;
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveService;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Singleton;
Deleted: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,99 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.server.i18n;
-
-import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.server.UserSessionManager;
-import cc.kune.core.server.manager.I18nTranslationManager;
-import cc.kune.domain.I18nTranslation;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-
-@Singleton
-public class I18nTranslationServiceDefault extends I18nTranslationService {
-
- private boolean initiliazied = false;
- private final I18nTranslationManager translationManager;
- private final Provider<UserSessionManager> userSessionManager;
-
- @Inject
- public I18nTranslationServiceDefault(final I18nTranslationManager translationManager,
- final Provider<UserSessionManager> userSessionManager) {
- this.translationManager = translationManager;
- this.userSessionManager = userSessionManager;
- }
-
- public void init() {
- initiliazied = true;
- }
-
- @Override
- public boolean isRTL() {
- return userSessionManager.get().isUserLoggedIn() ? userSessionManager.get().getUser().getLanguage().getDirection().equals(
- RTL)
- : false;
- }
-
- /**
- * If the text is not in the db, it stores the text pending for translation.
- *
- * Warning: text is escaped as html before insert in the db. Don't use html
- * here (o user this method with params).
- *
- * @param text
- * @return text translated in the current language
- */
- @Override
- public String t(final String text) {
- return tWithNT(text, "");
- }
-
- /**
- * If the text is not in the db, it stores the text pending for translation.
- *
- * Warning: text is escaped as html before insert in the db. Don't use html
- * here (o user this method with params).
- *
- * @param text
- * @param noteForTranslators
- * some note for facilitate the translation
- *
- * @return text translated in the current language
- */
- @Override
- public String tWithNT(final String text, final String noteForTranslators) {
- String language;
- if (initiliazied && userSessionManager.get().isUserLoggedIn()) {
- language = userSessionManager.get().getUser().getLanguage().getCode();
- } else {
- language = I18nTranslation.DEFAULT_LANG;
- }
- final String encodeText = TextUtils.escapeHtmlLight(text);
- String translation = translationManager.getTranslation(language, text, noteForTranslators);
- if (translation == UNTRANSLATED_VALUE) {
- // Not translated but in db, return text
- translation = encodeText;
- }
- return decodeHtml(translation);
- }
-}
Added: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,20 @@
+package cc.kune.core.server.i18n;
+
+import cc.kune.domain.I18nLanguage;
+
+public interface I18nTranslationServiceMultiLang {
+ /**
+ * If the text is not in the db, it stores the text pending for translation.
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @param noteForTranslators
+ * some note for facilitate the translation
+ * @param lang
+ * translation for some specific language
+ * @return text translated in the specified language
+ */
+ public String tWithNT(I18nLanguage lang, final String text, final String noteForTranslators);
+}
Copied: trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,114 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.server.i18n.impl;
+
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.server.UserSessionManager;
+import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang;
+import cc.kune.core.server.manager.I18nLanguageManager;
+import cc.kune.core.server.manager.I18nTranslationManager;
+import cc.kune.domain.I18nLanguage;
+import cc.kune.domain.I18nTranslation;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.Singleton;
+
+@Singleton
+public class I18nTranslationServiceDefault extends I18nTranslationService implements
+ I18nTranslationServiceMultiLang {
+
+ private boolean initiliazied = false;
+ private final I18nLanguageManager languageManager;
+ private final I18nTranslationManager translationManager;
+ private final Provider<UserSessionManager> userSessionManager;
+
+ @Inject
+ public I18nTranslationServiceDefault(final I18nTranslationManager translationManager,
+ final Provider<UserSessionManager> userSessionManager, final I18nLanguageManager languageManager) {
+ this.translationManager = translationManager;
+ this.userSessionManager = userSessionManager;
+ this.languageManager = languageManager;
+ }
+
+ private I18nLanguage defLang() {
+ return languageManager.findByCode(I18nTranslation.DEFAULT_LANG);
+ }
+
+ public void init() {
+ initiliazied = true;
+ }
+
+ @Override
+ public boolean isRTL() {
+ return userSessionManager.get().isUserLoggedIn() ? userSessionManager.get().getUser().getLanguage().getDirection().equals(
+ RTL)
+ : false;
+ }
+
+ /**
+ * If the text is not in the db, it stores the text pending for translation.
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @return text translated in the current language
+ */
+ @Override
+ public String t(final String text) {
+ return tWithNT(text, "");
+ }
+
+ @Override
+ public String tWithNT(final I18nLanguage language, final String text, final String noteForTranslators) {
+ final String encodeText = TextUtils.escapeHtmlLight(text);
+ String translation = translationManager.getTranslation(language.getCode(), text, noteForTranslators);
+ if (translation == UNTRANSLATED_VALUE) {
+ // Not translated but in db, return text
+ translation = encodeText;
+ }
+ return decodeHtml(translation);
+ }
+
+ /**
+ * If the text is not in the db, it stores the text pending for translation.
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @param noteForTranslators
+ * some note for facilitate the translation
+ *
+ * @return text translated in the current language
+ */
+ @Override
+ public String tWithNT(final String text, final String noteForTranslators) {
+ I18nLanguage language;
+ if (initiliazied && userSessionManager.get().isUserLoggedIn()) {
+ language = userSessionManager.get().getUser().getLanguage();
+ } else {
+ language = defLang();
+ }
+ return tWithNT(language, text, noteForTranslators);
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,7 +29,7 @@
import cc.kune.core.client.errors.UserMustBeLoggedException;
import cc.kune.core.server.content.ContentManager;
-import cc.kune.core.server.i18n.I18nTranslationServiceDefault;
+import cc.kune.core.server.i18n.impl.I18nTranslationServiceDefault;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.I18nCountryManager;
import cc.kune.core.server.manager.I18nLanguageManager;
Modified: trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -26,7 +26,6 @@
import cc.kune.core.client.errors.EmailAddressInUseException;
import cc.kune.core.client.errors.GroupShortNameInUseException;
import cc.kune.core.client.errors.UserMustBeLoggedException;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.domain.Content;
import cc.kune.domain.Group;
Modified: trunk/src/main/java/cc/kune/core/server/manager/Manager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/Manager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/Manager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,7 +21,6 @@
import org.apache.lucene.search.BooleanClause;
-import cc.kune.core.server.manager.impl.SearchResult;
public interface Manager<T, X> {
Copied: trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,62 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.server.manager;
+
+import java.util.List;
+
+public class SearchResult<T> {
+ List<T> list;
+ int size;
+
+ public SearchResult() {
+ this(0, null);
+ }
+
+ public SearchResult(final int count, final List<T> list) {
+ this.list = list;
+ this.size = count;
+ }
+
+ public List<T> getList() {
+ return list;
+ }
+
+ /**
+ * Gets the size of total results (may differ from list size).
+ *
+ * @return the size
+ */
+ public int getSize() {
+ return size;
+ }
+
+ public void setList(final List<T> list) {
+ this.list = list;
+ }
+
+ public void setSize(final int size) {
+ this.size = size;
+ }
+
+ @Override
+ public String toString() {
+ return "SearchResult[(" + getSize() + "): " + list + "]";
+ }
+}
Deleted: trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,127 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.server.manager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-
-
-import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.server.manager.impl.DefaultManager;
-import cc.kune.core.shared.domain.TagCloudResult;
-import cc.kune.core.shared.domain.TagCount;
-import cc.kune.domain.Content;
-import cc.kune.domain.Group;
-import cc.kune.domain.Tag;
-import cc.kune.domain.TagUserContent;
-import cc.kune.domain.User;
-import cc.kune.domain.finders.TagUserContentFinder;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-
-@Singleton
-public class TagUserContentManagerDefault extends DefaultManager<TagUserContent, Long> implements TagUserContentManager {
- private final TagUserContentFinder finder;
- private final Provider<EntityManager> provider;
- private final TagManager tagManager;
-
- @Inject
- public TagUserContentManagerDefault(final Provider<EntityManager> provider, final TagManager tagManager,
- final TagUserContentFinder finder) {
- super(provider, TagUserContent.class);
- this.provider = provider;
- this.tagManager = tagManager;
- this.finder = finder;
- }
-
- List<Tag> find(final User user, final Content content) {
- return finder.findTags(user, content);
- }
-
- private int getMaxCount(final Group group) {
- return finder.getMaxGrouped(group).intValue();
- }
-
- private int getMinCount(final Group group) {
- return finder.getMinGrouped(group).intValue();
- }
-
- private List<TagCount> getSummaryByGroup(final Group group) {
- return finder.getTagsGroups(group);
- }
-
- @Override
- public TagCloudResult getTagCloudResultByGroup(final Group group) {
- try {
- return new TagCloudResult(getSummaryByGroup(group), getMaxCount(group), getMinCount(group));
- } catch (final NoResultException e) {
- return new TagCloudResult();
- }
- }
-
- @Override
- public String getTagsAsString(final User user, final Content content) {
- final StringBuffer tagConcatenated = new StringBuffer();
- if (user.getId() != null) {
- // FIXME: User must be persisted (this fails on tests)
- final List<Tag> tags = find(user, content);
- for (final Tag tag : tags) {
- tagConcatenated.append(" ").append(tag.getName());
- }
- }
- return tagConcatenated.toString().replaceFirst(" ", "");
- }
-
- @Override
- public void remove(final User user, final Content content) {
- for (final TagUserContent item : finder.find(user, content)) {
- provider.get().remove(item);
- }
- }
-
- @Override
- public void setTags(final User user, final Content content, final String tags) {
- final ArrayList<String> tagsStripped = TextUtils.splitTags(tags);
- final ArrayList<Tag> tagList = new ArrayList<Tag>();
-
- for (final String tagString : tagsStripped) {
- Tag tag;
- try {
- tag = tagManager.findByTagName(tagString);
- } catch (final NoResultException e) {
- tag = new Tag(tagString);
- tagManager.persist(tag);
- }
- if (!tagList.contains(tag)) {
- tagList.add(tag);
- }
- }
- remove(user, content);
- for (final Tag tag : tagList) {
- final TagUserContent tagUserContent = new TagUserContent(tag, user, content);
- persist(tagUserContent);
- }
- }
-}
Modified: trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,7 +22,6 @@
import org.waveprotocol.box.server.authentication.PasswordDigest;
import cc.kune.core.client.errors.I18nNotFoundException;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.UserDTO;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -34,6 +34,8 @@
import org.hibernate.search.jpa.FullTextQuery;
import org.hibernate.search.jpa.Search;
+import cc.kune.core.server.manager.SearchResult;
+
import com.google.inject.Provider;
public abstract class DefaultManager<T, K> {
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -42,6 +42,7 @@
import cc.kune.core.server.manager.FileManager;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.LicenseManager;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.manager.file.FileUtils;
import cc.kune.core.server.properties.KuneBasicProperties;
import cc.kune.core.server.properties.KuneProperties;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -36,9 +36,9 @@
import cc.kune.domain.User;
import cc.kune.domain.UserBuddiesData;
import cc.kune.domain.finders.GroupFinder;
-import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.KuneWaveUtils;
import cc.kune.wave.server.ParticipantUtils;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Singleton;
Deleted: trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,62 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.server.manager.impl;
-
-import java.util.List;
-
-public class SearchResult<T> {
- List<T> list;
- int size;
-
- public SearchResult() {
- this(0, null);
- }
-
- public SearchResult(final int count, final List<T> list) {
- this.list = list;
- this.size = count;
- }
-
- public List<T> getList() {
- return list;
- }
-
- /**
- * Gets the size of total results (may differ from list size).
- *
- * @return the size
- */
- public int getSize() {
- return size;
- }
-
- public void setList(final List<T> list) {
- this.list = list;
- }
-
- public void setSize(final int size) {
- this.size = size;
- }
-
- @Override
- public String toString() {
- return "SearchResult[(" + getSize() + "): " + list + "]";
- }
-}
Copied: trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,128 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.server.manager.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.server.manager.TagManager;
+import cc.kune.core.server.manager.TagUserContentManager;
+import cc.kune.core.shared.domain.TagCloudResult;
+import cc.kune.core.shared.domain.TagCount;
+import cc.kune.domain.Content;
+import cc.kune.domain.Group;
+import cc.kune.domain.Tag;
+import cc.kune.domain.TagUserContent;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.TagUserContentFinder;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.Singleton;
+
+@Singleton
+public class TagUserContentManagerDefault extends DefaultManager<TagUserContent, Long> implements
+ TagUserContentManager {
+ private final TagUserContentFinder finder;
+ private final Provider<EntityManager> provider;
+ private final TagManager tagManager;
+
+ @Inject
+ public TagUserContentManagerDefault(final Provider<EntityManager> provider,
+ final TagManager tagManager, final TagUserContentFinder finder) {
+ super(provider, TagUserContent.class);
+ this.provider = provider;
+ this.tagManager = tagManager;
+ this.finder = finder;
+ }
+
+ public List<Tag> find(final User user, final Content content) {
+ return finder.findTags(user, content);
+ }
+
+ private int getMaxCount(final Group group) {
+ return finder.getMaxGrouped(group).intValue();
+ }
+
+ private int getMinCount(final Group group) {
+ return finder.getMinGrouped(group).intValue();
+ }
+
+ private List<TagCount> getSummaryByGroup(final Group group) {
+ return finder.getTagsGroups(group);
+ }
+
+ @Override
+ public TagCloudResult getTagCloudResultByGroup(final Group group) {
+ try {
+ return new TagCloudResult(getSummaryByGroup(group), getMaxCount(group), getMinCount(group));
+ } catch (final NoResultException e) {
+ return new TagCloudResult();
+ }
+ }
+
+ @Override
+ public String getTagsAsString(final User user, final Content content) {
+ final StringBuffer tagConcatenated = new StringBuffer();
+ if (user.getId() != null) {
+ // FIXME: User must be persisted (this fails on tests)
+ final List<Tag> tags = find(user, content);
+ for (final Tag tag : tags) {
+ tagConcatenated.append(" ").append(tag.getName());
+ }
+ }
+ return tagConcatenated.toString().replaceFirst(" ", "");
+ }
+
+ @Override
+ public void remove(final User user, final Content content) {
+ for (final TagUserContent item : finder.find(user, content)) {
+ provider.get().remove(item);
+ }
+ }
+
+ @Override
+ public void setTags(final User user, final Content content, final String tags) {
+ final ArrayList<String> tagsStripped = TextUtils.splitTags(tags);
+ final ArrayList<Tag> tagList = new ArrayList<Tag>();
+
+ for (final String tagString : tagsStripped) {
+ Tag tag;
+ try {
+ tag = tagManager.findByTagName(tagString);
+ } catch (final NoResultException e) {
+ tag = new Tag(tagString);
+ tagManager.persist(tag);
+ }
+ if (!tagList.contains(tag)) {
+ tagList.add(tag);
+ }
+ }
+ remove(user, content);
+ for (final Tag tag : tagList) {
+ final TagUserContent tagUserContent = new TagUserContent(tag, user, content);
+ persist(tagUserContent);
+ }
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -55,6 +55,7 @@
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.I18nCountryManager;
import cc.kune.core.server.manager.I18nLanguageManager;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.manager.UserManager;
import cc.kune.core.server.notifier.NotifyService;
import cc.kune.core.server.properties.ChatProperties;
@@ -72,8 +73,8 @@
import cc.kune.domain.UserBuddiesData;
import cc.kune.domain.finders.UserFinder;
import cc.kune.wave.server.CustomUserRegistrationServlet;
-import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.ParticipantUtils;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Provider;
Modified: trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,7 +24,7 @@
import net.sf.dozer.util.mapping.DozerBeanMapperSingletonWrapper;
import net.sf.dozer.util.mapping.MapperIF;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.shared.dto.SearchResultDTO;
import com.google.inject.Singleton;
Modified: trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,7 +22,7 @@
import java.util.List;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.shared.dto.SearchResultDTO;
public interface Mapper {
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -8,14 +8,14 @@
import org.apache.commons.logging.LogFactory;
import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang;
import cc.kune.core.server.mail.FormatedString;
import cc.kune.core.server.mail.MailService;
-import cc.kune.core.server.manager.I18nTranslationManager;
import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.xmpp.XmppManager;
import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveService;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
@@ -25,14 +25,14 @@
public class NotifySenderDefault implements NotifySender {
public static final Log LOG = LogFactory.getLog(NotifySenderDefault.class);
private final String emailTemplate;
- private final I18nTranslationManager i18n;
+ private final I18nTranslationServiceMultiLang i18n;
private final MailService mailService;
private final KuneWaveService waveService;
private final XmppManager xmppManager;
@Inject
public NotifySenderDefault(final MailService mailService, final KuneWaveService waveService,
- final XmppManager xmppManager, final I18nTranslationManager i18n,
+ final XmppManager xmppManager, final I18nTranslationServiceMultiLang i18n,
final KuneProperties kuneProperties) throws IOException {
this.mailService = mailService;
this.waveService = waveService;
@@ -51,20 +51,20 @@
final String username = user.getShortName();
if (subject.shouldBeTranslated()) {
// Translate per recipient language
- final String subjectTranslation = i18n.getTranslation(user.getLanguage().getCode(),
- subject.getTemplate(), "");
- if (subjectTranslation != null) {
- // Right now commented because we are only testing
- // subject.setTemplate(subjectTranslation);
- }
+ // final String subjectTranslation = i18n.tWithNT(user.getLanguage(),
+ // subject.getTemplate(), "");
+ // if (subjectTranslation != null) {
+ // Right now commented because we are only testing
+ // subject.setTemplate(subjectTranslation);
+ // }
}
if (body.shouldBeTranslated()) {
- final String bodyTranslation = i18n.getTranslation(user.getLanguage().getCode(),
- body.getTemplate(), "");
- if (bodyTranslation != null) {
- // Right now commented because we are only testing
- // body.setTemplate(bodyTranslation);
- }
+ // final String bodyTranslation = i18n.tWithNT(user.getLanguage(),
+ // body.getTemplate(), "");
+ // if (bodyTranslation != null) {
+ // Right now commented because we are only testing
+ // body.setTemplate(bodyTranslation);
+ // }
}
switch (notifyType) {
case chat:
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -33,6 +33,7 @@
this.userFinder = userFinder;
}
+ @SuppressWarnings("unchecked")
private void getAllUserMembers(final Set<User> users, final Group groupToNotify,
final boolean onlyAdmins) {
final Collection<Group> members;
@@ -60,7 +61,6 @@
}
- @SuppressWarnings("unchecked")
public void notifyGroup(final Group groupToNotify, final Group groupSender, final String subject,
final String message) {
final Set<User> members = new HashSet<User>();
Deleted: trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,57 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.server.rack;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-
-public final class RackHelper {
- public static String buildForwardString(final ServletRequest request, final String forward) {
- String parameters = RackHelper.extractParameters(request);
- return new StringBuilder(forward).append(parameters).toString();
- }
-
- public static String extractParameters(final ServletRequest request) {
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- String uri = httpServletRequest.getRequestURI();
- int index = uri.indexOf('?');
- if (index > 0) {
- return uri.substring(index);
- } else {
- return "";
- }
- }
-
- public static String getRelativeURL(final ServletRequest request) {
- HttpServletRequest req = (HttpServletRequest) request;
- String contextPath = req.getContextPath();
- String uri = req.getRequestURI();
- return uri.substring(contextPath.length());
- }
-
- public static String getURI(final ServletRequest request) {
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- return httpServletRequest.getRequestURI();
- }
-
- private RackHelper() {
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,192 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.server.rack;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.quartz.SchedulerException;
-import org.waveprotocol.box.server.rpc.ServerRpcProvider;
-
-import cc.kune.core.server.error.ServerException;
-import cc.kune.core.server.rack.dock.Dock;
-import cc.kune.core.server.rack.dock.RequestMatcher;
-import cc.kune.core.server.scheduler.CronServerTasksManager;
-import cc.kune.wave.server.WaveEmailNotifier;
-
-import com.google.inject.Injector;
-
-public class RackServletFilter implements Filter {
- public static class DockChain implements FilterChain {
- private final Iterator<Dock> iterator;
-
- public DockChain(final Iterator<Dock> iterator) {
- this.iterator = iterator;
- }
-
- @Override
- public void doFilter(final ServletRequest request, final ServletResponse response)
- throws IOException, ServletException {
- Dock dock = null;
- boolean matched = false;
-
- final String relative = RackHelper.getRelativeURL(request);
- while (!matched && iterator.hasNext()) {
- dock = iterator.next();
- matched = dock.matches(relative);
- }
- if (matched) {
- execute(dock.getFilter(), request, response);
- }
- }
-
- private void execute(final Filter filter, final ServletRequest request,
- final ServletResponse response) throws IOException, ServletException {
- // log.debug("RACK FILTER: " + filter.getClass().getSimpleName());
- filter.doFilter(request, response, this);
- }
- }
-
- public static final String INJECTOR_ATTRIBUTE = Injector.class.getName() + "Child";
- public static final String INJECTOR_PARENT_ATTRIBUTE = ServerRpcProvider.INJECTOR_ATTRIBUTE;
- private static final Log LOG = LogFactory.getLog(RackServletFilter.class);
- private static final String MODULE_PARAMETER = RackModule.class.getName();
- private List<Dock> docks;
-
- private List<RequestMatcher> excludes;
- private Injector injector;
- private Rack rack;
-
- @Override
- public void destroy() {
- for (final Dock dock : docks) {
- dock.getFilter().destroy();
- }
- }
-
- @Override
- public void doFilter(final ServletRequest request, final ServletResponse response,
- final FilterChain chain) throws IOException, ServletException {
-
- final String relative = RackHelper.getRelativeURL(request);
- for (final RequestMatcher matcher : excludes) {
- if (matcher.matches(relative)) {
- LOG.info("Excluded (from Guice): " + relative);
- chain.doFilter(request, response);
- return;
- }
- }
- LOG.debug("REQUEST: " + relative);
- final FilterChain newChain = new DockChain(docks.iterator());
- newChain.doFilter(request, response);
- }
-
- @Override
- protected void finalize() throws Throwable {
- super.finalize();
- stopContainerListeners(rack.getListeners(), injector);
- }
-
- private RackModule getModule(final FilterConfig filterConfig) {
- final String moduleName = getModuleName(filterConfig);
- try {
- final Class<?> clazz = Class.forName(moduleName);
- final RackModule module = (RackModule) clazz.newInstance();
- return module;
- } catch (final Exception e) {
- throw new ServerException("couldn't instantiate the rack module", e);
- }
- }
-
- private String getModuleName(final FilterConfig filterConfig) {
- final String moduleName = filterConfig.getInitParameter(MODULE_PARAMETER);
- if (moduleName == null) {
- throw new ServerException("Rack module name can't be null!");
- }
- return moduleName;
- }
-
- @Override
- public void init(final FilterConfig filterConfig) throws ServletException {
- LOG.debug("INITIALIZING RackServletFilter...");
- final RackModule module = getModule(filterConfig);
- final RackBuilder builder = new RackBuilder();
- module.configure(builder);
- rack = builder.getRack();
- injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE);
- final Injector kuneChildInjector = installInjector(filterConfig, rack, injector);
- startContainerListeners(rack.getListeners(), kuneChildInjector);
- docks = rack.getDocks();
- excludes = rack.getExcludes();
- initFilters(filterConfig);
- kuneChildInjector.getInstance(WaveEmailNotifier.class);
- try {
- kuneChildInjector.getInstance(CronServerTasksManager.class).start();
- } catch (final SchedulerException e) {
- LOG.error("Error starting cron scheduler", e);
- }
- LOG.debug("INITIALIZATION DONE!");
- }
-
- private void initFilters(final FilterConfig filterConfig) throws ServletException {
- for (final Dock dock : docks) {
- dock.getFilter().init(filterConfig);
- }
- }
-
- private Injector installInjector(final FilterConfig filterConfig, final Rack rack,
- final Injector waveChildInjector) {
- // final Injector injector = Guice.createInjector();
- final Injector childInjector = waveChildInjector.createChildInjector(rack.getGuiceModules());
- filterConfig.getServletContext().setAttribute(INJECTOR_ATTRIBUTE, childInjector);
- return childInjector;
- }
-
- private void startContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
- final Injector injector) {
- LOG.debug("STARTING CONTAINER LISTENERS...");
- for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
- final ContainerListener listener = injector.getInstance(listenerClass);
- listener.start();
- }
- }
-
- // FIXME: Dani, never used this:
- @SuppressWarnings("unused")
- private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
- final Injector injector) {
- LOG.debug("STOPING CONTAINER LISTENERS...");
- for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
- final ContainerListener listener = injector.getInstance(listenerClass);
- listener.stop();
- }
- }
-
-}
Added: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,191 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.server.rack;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.quartz.SchedulerException;
+import org.waveprotocol.box.server.rpc.ServerRpcProvider;
+
+import cc.kune.core.server.error.ServerException;
+import cc.kune.core.server.rack.dock.Dock;
+import cc.kune.core.server.rack.dock.RequestMatcher;
+import cc.kune.core.server.rack.utils.RackHelper;
+import cc.kune.core.server.scheduler.CronServerTasksManager;
+import cc.kune.wave.server.kspecific.WaveEmailNotifier;
+
+import com.google.inject.Injector;
+
+public class RackServletFilter implements Filter {
+ public static class DockChain implements FilterChain {
+ private final Iterator<Dock> iterator;
+
+ public DockChain(final Iterator<Dock> iterator) {
+ this.iterator = iterator;
+ }
+
+ @Override
+ public void doFilter(final ServletRequest request, final ServletResponse response)
+ throws IOException, ServletException {
+ Dock dock = null;
+ boolean matched = false;
+
+ final String relative = RackHelper.getRelativeURL(request);
+ while (!matched && iterator.hasNext()) {
+ dock = iterator.next();
+ matched = dock.matches(relative);
+ }
+ if (matched) {
+ execute(dock.getFilter(), request, response);
+ }
+ }
+
+ private void execute(final Filter filter, final ServletRequest request,
+ final ServletResponse response) throws IOException, ServletException {
+ // log.debug("RACK FILTER: " + filter.getClass().getSimpleName());
+ filter.doFilter(request, response, this);
+ }
+ }
+
+ public static final String INJECTOR_ATTRIBUTE = Injector.class.getName() + "Child";
+ public static final String INJECTOR_PARENT_ATTRIBUTE = ServerRpcProvider.INJECTOR_ATTRIBUTE;
+ private static final Log LOG = LogFactory.getLog(RackServletFilter.class);
+ private static final String MODULE_PARAMETER = RackModule.class.getName();
+ private List<Dock> docks;
+
+ private List<RequestMatcher> excludes;
+ private Injector injector;
+ private Rack rack;
+
+ @Override
+ public void destroy() {
+ for (final Dock dock : docks) {
+ dock.getFilter().destroy();
+ }
+ }
+
+ @Override
+ public void doFilter(final ServletRequest request, final ServletResponse response,
+ final FilterChain chain) throws IOException, ServletException {
+
+ final String relative = RackHelper.getRelativeURL(request);
+ for (final RequestMatcher matcher : excludes) {
+ if (matcher.matches(relative)) {
+ LOG.info("Excluded (from Guice): " + relative);
+ chain.doFilter(request, response);
+ return;
+ }
+ }
+ LOG.debug("REQUEST: " + relative);
+ final FilterChain newChain = new DockChain(docks.iterator());
+ newChain.doFilter(request, response);
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ super.finalize();
+ stopContainerListeners(rack.getListeners(), injector);
+ }
+
+ private RackModule getModule(final FilterConfig filterConfig) {
+ final String moduleName = getModuleName(filterConfig);
+ try {
+ final Class<?> clazz = Class.forName(moduleName);
+ final RackModule module = (RackModule) clazz.newInstance();
+ return module;
+ } catch (final Exception e) {
+ throw new ServerException("couldn't instantiate the rack module", e);
+ }
+ }
+
+ private String getModuleName(final FilterConfig filterConfig) {
+ final String moduleName = filterConfig.getInitParameter(MODULE_PARAMETER);
+ if (moduleName == null) {
+ throw new ServerException("Rack module name can't be null!");
+ }
+ return moduleName;
+ }
+
+ @Override
+ public void init(final FilterConfig filterConfig) throws ServletException {
+ LOG.debug("INITIALIZING RackServletFilter...");
+ final RackModule module = getModule(filterConfig);
+ final RackBuilder builder = new RackBuilder();
+ module.configure(builder);
+ rack = builder.getRack();
+ injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE);
+ final Injector kuneChildInjector = installInjector(filterConfig, rack, injector);
+ startContainerListeners(rack.getListeners(), kuneChildInjector);
+ docks = rack.getDocks();
+ excludes = rack.getExcludes();
+ initFilters(filterConfig);
+ kuneChildInjector.getInstance(WaveEmailNotifier.class);
+ try {
+ kuneChildInjector.getInstance(CronServerTasksManager.class).start();
+ } catch (final SchedulerException e) {
+ LOG.error("Error starting cron scheduler", e);
+ }
+ LOG.debug("INITIALIZATION DONE!");
+ }
+
+ private void initFilters(final FilterConfig filterConfig) throws ServletException {
+ for (final Dock dock : docks) {
+ dock.getFilter().init(filterConfig);
+ }
+ }
+
+ private Injector installInjector(final FilterConfig filterConfig, final Rack rack,
+ final Injector waveChildInjector) {
+ // final Injector injector = Guice.createInjector();
+ final Injector childInjector = waveChildInjector.createChildInjector(rack.getGuiceModules());
+ filterConfig.getServletContext().setAttribute(INJECTOR_ATTRIBUTE, childInjector);
+ return childInjector;
+ }
+
+ private void startContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
+ final Injector injector) {
+ LOG.debug("STARTING CONTAINER LISTENERS...");
+ for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
+ final ContainerListener listener = injector.getInstance(listenerClass);
+ listener.start();
+ }
+ }
+
+ private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
+ final Injector injector) {
+ LOG.debug("STOPING CONTAINER LISTENERS...");
+ for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
+ final ContainerListener listener = injector.getInstance(listenerClass);
+ listener.stop();
+ }
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -31,23 +31,23 @@
public abstract class AbstractInjectedFilter implements Filter {
- protected ServletContext ctx;
+ protected ServletContext ctx;
- @Override
- public abstract void destroy();
+ @Override
+ public abstract void destroy();
- public <T> T getInstance(final Class<T> type) {
- return getInjector().getInstance(type);
- }
+ private Injector getInjector() {
+ return (Injector) ctx.getAttribute(RackServletFilter.INJECTOR_ATTRIBUTE);
+ }
- @Override
- public void init(final FilterConfig filterConfig) throws ServletException {
- this.ctx = filterConfig.getServletContext();
- getInjector().injectMembers(this);
- }
+ public <T> T getInstance(final Class<T> type) {
+ return getInjector().getInstance(type);
+ }
- private Injector getInjector() {
- return (Injector) ctx.getAttribute(RackServletFilter.INJECTOR_ATTRIBUTE);
- }
+ @Override
+ public void init(final FilterConfig filterConfig) throws ServletException {
+ this.ctx = filterConfig.getServletContext();
+ getInjector().injectMembers(this);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,7 +29,7 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
-import cc.kune.core.server.rack.RackHelper;
+import cc.kune.core.server.rack.utils.RackHelper;
public class ForwardFilter extends AbstractInjectedFilter {
// private static final Log log = LogFactory.getLog(ForwardFilter.class);
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -31,7 +31,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import cc.kune.core.server.rack.RackHelper;
+import cc.kune.core.server.rack.utils.RackHelper;
public class LogFilter implements Filter {
public static final Log LOG = LogFactory.getLog(LogFilter.class);
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -32,8 +32,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import cc.kune.core.server.rack.RackHelper;
import cc.kune.core.server.rack.filters.AbstractInjectedFilter;
+import cc.kune.core.server.rack.utils.RackHelper;
import com.google.gwt.user.client.rpc.RemoteService;
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -32,8 +32,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import cc.kune.core.server.rack.RackHelper;
import cc.kune.core.server.rack.filters.AbstractInjectedFilter;
+import cc.kune.core.server.rack.utils.RackHelper;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -31,8 +31,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import cc.kune.core.server.rack.RackHelper;
import cc.kune.core.server.rack.filters.AbstractInjectedFilter;
+import cc.kune.core.server.rack.utils.RackHelper;
public class ServletServiceFilter extends AbstractInjectedFilter {
Log log = LogFactory.getLog(ServletServiceFilter.class);
Copied: trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,57 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.server.rack.utils;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+
+public final class RackHelper {
+ public static String buildForwardString(final ServletRequest request, final String forward) {
+ String parameters = RackHelper.extractParameters(request);
+ return new StringBuilder(forward).append(parameters).toString();
+ }
+
+ public static String extractParameters(final ServletRequest request) {
+ HttpServletRequest httpServletRequest = (HttpServletRequest) request;
+ String uri = httpServletRequest.getRequestURI();
+ int index = uri.indexOf('?');
+ if (index > 0) {
+ return uri.substring(index);
+ } else {
+ return "";
+ }
+ }
+
+ public static String getRelativeURL(final ServletRequest request) {
+ HttpServletRequest req = (HttpServletRequest) request;
+ String contextPath = req.getContextPath();
+ String uri = req.getRequestURI();
+ return uri.substring(contextPath.length());
+ }
+
+ public static String getURI(final ServletRequest request) {
+ HttpServletRequest httpServletRequest = (HttpServletRequest) request;
+ return httpServletRequest.getRequestURI();
+ }
+
+ private RackHelper() {
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,7 +22,7 @@
import cc.kune.core.server.content.ContainerManager;
import cc.kune.core.server.content.ContentManager;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.server.rack.filters.rest.REST;
import cc.kune.core.shared.SearcherConstants;
Modified: trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,7 +21,7 @@
import cc.kune.core.server.manager.GroupManager;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.server.rack.filters.rest.REST;
import cc.kune.core.shared.SearcherConstants;
Modified: trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,8 +20,8 @@
package cc.kune.core.server.rest;
+import cc.kune.core.server.manager.SearchResult;
import cc.kune.core.server.manager.UserManager;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.server.rack.filters.rest.REST;
import cc.kune.core.shared.SearcherConstants;
Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -35,7 +35,7 @@
import cc.kune.domain.License;
import cc.kune.domain.Revision;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveService;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Singleton;
Modified: trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -10,9 +10,9 @@
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.events.client.viewer.CalendarViewerPresenter.CalendarViewerView;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.viewers.AbstractFolderViewerPanel;
-import cc.kune.gspace.client.viewers.FolderItemDescriptor;
+import cc.kune.gspace.client.viewers.items.FolderItemDescriptor;
import com.bradrydzewski.gwt.calendar.client.Appointment;
import com.bradrydzewski.gwt.calendar.client.AppointmentStyle;
Deleted: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,83 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.gspace.client;
-
-import cc.kune.common.client.actions.ui.IsActionExtensible;
-
-import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.SimplePanel;
-
-public interface GSpaceArmor {
-
- void clearBackImage();
-
- void enableCenterScroll(boolean enable);
-
- ForIsWidget getDocContainer();
-
- ForIsWidget getDocFooter();
-
- IsActionExtensible getDocFooterToolbar();
-
- ForIsWidget getDocHeader();
-
- ForIsWidget getDocSubheader();
-
- ForIsWidget getEntityFooter();
-
- IsActionExtensible getEntityFooterToolbar();
-
- ForIsWidget getEntityHeader();
-
- ForIsWidget getEntityToolsCenter();
-
- ForIsWidget getEntityToolsNorth();
-
- ForIsWidget getEntityToolsSouth();
-
- IsActionExtensible getHeaderToolbar();
-
- SimplePanel getHomeSpace();
-
- IsWidget getMainpanel();
-
- SimplePanel getPublicSpace();
-
- ForIsWidget getSitebar();
-
- IsActionExtensible getSubheaderToolbar();
-
- IsActionExtensible getToolsSouthToolbar();
-
- ForIsWidget getUserSpace();
-
- void selectGroupSpace();
-
- void selectHomeSpace();
-
- void selectPublicSpace();
-
- void selectUserSpace();
-
- void setBackImage(String url);
-
- void setContentVisible(boolean visible);
-}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,7 +19,8 @@
*/
package cc.kune.gspace.client;
-import cc.kune.gspace.client.resources.GSpaceArmorResources;
+import cc.kune.gspace.client.armor.impl.GSpaceArmorImpl;
+import cc.kune.gspace.client.armor.resources.GSpaceArmorResources;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
Deleted: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,277 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.gspace.client;
-
-import org.cobogw.gwt.user.client.CSS;
-
-import cc.kune.common.client.actions.ui.ActionFlowPanel;
-import cc.kune.common.client.actions.ui.IsActionExtensible;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.Style.Overflow;
-import com.google.gwt.dom.client.Style.Position;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.DockLayoutPanel;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.ScrollPanel;
-import com.google.gwt.user.client.ui.SimplePanel;
-import com.google.gwt.user.client.ui.SplitLayoutPanel;
-import com.google.gwt.user.client.ui.TabLayoutPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class GSpaceArmorImpl extends Composite implements GSpaceArmor {
-
- interface WsArmorImplUiBinder extends UiBinder<Widget, GSpaceArmorImpl> {
- }
-
- private static WsArmorImplUiBinder uiBinder = GWT.create(WsArmorImplUiBinder.class);
-
- @UiField
- ScrollPanel centerScroll;
- @UiField
- FlowPanel docContainer;
- @UiField
- DockLayoutPanel docContainerParent;
- @UiField
- FlowPanel docFooter;
- private final ActionFlowPanel docFooterToolbar;
- @UiField
- FlowPanel docHeader;
- @UiField
- FlowPanel docSubheader;
- @UiField
- FlowPanel entityFooter;
- private final ActionFlowPanel entityFooterToolbar;
- @UiField
- FlowPanel entityHeader;
- @UiField
- FlowPanel entityToolsCenter;
- @UiField
- FlowPanel entityToolsContainer;
- @UiField
- FlowPanel entityToolsNorth;
- @UiField
- FlowPanel entityToolsSouth;
- @UiField
- SplitLayoutPanel groupSpace;
- @UiField
- SimplePanel groupSpaceWrapper;
- private final ActionFlowPanel headerToolbar;
- @UiField
- SimplePanel homeSpace;
- @UiField
- DockLayoutPanel mainpanel;
- @UiField
- SimplePanel publicSpace;
- @UiField
- FlowPanel sitebar;
- @UiField
- DockLayoutPanel splitCenter;
- @UiField
- DockLayoutPanel splitEast;
- private final ActionFlowPanel subheaderToolbar;
- @UiField
- TabLayoutPanel tabs;
- private final ActionFlowPanel toolsSouthToolbar;
- @UiField
- FlowPanel userSpace;
-
- @Inject
- public GSpaceArmorImpl(final Provider<ActionFlowPanel> toolbarProv) {
- initWidget(uiBinder.createAndBindUi(this));
- groupSpace.setWidgetMinSize(splitEast, 150);
- DOM.setStyleAttribute((Element) groupSpace.getWidgetContainerElement(splitEast), "overflow",
- "visible");
- DOM.setStyleAttribute((Element) splitEast.getWidgetContainerElement(entityToolsContainer),
- "overflow", "visible");
- docFooterToolbar = toolbarProv.get();
- headerToolbar = toolbarProv.get();
- subheaderToolbar = toolbarProv.get();
- toolsSouthToolbar = toolbarProv.get();
- entityFooterToolbar = toolbarProv.get();
- getDocHeader().add(headerToolbar);
- getDocSubheader().add(subheaderToolbar);
- getDocFooter().add(docFooterToolbar);
- getEntityToolsSouth().add(toolsSouthToolbar);
- getEntityFooter().add(entityFooterToolbar);
- entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE);
- // entityToolsSouth.setVisible(false);
- mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces");
- enableCenterScroll(true);
- }
-
- @Override
- public void clearBackImage() {
- final String bodyProp = "#FFFFFF";
- DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp);
- }
-
- @Override
- public void enableCenterScroll(final boolean enable) {
- // TODO use here Element.getStyle()...
- if (enable) {
- centerScroll.setAlwaysShowScrollBars(false);
- DOM.setStyleAttribute(centerScroll.getElement(), "position", "absolute");
- DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position",
- "relative");
- } else {
- centerScroll.getElement().getStyle().setOverflow(Overflow.HIDDEN);
- DOM.setStyleAttribute(centerScroll.getElement(), "position", "");
- DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", "");
- }
- }
-
- @Override
- public ForIsWidget getDocContainer() {
- return docContainer;
- }
-
- @Override
- public ForIsWidget getDocFooter() {
- return docFooter;
- }
-
- @Override
- public IsActionExtensible getDocFooterToolbar() {
- return docFooterToolbar;
- }
-
- @Override
- public ForIsWidget getDocHeader() {
- return docHeader;
- }
-
- @Override
- public ForIsWidget getDocSubheader() {
- return docSubheader;
- }
-
- @Override
- public ForIsWidget getEntityFooter() {
- return entityFooter;
- }
-
- @Override
- public IsActionExtensible getEntityFooterToolbar() {
- return entityFooterToolbar;
- }
-
- @Override
- public ForIsWidget getEntityHeader() {
- return entityHeader;
- }
-
- @Override
- public ForIsWidget getEntityToolsCenter() {
- return entityToolsCenter;
- }
-
- @Override
- public ForIsWidget getEntityToolsNorth() {
- return entityToolsNorth;
- }
-
- @Override
- public ForIsWidget getEntityToolsSouth() {
- return entityToolsSouth;
- }
-
- @Override
- public IsActionExtensible getHeaderToolbar() {
- return headerToolbar;
- }
-
- @Override
- public SimplePanel getHomeSpace() {
- return homeSpace;
- }
-
- @Override
- public IsWidget getMainpanel() {
- return mainpanel;
- }
-
- @Override
- public SimplePanel getPublicSpace() {
- return publicSpace;
- }
-
- @Override
- public ForIsWidget getSitebar() {
- return sitebar;
- }
-
- @Override
- public IsActionExtensible getSubheaderToolbar() {
- return subheaderToolbar;
- }
-
- @Override
- public IsActionExtensible getToolsSouthToolbar() {
- return toolsSouthToolbar;
- }
-
- @Override
- public ForIsWidget getUserSpace() {
- return userSpace;
- }
-
- @Override
- public void selectGroupSpace() {
- tabs.selectTab(groupSpaceWrapper);
- }
-
- @Override
- public void selectHomeSpace() {
- tabs.selectTab(homeSpace);
- }
-
- @Override
- public void selectPublicSpace() {
- tabs.selectTab(publicSpace);
- }
-
- @Override
- public void selectUserSpace() {
- tabs.selectTab(userSpace);
- }
-
- @Override
- public void setBackImage(final String url) {
- final String bodyProp = "#FFFFFF url('" + url + "') fixed top left";
- DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp);
- }
-
- @Override
- public void setContentVisible(final boolean visible) {
- // FIXME: remove this?
- // NotifyUser.info("Visible: " + visible);
- // docContainer.getElement().getStyle().setOpacity(visible ? 1d : .0d);
- // docFooter.getElement().getStyle().setOpacity(visible ? 1d : .0d);
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,126 +0,0 @@
-<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
- xmlns:co="urn:import:cc.kune.core.client" xmlns:kp="urn:import:cc.kune.pspace.client"
- xmlns:g="urn:import:com.google.gwt.user.client.ui">
- <ui:with field='res'
- type='cc.kune.gspace.client.resources.GSpaceArmorResources'/>
- <ui:style>
- .frame {
- border: 0px;
- margin: 0px;
- }
- </ui:style>
- <g:DockLayoutPanel ui:field="mainpanel" styleName='{res.style.mainPanel}'
- unit="PX">
- <g:north size="23">
- <g:FlowPanel ui:field="sitebar" height="23px"
- styleName='{res.style.siteBar}'>
- </g:FlowPanel>
- </g:north>
- <g:center>
- <g:TabLayoutPanel width="100%" height="100%"
- barUnit='PX' barHeight='0' ui:field="tabs">
- <g:tab>
- <g:header size='0'/>
- <g:SimplePanel styleName="k-space" ui:field="homeSpace"
- width="100%" height="100%"></g:SimplePanel>
- </g:tab>
- <g:tab>
- <g:header size='0'/>
- <g:FlowPanel ui:field="userSpace" styleName="k-space"
- width="100%" height="100%">
- <!-- <g:Frame url="/" styleName="{style.frame}" -->
- <!-- ui:field="frame" width="100%" height="100%" /> -->
- </g:FlowPanel>
- </g:tab>
- <g:tab>
- <g:header size='0'/>
- <g:SimplePanel ui:field="groupSpaceWrapper"
- styleName="k-group-space">
- <g:SplitLayoutPanel width="100%" height="100%"
- styleName="k-space" ui:field="groupSpace">
- <g:center size="1.0">
- <g:DockLayoutPanel unit="PX" ui:field="splitCenter"
- styleName="{res.style.entityCentralContainer}">
- <g:north size="153">
- <g:VerticalPanel width="100%"
- height="153px">
- <g:FlowPanel height="70px" width="100%"
- styleName="{res.style.entityHeader}" ui:field="entityHeader">
- <!--<g:RichTextArea width="100%" height="70px" /> -->
- </g:FlowPanel>
- <g:FlowPanel width="100%" height="38px"
- styleName="{res.style.docHeader}" ui:field="docHeader">
- </g:FlowPanel>
- <g:HTMLPanel ui:field="arrow"
- styleName="{res.style.docSubheaderArrow}"/>
- <g:FlowPanel width="100%" height="45px"
- styleName="{res.style.docSubheader}" ui:field="docSubheader">
- </g:FlowPanel>
- </g:VerticalPanel>
- </g:north>
- <g:center>
- <g:DockLayoutPanel unit="PX"
- styleName="{res.style.docEditorMargin}" ui:field="docContainerParent">
- <g:west size="10">
- <g:SimplePanel/>
- </g:west>
- <g:east size="10">
- <g:SimplePanel/>
- </g:east>
- <g:center>
- <g:ScrollPanel ui:field="centerScroll"
- styleName="{res.style.docEditor}">
- <g:FlowPanel width="auto" height="auto"
- styleName="{res.style.docEditorContainer}"
- ui:field="docContainer"/>
- </g:ScrollPanel>
- </g:center>
- <g:south size="33.0">
- <g:VerticalPanel height="33px"
- width="100%" styleName="{res.style.docFooter}">
- <g:FlowPanel width="100%" height="33"
- ui:field="docFooter">
- </g:FlowPanel>
- </g:VerticalPanel>
- </g:south>
- </g:DockLayoutPanel>
- </g:center>
- <g:south size="36">
- <g:FlowPanel height="36px" width="100%"
- styleName="{res.style.entityFooter}" ui:field="entityFooter">
- </g:FlowPanel>
- </g:south>
- </g:DockLayoutPanel>
- </g:center>
- <!-- east to RTL (plus css changes in corners and menus) -->
- <g:west size="200.0">
- <g:DockLayoutPanel unit="PX"
- styleName="{res.style.entityTools}" ui:field="splitEast">
- <g:center>
- <g:FlowPanel ui:field="entityToolsContainer">
- <g:FlowPanel width="100%" ui:field="entityToolsNorth"
- styleName="{res.style.entityToolsNorth}"></g:FlowPanel>
- <g:FlowPanel width="100%" ui:field="entityToolsCenter"
- styleName="{res.style.entityToolsCenter}">
- </g:FlowPanel>
- </g:FlowPanel>
- </g:center>
- <g:south size="98">
- <g:FlowPanel styleName="{res.style.entityToolsSouth}"
- ui:field="entityToolsSouth" width="100%"/>
- </g:south>
- </g:DockLayoutPanel>
- </g:west>
- </g:SplitLayoutPanel>
- </g:SimplePanel>
- </g:tab>
- <g:tab>
- <g:header size='0'/>
- <g:SimplePanel ui:field="publicSpace" width="100%"
- styleName="k-space" height="100%"></g:SimplePanel>
- </g:tab>
- </g:TabLayoutPanel>
- </g:center>
- </g:DockLayoutPanel>
-</ui:UiBinder>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -26,6 +26,8 @@
import cc.kune.gspace.client.actions.ContentViewerOptionsMenu;
import cc.kune.gspace.client.actions.GiveUsFeedbackBtn;
import cc.kune.gspace.client.actions.RenameAction;
+import cc.kune.gspace.client.armor.GSpaceArmor;
+import cc.kune.gspace.client.armor.impl.GSpaceArmorImpl;
import cc.kune.gspace.client.i18n.I18nTranslator;
import cc.kune.gspace.client.i18n.I18nTranslatorPanel;
import cc.kune.gspace.client.i18n.I18nTranslatorPresenter;
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,8 +19,8 @@
*/
package cc.kune.gspace.client;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
import cc.kune.core.client.sn.actions.WriteToBuddyHeaderButton;
import cc.kune.core.client.state.HistoryTokenCallback;
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,8 +20,8 @@
package cc.kune.gspace.client.actions;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
-import cc.kune.core.client.state.AccessRightsChangedEvent;
-import cc.kune.core.client.state.AccessRightsChangedEvent.AccessRightsChangedHandler;
+import cc.kune.core.client.events.AccessRightsChangedEvent;
+import cc.kune.core.client.events.AccessRightsChangedEvent.AccessRightsChangedHandler;
import cc.kune.core.client.state.AccessRightsClientManager;
public class AbstractEditorsMenu extends MenuDescriptor {
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,9 +20,9 @@
package cc.kune.gspace.client.actions;
import cc.kune.core.client.actions.ActionRegistryByType;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,7 +22,7 @@
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,8 +23,8 @@
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.core.client.events.RenameContentEvent;
-import cc.kune.core.client.state.SocialNetworkChangedEvent;
-import cc.kune.core.client.state.SocialNetworkChangedEvent.SocialNetworkChangedHandler;
+import cc.kune.core.client.events.SocialNetworkChangedEvent;
+import cc.kune.core.client.events.SocialNetworkChangedEvent.SocialNetworkChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
Copied: trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,83 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.gspace.client.armor;
+
+import cc.kune.common.client.actions.ui.IsActionExtensible;
+
+import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.SimplePanel;
+
+public interface GSpaceArmor {
+
+ void clearBackImage();
+
+ void enableCenterScroll(boolean enable);
+
+ ForIsWidget getDocContainer();
+
+ ForIsWidget getDocFooter();
+
+ IsActionExtensible getDocFooterToolbar();
+
+ ForIsWidget getDocHeader();
+
+ ForIsWidget getDocSubheader();
+
+ ForIsWidget getEntityFooter();
+
+ IsActionExtensible getEntityFooterToolbar();
+
+ ForIsWidget getEntityHeader();
+
+ ForIsWidget getEntityToolsCenter();
+
+ ForIsWidget getEntityToolsNorth();
+
+ ForIsWidget getEntityToolsSouth();
+
+ IsActionExtensible getHeaderToolbar();
+
+ SimplePanel getHomeSpace();
+
+ IsWidget getMainpanel();
+
+ SimplePanel getPublicSpace();
+
+ ForIsWidget getSitebar();
+
+ IsActionExtensible getSubheaderToolbar();
+
+ IsActionExtensible getToolsSouthToolbar();
+
+ ForIsWidget getUserSpace();
+
+ void selectGroupSpace();
+
+ void selectHomeSpace();
+
+ void selectPublicSpace();
+
+ void selectUserSpace();
+
+ void setBackImage(String url);
+
+ void setContentVisible(boolean visible);
+}
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,278 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.gspace.client.armor.impl;
+
+import org.cobogw.gwt.user.client.CSS;
+
+import cc.kune.common.client.actions.ui.ActionFlowPanel;
+import cc.kune.common.client.actions.ui.IsActionExtensible;
+import cc.kune.gspace.client.armor.GSpaceArmor;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Overflow;
+import com.google.gwt.dom.client.Style.Position;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.DockLayoutPanel;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.SplitLayoutPanel;
+import com.google.gwt.user.client.ui.TabLayoutPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GSpaceArmorImpl extends Composite implements GSpaceArmor {
+
+ interface WsArmorImplUiBinder extends UiBinder<Widget, GSpaceArmorImpl> {
+ }
+
+ private static WsArmorImplUiBinder uiBinder = GWT.create(WsArmorImplUiBinder.class);
+
+ @UiField
+ ScrollPanel centerScroll;
+ @UiField
+ FlowPanel docContainer;
+ @UiField
+ DockLayoutPanel docContainerParent;
+ @UiField
+ FlowPanel docFooter;
+ private final ActionFlowPanel docFooterToolbar;
+ @UiField
+ FlowPanel docHeader;
+ @UiField
+ FlowPanel docSubheader;
+ @UiField
+ FlowPanel entityFooter;
+ private final ActionFlowPanel entityFooterToolbar;
+ @UiField
+ FlowPanel entityHeader;
+ @UiField
+ FlowPanel entityToolsCenter;
+ @UiField
+ FlowPanel entityToolsContainer;
+ @UiField
+ FlowPanel entityToolsNorth;
+ @UiField
+ FlowPanel entityToolsSouth;
+ @UiField
+ SplitLayoutPanel groupSpace;
+ @UiField
+ SimplePanel groupSpaceWrapper;
+ private final ActionFlowPanel headerToolbar;
+ @UiField
+ SimplePanel homeSpace;
+ @UiField
+ DockLayoutPanel mainpanel;
+ @UiField
+ SimplePanel publicSpace;
+ @UiField
+ FlowPanel sitebar;
+ @UiField
+ DockLayoutPanel splitCenter;
+ @UiField
+ DockLayoutPanel splitEast;
+ private final ActionFlowPanel subheaderToolbar;
+ @UiField
+ TabLayoutPanel tabs;
+ private final ActionFlowPanel toolsSouthToolbar;
+ @UiField
+ FlowPanel userSpace;
+
+ @Inject
+ public GSpaceArmorImpl(final Provider<ActionFlowPanel> toolbarProv) {
+ initWidget(uiBinder.createAndBindUi(this));
+ groupSpace.setWidgetMinSize(splitEast, 150);
+ DOM.setStyleAttribute((Element) groupSpace.getWidgetContainerElement(splitEast), "overflow",
+ "visible");
+ DOM.setStyleAttribute((Element) splitEast.getWidgetContainerElement(entityToolsContainer),
+ "overflow", "visible");
+ docFooterToolbar = toolbarProv.get();
+ headerToolbar = toolbarProv.get();
+ subheaderToolbar = toolbarProv.get();
+ toolsSouthToolbar = toolbarProv.get();
+ entityFooterToolbar = toolbarProv.get();
+ getDocHeader().add(headerToolbar);
+ getDocSubheader().add(subheaderToolbar);
+ getDocFooter().add(docFooterToolbar);
+ getEntityToolsSouth().add(toolsSouthToolbar);
+ getEntityFooter().add(entityFooterToolbar);
+ entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE);
+ // entityToolsSouth.setVisible(false);
+ mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces");
+ enableCenterScroll(true);
+ }
+
+ @Override
+ public void clearBackImage() {
+ final String bodyProp = "#FFFFFF";
+ DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp);
+ }
+
+ @Override
+ public void enableCenterScroll(final boolean enable) {
+ // TODO use here Element.getStyle()...
+ if (enable) {
+ centerScroll.setAlwaysShowScrollBars(false);
+ DOM.setStyleAttribute(centerScroll.getElement(), "position", "absolute");
+ DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position",
+ "relative");
+ } else {
+ centerScroll.getElement().getStyle().setOverflow(Overflow.HIDDEN);
+ DOM.setStyleAttribute(centerScroll.getElement(), "position", "");
+ DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", "");
+ }
+ }
+
+ @Override
+ public ForIsWidget getDocContainer() {
+ return docContainer;
+ }
+
+ @Override
+ public ForIsWidget getDocFooter() {
+ return docFooter;
+ }
+
+ @Override
+ public IsActionExtensible getDocFooterToolbar() {
+ return docFooterToolbar;
+ }
+
+ @Override
+ public ForIsWidget getDocHeader() {
+ return docHeader;
+ }
+
+ @Override
+ public ForIsWidget getDocSubheader() {
+ return docSubheader;
+ }
+
+ @Override
+ public ForIsWidget getEntityFooter() {
+ return entityFooter;
+ }
+
+ @Override
+ public IsActionExtensible getEntityFooterToolbar() {
+ return entityFooterToolbar;
+ }
+
+ @Override
+ public ForIsWidget getEntityHeader() {
+ return entityHeader;
+ }
+
+ @Override
+ public ForIsWidget getEntityToolsCenter() {
+ return entityToolsCenter;
+ }
+
+ @Override
+ public ForIsWidget getEntityToolsNorth() {
+ return entityToolsNorth;
+ }
+
+ @Override
+ public ForIsWidget getEntityToolsSouth() {
+ return entityToolsSouth;
+ }
+
+ @Override
+ public IsActionExtensible getHeaderToolbar() {
+ return headerToolbar;
+ }
+
+ @Override
+ public SimplePanel getHomeSpace() {
+ return homeSpace;
+ }
+
+ @Override
+ public IsWidget getMainpanel() {
+ return mainpanel;
+ }
+
+ @Override
+ public SimplePanel getPublicSpace() {
+ return publicSpace;
+ }
+
+ @Override
+ public ForIsWidget getSitebar() {
+ return sitebar;
+ }
+
+ @Override
+ public IsActionExtensible getSubheaderToolbar() {
+ return subheaderToolbar;
+ }
+
+ @Override
+ public IsActionExtensible getToolsSouthToolbar() {
+ return toolsSouthToolbar;
+ }
+
+ @Override
+ public ForIsWidget getUserSpace() {
+ return userSpace;
+ }
+
+ @Override
+ public void selectGroupSpace() {
+ tabs.selectTab(groupSpaceWrapper);
+ }
+
+ @Override
+ public void selectHomeSpace() {
+ tabs.selectTab(homeSpace);
+ }
+
+ @Override
+ public void selectPublicSpace() {
+ tabs.selectTab(publicSpace);
+ }
+
+ @Override
+ public void selectUserSpace() {
+ tabs.selectTab(userSpace);
+ }
+
+ @Override
+ public void setBackImage(final String url) {
+ final String bodyProp = "#FFFFFF url('" + url + "') fixed top left";
+ DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp);
+ }
+
+ @Override
+ public void setContentVisible(final boolean visible) {
+ // FIXME: remove this?
+ // NotifyUser.info("Visible: " + visible);
+ // docContainer.getElement().getStyle().setOpacity(visible ? 1d : .0d);
+ // docFooter.getElement().getStyle().setOpacity(visible ? 1d : .0d);
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,126 @@
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+ xmlns:co="urn:import:cc.kune.core.client" xmlns:kp="urn:import:cc.kune.pspace.client"
+ xmlns:g="urn:import:com.google.gwt.user.client.ui">
+ <ui:with field='res'
+ type='cc.kune.gspace.client.armor.resources.GSpaceArmorResources'/>
+ <ui:style>
+ .frame {
+ border: 0px;
+ margin: 0px;
+ }
+ </ui:style>
+ <g:DockLayoutPanel ui:field="mainpanel" styleName='{res.style.mainPanel}'
+ unit="PX">
+ <g:north size="23">
+ <g:FlowPanel ui:field="sitebar" height="23px"
+ styleName='{res.style.siteBar}'>
+ </g:FlowPanel>
+ </g:north>
+ <g:center>
+ <g:TabLayoutPanel width="100%" height="100%"
+ barUnit='PX' barHeight='0' ui:field="tabs">
+ <g:tab>
+ <g:header size='0'/>
+ <g:SimplePanel styleName="k-space" ui:field="homeSpace"
+ width="100%" height="100%"></g:SimplePanel>
+ </g:tab>
+ <g:tab>
+ <g:header size='0'/>
+ <g:FlowPanel ui:field="userSpace" styleName="k-space"
+ width="100%" height="100%">
+ <!-- <g:Frame url="/" styleName="{style.frame}" -->
+ <!-- ui:field="frame" width="100%" height="100%" /> -->
+ </g:FlowPanel>
+ </g:tab>
+ <g:tab>
+ <g:header size='0'/>
+ <g:SimplePanel ui:field="groupSpaceWrapper"
+ styleName="k-group-space">
+ <g:SplitLayoutPanel width="100%" height="100%"
+ styleName="k-space" ui:field="groupSpace">
+ <g:center size="1.0">
+ <g:DockLayoutPanel unit="PX" ui:field="splitCenter"
+ styleName="{res.style.entityCentralContainer}">
+ <g:north size="153">
+ <g:VerticalPanel width="100%"
+ height="153px">
+ <g:FlowPanel height="70px" width="100%"
+ styleName="{res.style.entityHeader}" ui:field="entityHeader">
+ <!--<g:RichTextArea width="100%" height="70px" /> -->
+ </g:FlowPanel>
+ <g:FlowPanel width="100%" height="38px"
+ styleName="{res.style.docHeader}" ui:field="docHeader">
+ </g:FlowPanel>
+ <g:HTMLPanel ui:field="arrow"
+ styleName="{res.style.docSubheaderArrow}"/>
+ <g:FlowPanel width="100%" height="45px"
+ styleName="{res.style.docSubheader}" ui:field="docSubheader">
+ </g:FlowPanel>
+ </g:VerticalPanel>
+ </g:north>
+ <g:center>
+ <g:DockLayoutPanel unit="PX"
+ styleName="{res.style.docEditorMargin}" ui:field="docContainerParent">
+ <g:west size="10">
+ <g:SimplePanel/>
+ </g:west>
+ <g:east size="10">
+ <g:SimplePanel/>
+ </g:east>
+ <g:center>
+ <g:ScrollPanel ui:field="centerScroll"
+ styleName="{res.style.docEditor}">
+ <g:FlowPanel width="auto" height="auto"
+ styleName="{res.style.docEditorContainer}"
+ ui:field="docContainer"/>
+ </g:ScrollPanel>
+ </g:center>
+ <g:south size="33.0">
+ <g:VerticalPanel height="33px"
+ width="100%" styleName="{res.style.docFooter}">
+ <g:FlowPanel width="100%" height="33"
+ ui:field="docFooter">
+ </g:FlowPanel>
+ </g:VerticalPanel>
+ </g:south>
+ </g:DockLayoutPanel>
+ </g:center>
+ <g:south size="36">
+ <g:FlowPanel height="36px" width="100%"
+ styleName="{res.style.entityFooter}" ui:field="entityFooter">
+ </g:FlowPanel>
+ </g:south>
+ </g:DockLayoutPanel>
+ </g:center>
+ <!-- east to RTL (plus css changes in corners and menus) -->
+ <g:west size="200.0">
+ <g:DockLayoutPanel unit="PX"
+ styleName="{res.style.entityTools}" ui:field="splitEast">
+ <g:center>
+ <g:FlowPanel ui:field="entityToolsContainer">
+ <g:FlowPanel width="100%" ui:field="entityToolsNorth"
+ styleName="{res.style.entityToolsNorth}"></g:FlowPanel>
+ <g:FlowPanel width="100%" ui:field="entityToolsCenter"
+ styleName="{res.style.entityToolsCenter}">
+ </g:FlowPanel>
+ </g:FlowPanel>
+ </g:center>
+ <g:south size="98">
+ <g:FlowPanel styleName="{res.style.entityToolsSouth}"
+ ui:field="entityToolsSouth" width="100%"/>
+ </g:south>
+ </g:DockLayoutPanel>
+ </g:west>
+ </g:SplitLayoutPanel>
+ </g:SimplePanel>
+ </g:tab>
+ <g:tab>
+ <g:header size='0'/>
+ <g:SimplePanel ui:field="publicSpace" width="100%"
+ styleName="k-space" height="100%"></g:SimplePanel>
+ </g:tab>
+ </g:TabLayoutPanel>
+ </g:center>
+ </g:DockLayoutPanel>
+</ui:UiBinder>
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/gspace/client/armor/resources (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/resources)
Modified: trunk/src/main/java/cc/kune/gspace/client/armor/resources/GSpaceArmorResources.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/armor/resources/GSpaceArmorResources.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -17,7 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-package cc.kune.gspace.client.resources;
+package cc.kune.gspace.client.armor.resources;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
Copied: trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,74 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.gspace.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class CurrentEntityChangedEvent extends GwtEvent<CurrentEntityChangedEvent.CurrentEntityChangedHandler> {
+
+ public interface CurrentEntityChangedHandler extends EventHandler {
+ public void onCurrentLogoChanged(CurrentEntityChangedEvent event);
+ }
+
+ public interface HasCurrentLogoChangedHandlers extends HasHandlers {
+ HandlerRegistration addCurrentLogoChangedHandler(CurrentEntityChangedHandler handler);
+ }
+
+ private static final Type<CurrentEntityChangedHandler> TYPE = new Type<CurrentEntityChangedHandler>();
+
+ public static void fire(final HasHandlers source) {
+ source.fireEvent(new CurrentEntityChangedEvent());
+ }
+
+ public static Type<CurrentEntityChangedHandler> getType() {
+ return TYPE;
+ }
+
+ public CurrentEntityChangedEvent() {
+ }
+
+ @Override
+ protected void dispatch(final CurrentEntityChangedHandler handler) {
+ handler.onCurrentLogoChanged(this);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public Type<CurrentEntityChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return "CurrentLogoChangedEvent[" + "]";
+ }
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,13 +25,13 @@
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.ui.dialogs.tabbed.AbstractTabbedDialogPresenter;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.gspace.client.options.GroupOptionsPresenter.GroupOptionsView;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,14 +24,14 @@
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sitebar.SiteUserOptions;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.ui.dialogs.tabbed.AbstractTabbedDialogPresenter;
import cc.kune.gspace.client.options.UserOptionsPresenter.UserOptionsView;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,8 +22,8 @@
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
+import cc.kune.gspace.client.events.CurrentEntityChangedEvent;
import cc.kune.gspace.client.options.EntityOptions;
-import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,11 +20,11 @@
package cc.kune.gspace.client.options.general;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,14 +20,14 @@
package cc.kune.gspace.client.options.general;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.i18n.I18nUITranslationService.I18nLanguageChangeNeeded;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,10 +19,10 @@
*/
package cc.kune.gspace.client.options.license;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,9 +19,9 @@
*/
package cc.kune.gspace.client.options.license;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,74 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.gspace.client.options.logo;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class CurrentEntityChangedEvent extends GwtEvent<CurrentEntityChangedEvent.CurrentEntityChangedHandler> {
-
- public interface CurrentEntityChangedHandler extends EventHandler {
- public void onCurrentLogoChanged(CurrentEntityChangedEvent event);
- }
-
- public interface HasCurrentLogoChangedHandlers extends HasHandlers {
- HandlerRegistration addCurrentLogoChangedHandler(CurrentEntityChangedHandler handler);
- }
-
- private static final Type<CurrentEntityChangedHandler> TYPE = new Type<CurrentEntityChangedHandler>();
-
- public static void fire(final HasHandlers source) {
- source.fireEvent(new CurrentEntityChangedEvent());
- }
-
- public static Type<CurrentEntityChangedHandler> getType() {
- return TYPE;
- }
-
- public CurrentEntityChangedEvent() {
- }
-
- @Override
- protected void dispatch(final CurrentEntityChangedHandler handler) {
- handler.onCurrentLogoChanged(this);
- }
-
- @Override
- public boolean equals(final Object obj) {
- return super.equals(obj);
- }
-
- @Override
- public Type<CurrentEntityChangedHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- public int hashCode() {
- return super.hashCode();
- }
-
- @Override
- public String toString() {
- return "CurrentLogoChangedEvent[" + "]";
- }
-}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -27,6 +27,7 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
+import cc.kune.gspace.client.events.CurrentEntityChangedEvent;
import cc.kune.gspace.client.options.EntityOptions;
import com.google.gwt.event.shared.EventBus;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,9 +20,9 @@
package cc.kune.gspace.client.options.logo;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.gspace.client.options.GroupOptions;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,12 +22,12 @@
import gwtupload.client.IUploader;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.events.AvatarChangedEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.gspace.client.options.UserOptions;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -26,13 +26,13 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.services.ImageSize;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,9 +23,9 @@
import java.util.List;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,11 +23,11 @@
import java.util.List;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.ToolSimpleDTO;
import cc.kune.gspace.client.options.UserOptions;
Modified: trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,9 +22,8 @@
import javax.annotation.Nonnull;
import cc.kune.core.client.services.ClientFileDownloadUtils;
-import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.inject.Inject;
@@ -34,14 +33,11 @@
private final ClientFileDownloadUtils downloadUtils;
private final GSpaceArmor gSpaceArmor;
private StateToken lastToken;
- private final StateManager stateManager;
@Inject
- public GSpaceBackManagerImpl(final ClientFileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor,
- final StateManager stateManager) {
+ public GSpaceBackManagerImpl(final ClientFileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor) {
this.downloadUtils = downloadUtils;
this.gSpaceArmor = gSpaceArmor;
- this.stateManager = stateManager;
lastToken = NO_TOKEN;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,7 +20,7 @@
package cc.kune.gspace.client.tags;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.tags.TagsSummaryPresenter.TagsSummaryView;
import com.google.gwt.event.dom.client.ClickHandler;
Modified: trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -21,9 +21,9 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.TagCloudResult;
import cc.kune.core.shared.domain.TagCount;
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,12 +23,12 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.utils.CSSUtils;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
@@ -36,7 +36,7 @@
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.InitDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
-import cc.kune.gspace.client.resources.GSpaceArmorResources;
+import cc.kune.gspace.client.armor.resources.GSpaceArmorResources;
import cc.kune.gspace.client.style.GSpaceBackManager;
import com.google.gwt.dom.client.StyleElement;
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -28,8 +28,8 @@
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.GSpaceTheme;
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -27,11 +27,11 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.HasContent;
import cc.kune.core.shared.dto.StateAbstractDTO;
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,7 +20,7 @@
package cc.kune.gspace.client.tool.selector;
import cc.kune.core.client.dnd.FolderViewerDropController;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView;
import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorView;
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,13 +25,13 @@
import cc.kune.common.client.errors.UIException;
import cc.kune.common.client.log.Log;
import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.ToolChangedEvent;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.ToolChangedEvent;
-import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView;
Modified: trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,7 +23,7 @@
import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.ui.footer.license.EntityLicensePresenter.EntityLicenseView;
import com.google.gwt.core.client.GWT;
Modified: trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,9 +19,9 @@
*/
package cc.kune.gspace.client.ui.footer.license;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.HasContent;
import cc.kune.core.shared.dto.LicenseDTO;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -28,7 +28,7 @@
import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.StateContainerDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView;
import com.google.gwt.user.client.Window;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -3,6 +3,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.ui.HasEditHandler;
import cc.kune.core.shared.dto.StateContainerDTO;
+import cc.kune.gspace.client.viewers.items.FolderItemDescriptor;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DoubleClickHandler;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,7 +25,7 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.registry.IconsRegistry;
import cc.kune.core.shared.dto.BasicMimeTypeDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.Composite;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -39,7 +39,7 @@
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.StateContentDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.viewers.ContentViewerPresenter.ContentViewerView;
import cc.kune.wave.client.KuneStagesProvider;
import cc.kune.wave.client.WaveClientClearEvent;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,12 +29,12 @@
import cc.kune.common.client.ui.EditEvent.EditHandler;
import cc.kune.common.client.ui.HasEditHandler;
import cc.kune.core.client.actions.ActionRegistryByType;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.domain.utils.AccessRights;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.HasContent;
Deleted: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,100 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.gspace.client.viewers;
-
-import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
-import cc.kune.core.shared.domain.ContentStatus;
-import cc.kune.core.shared.domain.utils.StateToken;
-
-public class FolderItemDescriptor {
- private final GuiActionDescCollection actionCollection;
- private final boolean allowDrag;
- private final boolean allowDrop;
- private final ContentStatus contentStatus;
- private final Object icon;
- private final String id;
- private final long modififiedOn;
- private final String parentId;
- private final String text;
- private final StateToken token;
- private final String tooltip;
-
- public FolderItemDescriptor(final String id, final String parentId, final Object icon,
- final String text, final String tooltip, final ContentStatus contentStatus,
- final StateToken token, final long modififiedOn, final boolean allowDrag, final boolean allowDrop,
- final GuiActionDescCollection actionCollection) {
- this.id = id;
- this.parentId = parentId;
- this.icon = icon;
- this.text = text;
- this.tooltip = tooltip;
- this.contentStatus = contentStatus;
- this.token = token;
- this.modififiedOn = modififiedOn;
- this.allowDrag = allowDrag;
- this.allowDrop = allowDrop;
- this.actionCollection = actionCollection;
- }
-
- public GuiActionDescCollection getActionCollection() {
- return actionCollection;
- }
-
- public ContentStatus getContentStatus() {
- return contentStatus;
- }
-
- public Object getIcon() {
- return icon;
- }
-
- public String getId() {
- return id;
- }
-
- public long getModififiedOn() {
- return modififiedOn;
- }
-
- public String getParentId() {
- return parentId;
- }
-
- public StateToken getStateToken() {
- return token;
- }
-
- public String getText() {
- return text;
- }
-
- public String getTooltip() {
- return tooltip;
- }
-
- public boolean isDraggable() {
- return allowDrag;
- }
-
- public boolean isDroppable() {
- return allowDrop;
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,165 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.gspace.client.viewers;
-
-import cc.kune.common.client.actions.ui.ActionSimplePanel;
-import cc.kune.core.shared.domain.utils.StateToken;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.BlurEvent;
-import com.google.gwt.event.dom.client.FocusEvent;
-import com.google.gwt.event.dom.client.HasAllFocusHandlers;
-import com.google.gwt.event.dom.client.HasAllMouseHandlers;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.dom.client.HasDoubleClickHandlers;
-import com.google.gwt.event.dom.client.MouseOutEvent;
-import com.google.gwt.event.dom.client.MouseOverEvent;
-import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.FocusPanel;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.InlineLabel;
-import com.google.gwt.user.client.ui.SimplePanel;
-import com.google.gwt.user.client.ui.Widget;
-
-public class FolderItemWidget extends Composite implements HasText {
-
- interface FolderItemWidgetUiBinder extends UiBinder<Widget, FolderItemWidget> {
- }
-
- private static FolderItemWidgetUiBinder uiBinder = GWT.create(FolderItemWidgetUiBinder.class);
-
- @UiField
- FlowPanel flow;
- @UiField
- FocusPanel focusPanel;
- @UiField
- Image icon;
- @UiField
- SimplePanel menu;
- @UiField
- InlineLabel modified;
- @UiField
- InlineLabel title;
-
- private final StateToken token;
-
- public FolderItemWidget(final ImageResource iconResource, final String title, final StateToken token) {
- this.token = token;
- initWidget(uiBinder.createAndBindUi(this));
- this.title.setText(title);
- icon.setResource(iconResource);
- }
-
- private void clearFocusStyles() {
- focusPanel.removeStyleDependentName("nofocused");
- focusPanel.removeStyleDependentName("focused");
- }
-
- FlowPanel getFlow() {
- return flow;
- }
-
- Widget getIcon() {
- return icon;
- }
-
- HasClickHandlers getRowClick() {
- return focusPanel;
- }
-
- HasDoubleClickHandlers getRowDoubleClick() {
- return focusPanel;
- }
-
- HasAllFocusHandlers getRowFocus() {
- return focusPanel;
- }
-
- HasAllMouseHandlers getRowMouse() {
- return focusPanel;
- }
-
- @Override
- public String getText() {
- return title.getText();
- }
-
- Widget getTitleWidget() {
- return title;
- }
-
- public StateToken getToken() {
- return token;
- }
-
- @UiHandler("focusPanel")
- public void onBlur(final BlurEvent event) {
- clearFocusStyles();
- focusPanel.addStyleDependentName("nofocused");
- }
-
- @UiHandler("focusPanel")
- public void onFocus(final FocusEvent event) {
- clearFocusStyles();
- focusPanel.addStyleDependentName("focused");
- }
-
- @UiHandler("focusPanel")
- public void onOut(final MouseOutEvent event) {
- clearFocusStyles();
- focusPanel.addStyleDependentName("nofocused");
- }
-
- @UiHandler("focusPanel")
- public void onOver(final MouseOverEvent event) {
- clearFocusStyles();
- focusPanel.addStyleDependentName("focused");
- }
-
- public void setMenu(final ActionSimplePanel toolbar) {
- menu.add(toolbar);
- }
-
- public void setMenuVisible(final boolean visible) {
- menu.getElement().getStyle().setOpacity(visible ? 1d : 0.2d);
- }
-
- public void setModifiedText(final String text) {
- modified.setText(text);
- }
-
- public void setSelect(final boolean selected) {
- clearFocusStyles();
- focusPanel.removeStyleDependentName(selected ? "noselected" : "selected");
- focusPanel.addStyleDependentName(selected ? "selected" : "noselected");
- }
-
- @Override
- public void setText(final String text) {
- title.setText(text);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,79 +0,0 @@
-<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
- xmlns:co="urn:ui:cc.kune.core.client" xmlns:g="urn:import:com.google.gwt.user.client.ui">
- <ui:style>
- @external .k-folderitem-focus;
- @external .k-folderitem-focus-focused;
- @external .k-folderitem-focus-selected;
- @external .k-folderitem-focus-noselected;
- @external .k-folderitem-focus-nofocused;
- .k-folderitem-focus {
- background-color: none;
- border: solid 2px transparent;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
- border-radius: 4px;
- }
-
- .k-folderitem-focus-focused {
- background-color: #F2F5FD;
- }
-
- .k-folderitem-focus-selected {
- background-color: #E3E9FF;
- }
-
- .k-folderitem-focus-noselected {
-
- }
-
- .k-folderitem-focus-nofocused {
-
- }
-
- .flow {
- cursor: pointer;
- border-bottom: 1px solid #F3F3F3;
- line-height: 1.3em;
- height: 28px;
- outline: 0;
- }
-
- .modified {
- margin-right: 5px;
- color: #A05A2C;
- font-size: 17px;
- line-height: 1.3em;
- -moz-user-select: none;
- -khtml-user-select: none;
- float: right;
- font-style: italic;
- }
-
- .title {
- margin-left: 5px;
- color: #A05A2C;
- font-size: 19px;
- line-height: 1.3em;
- -moz-user-select: none;
- -khtml-user-select: none;
- }
-
- .icon {
- margin: 5px;
- }
-
- .menu {
- float: right;
- }
- </ui:style>
- <g:FocusPanel ui:field="focusPanel" styleName="{style.k-folderitem-focus}">
- <g:FlowPanel styleName="{style.flow}" ui:field="flow">
- <g:Image styleName="{style.icon}" ui:field="icon"/>
- <g:InlineLabel styleName="{style.title}" ui:field="title"/>
- <g:SimplePanel styleName="{style.menu}" ui:field="menu"/>
- <g:InlineLabel styleName="{style.modified}"
- ui:field="modified"/>
- </g:FlowPanel>
- </g:FocusPanel>
-</ui:UiBinder>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,7 +29,8 @@
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.ui.BasicDragableThumb;
import cc.kune.core.shared.dto.StateContainerDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
+import cc.kune.gspace.client.viewers.items.FolderItemDescriptor;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -34,8 +34,10 @@
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.shared.domain.ContentStatus;
import cc.kune.core.shared.dto.StateContainerDTO;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView;
+import cc.kune.gspace.client.viewers.items.FolderItemDescriptor;
+import cc.kune.gspace.client.viewers.items.FolderItemWidget;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,6 +24,7 @@
import cc.kune.core.shared.dto.StateContainerDTO;
import cc.kune.gspace.client.actions.ActionGroups;
import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView;
+import cc.kune.gspace.client.viewers.items.FolderItemDescriptor;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,7 +24,7 @@
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.dto.HasContent;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.gspace.client.tool.ContentViewer;
import com.google.inject.Inject;
Copied: trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.gspace.client.viewers.items;
+
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
+import cc.kune.core.shared.domain.ContentStatus;
+import cc.kune.core.shared.domain.utils.StateToken;
+
+public class FolderItemDescriptor {
+ private final GuiActionDescCollection actionCollection;
+ private final boolean allowDrag;
+ private final boolean allowDrop;
+ private final ContentStatus contentStatus;
+ private final Object icon;
+ private final String id;
+ private final long modififiedOn;
+ private final String parentId;
+ private final String text;
+ private final StateToken token;
+ private final String tooltip;
+
+ public FolderItemDescriptor(final String id, final String parentId, final Object icon,
+ final String text, final String tooltip, final ContentStatus contentStatus,
+ final StateToken token, final long modififiedOn, final boolean allowDrag, final boolean allowDrop,
+ final GuiActionDescCollection actionCollection) {
+ this.id = id;
+ this.parentId = parentId;
+ this.icon = icon;
+ this.text = text;
+ this.tooltip = tooltip;
+ this.contentStatus = contentStatus;
+ this.token = token;
+ this.modififiedOn = modififiedOn;
+ this.allowDrag = allowDrag;
+ this.allowDrop = allowDrop;
+ this.actionCollection = actionCollection;
+ }
+
+ public GuiActionDescCollection getActionCollection() {
+ return actionCollection;
+ }
+
+ public ContentStatus getContentStatus() {
+ return contentStatus;
+ }
+
+ public Object getIcon() {
+ return icon;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public long getModififiedOn() {
+ return modififiedOn;
+ }
+
+ public String getParentId() {
+ return parentId;
+ }
+
+ public StateToken getStateToken() {
+ return token;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String getTooltip() {
+ return tooltip;
+ }
+
+ public boolean isDraggable() {
+ return allowDrag;
+ }
+
+ public boolean isDroppable() {
+ return allowDrop;
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,165 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.gspace.client.viewers.items;
+
+import cc.kune.common.client.actions.ui.ActionSimplePanel;
+import cc.kune.core.shared.domain.utils.StateToken;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.BlurEvent;
+import com.google.gwt.event.dom.client.FocusEvent;
+import com.google.gwt.event.dom.client.HasAllFocusHandlers;
+import com.google.gwt.event.dom.client.HasAllMouseHandlers;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.dom.client.HasDoubleClickHandlers;
+import com.google.gwt.event.dom.client.MouseOutEvent;
+import com.google.gwt.event.dom.client.MouseOverEvent;
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.uibinder.client.UiHandler;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.FocusPanel;
+import com.google.gwt.user.client.ui.HasText;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class FolderItemWidget extends Composite implements HasText {
+
+ interface FolderItemWidgetUiBinder extends UiBinder<Widget, FolderItemWidget> {
+ }
+
+ private static FolderItemWidgetUiBinder uiBinder = GWT.create(FolderItemWidgetUiBinder.class);
+
+ @UiField
+ FlowPanel flow;
+ @UiField
+ FocusPanel focusPanel;
+ @UiField
+ Image icon;
+ @UiField
+ SimplePanel menu;
+ @UiField
+ InlineLabel modified;
+ @UiField
+ InlineLabel title;
+
+ private final StateToken token;
+
+ public FolderItemWidget(final ImageResource iconResource, final String title, final StateToken token) {
+ this.token = token;
+ initWidget(uiBinder.createAndBindUi(this));
+ this.title.setText(title);
+ icon.setResource(iconResource);
+ }
+
+ private void clearFocusStyles() {
+ focusPanel.removeStyleDependentName("nofocused");
+ focusPanel.removeStyleDependentName("focused");
+ }
+
+ public FlowPanel getFlow() {
+ return flow;
+ }
+
+ public Widget getIcon() {
+ return icon;
+ }
+
+ public HasClickHandlers getRowClick() {
+ return focusPanel;
+ }
+
+ public HasDoubleClickHandlers getRowDoubleClick() {
+ return focusPanel;
+ }
+
+ public HasAllFocusHandlers getRowFocus() {
+ return focusPanel;
+ }
+
+ public HasAllMouseHandlers getRowMouse() {
+ return focusPanel;
+ }
+
+ @Override
+ public String getText() {
+ return title.getText();
+ }
+
+ public Widget getTitleWidget() {
+ return title;
+ }
+
+ public StateToken getToken() {
+ return token;
+ }
+
+ @UiHandler("focusPanel")
+ public void onBlur(final BlurEvent event) {
+ clearFocusStyles();
+ focusPanel.addStyleDependentName("nofocused");
+ }
+
+ @UiHandler("focusPanel")
+ public void onFocus(final FocusEvent event) {
+ clearFocusStyles();
+ focusPanel.addStyleDependentName("focused");
+ }
+
+ @UiHandler("focusPanel")
+ public void onOut(final MouseOutEvent event) {
+ clearFocusStyles();
+ focusPanel.addStyleDependentName("nofocused");
+ }
+
+ @UiHandler("focusPanel")
+ public void onOver(final MouseOverEvent event) {
+ clearFocusStyles();
+ focusPanel.addStyleDependentName("focused");
+ }
+
+ public void setMenu(final ActionSimplePanel toolbar) {
+ menu.add(toolbar);
+ }
+
+ public void setMenuVisible(final boolean visible) {
+ menu.getElement().getStyle().setOpacity(visible ? 1d : 0.2d);
+ }
+
+ public void setModifiedText(final String text) {
+ modified.setText(text);
+ }
+
+ public void setSelect(final boolean selected) {
+ clearFocusStyles();
+ focusPanel.removeStyleDependentName(selected ? "noselected" : "selected");
+ focusPanel.addStyleDependentName(selected ? "selected" : "noselected");
+ }
+
+ @Override
+ public void setText(final String text) {
+ title.setText(text);
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,79 @@
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+ xmlns:co="urn:ui:cc.kune.core.client" xmlns:g="urn:import:com.google.gwt.user.client.ui">
+ <ui:style>
+ @external .k-folderitem-focus;
+ @external .k-folderitem-focus-focused;
+ @external .k-folderitem-focus-selected;
+ @external .k-folderitem-focus-noselected;
+ @external .k-folderitem-focus-nofocused;
+ .k-folderitem-focus {
+ background-color: none;
+ border: solid 2px transparent;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ }
+
+ .k-folderitem-focus-focused {
+ background-color: #F2F5FD;
+ }
+
+ .k-folderitem-focus-selected {
+ background-color: #E3E9FF;
+ }
+
+ .k-folderitem-focus-noselected {
+
+ }
+
+ .k-folderitem-focus-nofocused {
+
+ }
+
+ .flow {
+ cursor: pointer;
+ border-bottom: 1px solid #F3F3F3;
+ line-height: 1.3em;
+ height: 28px;
+ outline: 0;
+ }
+
+ .modified {
+ margin-right: 5px;
+ color: #A05A2C;
+ font-size: 17px;
+ line-height: 1.3em;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ float: right;
+ font-style: italic;
+ }
+
+ .title {
+ margin-left: 5px;
+ color: #A05A2C;
+ font-size: 19px;
+ line-height: 1.3em;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ }
+
+ .icon {
+ margin: 5px;
+ }
+
+ .menu {
+ float: right;
+ }
+ </ui:style>
+ <g:FocusPanel ui:field="focusPanel" styleName="{style.k-folderitem-focus}">
+ <g:FlowPanel styleName="{style.flow}" ui:field="flow">
+ <g:Image styleName="{style.icon}" ui:field="icon"/>
+ <g:InlineLabel styleName="{style.title}" ui:field="title"/>
+ <g:SimplePanel styleName="{style.menu}" ui:field="menu"/>
+ <g:InlineLabel styleName="{style.modified}"
+ ui:field="modified"/>
+ </g:FlowPanel>
+ </g:FocusPanel>
+</ui:UiBinder>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -30,7 +30,7 @@
import cc.kune.core.shared.dto.ContentSimpleDTO;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.utils.SharedFileDownloadUtils;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.hspace.client.HSpacePresenter.HSpaceView;
import com.calclab.emite.core.client.packet.TextUtils;
Modified: trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,8 +19,8 @@
*/
package cc.kune.hspace.client;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,10 +23,10 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.events.InboxUnreadUpdatedEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
import cc.kune.core.shared.dto.ContentSimpleDTO;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.HomeStatsDTO;
Modified: trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -44,8 +44,8 @@
import cc.kune.domain.Content;
import cc.kune.domain.Group;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.KuneWaveUtils;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,16 +22,16 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
import cc.kune.common.shared.utils.UrlParam;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.services.ClientFileDownloadUtils;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent;
-import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent.CurrentEntityChangedHandler;
+import cc.kune.gspace.client.events.CurrentEntityChangedEvent;
+import cc.kune.gspace.client.events.CurrentEntityChangedEvent.CurrentEntityChangedHandler;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -24,7 +24,7 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.pspace.client.PSpacePresenter.PSpaceView;
import com.google.gwt.core.client.GWT;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,8 +19,8 @@
*/
package cc.kune.pspace.client;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -22,10 +22,10 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.StateTokenUtils;
import cc.kune.core.shared.domain.ContentStatus;
Deleted: trunk/src/main/java/cc/kune/wave/client/KuneConversation.css
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneConversation.css 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/KuneConversation.css 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,31 +0,0 @@
-/*
- * CSS for conversations.
- *
- * Author: reuben(a)google.com (Reuben Kan)
- */
-.fixedSelf {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- z-index: 0;
-}
-
-.fixedThread {
- /*
- * Allow scrolling. Also, keep the scrollbar there permanently, so that content does not get
- * horizontally resized by the addition and removal of a scrollbar.
- */
- overflow-y: scroll;
- /* position: absolute; */ /* position: relative; */
- /* top: 24px; */
- top: 0;
- /* left: 0; */ /* right: 0; */ /* bottom: 0; */
- /* Layout under siblings (participant panel etc). */
- z-index: -1;
-}
-
-@sprite .toolbar {
- gwt-image: 'emptyToolbar';
-}
Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -49,12 +49,14 @@
import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer;
import org.waveprotocol.wave.client.widget.popup.PopupChromeFactory;
import org.waveprotocol.wave.client.widget.popup.PopupFactory;
+import org.waveprotocol.wave.model.conversation.Conversation;
+import org.waveprotocol.wave.model.conversation.ConversationBlip;
import org.waveprotocol.wave.model.conversation.ConversationView;
import org.waveprotocol.wave.model.id.IdGenerator;
+import org.waveprotocol.wave.model.id.ModernIdSerialiser;
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
-import cc.kune.common.client.log.Log;
import cc.kune.common.shared.i18n.I18nTranslationService;
import com.google.gwt.dom.client.Element;
@@ -68,30 +70,29 @@
private final static AsyncHolder<Object> HALT = new AsyncHolder<Object>() {
@Override
- public void call(final Accessor<Object> accessor) {
+ public void call(Accessor<Object> accessor) {
// Never ready, so never notify the accessor.
}
};
+ private final Element wavePanelElement;
+ private final LogicalPanel rootPanel;
+ private final WaveRef waveRef;
private final RemoteViewServiceMultiplexer channel;
- private boolean closed;
private final I18nTranslationService i18n;
private final IdGenerator idGenerator;
+ private final ProfileManager profiles;
+ private final WaveStore waveStore;
private final boolean isNewWave;
private final String localDomain;
- private StageOne one;
- private final ProfileManager profiles;
- private final LogicalPanel rootPanel;
private final boolean showParticipantsPanel;
+ private boolean closed;
+ private StageOne one;
+ private StageTwo two;
private StageThree three;
- private StageTwo two;
private WaveContext wave;
- private final Element wavePanelElement;
- private final WaveRef waveRef;
- private final WaveStore waveStore;
-
/**
* @param wavePanelElement The dom element to become the wave panel
* @param rootPanel A panel that this an ancestor of wavePanelElement. This is
@@ -102,9 +103,9 @@
* @param isNewWave true if the wave is a new client-created wave
* @param idGenerator
*/
- public KuneStagesProvider(final Element wavePanelElement, final LogicalPanel rootPanel, final WaveRef waveRef,
- final RemoteViewServiceMultiplexer channel, final IdGenerator idGenerator, final ProfileManager profiles,
- final WaveStore store, final boolean isNewWave, final String localDomain, final boolean showParticipantsPanel, final I18nTranslationService i18n) {
+ public KuneStagesProvider(Element wavePanelElement, LogicalPanel rootPanel, WaveRef waveRef,
+ RemoteViewServiceMultiplexer channel, IdGenerator idGenerator, ProfileManager profiles,
+ WaveStore store, boolean isNewWave, String localDomain, boolean showParticipantsPanel, I18nTranslationService i18n) {
this.wavePanelElement = wavePanelElement;
this.rootPanel = rootPanel;
this.waveRef = waveRef;
@@ -119,17 +120,43 @@
}
@Override
- protected AsyncHolder<StageOne> createStageOneLoader(final StageZero zero) {
+ protected AsyncHolder<StageZero> createStageZeroLoader() {
+ return haltIfClosed(super.createStageZeroLoader());
+ }
+
+ @Override
+ protected AsyncHolder<StageOne> createStageOneLoader(StageZero zero) {
return haltIfClosed(new StageOne.DefaultProvider(zero) {
@Override
+ protected Element createWaveHolder() {
+ return wavePanelElement;
+ }
+
+ @Override
protected LogicalPanel createWaveContainer() {
return rootPanel;
}
+ });
+ }
+ @Override
+ protected AsyncHolder<StageTwo> createStageTwoLoader(StageOne one) {
+ return haltIfClosed(new StageTwoProvider(
+ this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) {
+ // Kune patch
@Override
- protected Element createWaveHolder() {
- return wavePanelElement;
+ protected DomRenderer createRenderer() {
+ return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(),
+ getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(),
+ createViewFactories(), showParticipantsPanel);
}
+
+ // Warning: this run into issue #73
+ // @Override
+ // protected void installFeatures() {
+ // WavePanelResourceLoader.loadCss();
+ // // KuneWavePanelResourceLoader.loadCss();
+ // }
});
}
@@ -141,7 +168,7 @@
// Prepend an init wave flow onto the stage continuation.
super.create(new Accessor<StageThree>() {
@Override
- public void use(final StageThree x) {
+ public void use(StageThree x) {
onStageThreeLoaded(x, whenReady);
}
});
@@ -178,31 +205,64 @@
});
}
- @Override
- protected AsyncHolder<StageTwo> createStageTwoLoader(final StageOne one) {
- return haltIfClosed(new StageTwoProvider(
- this.one = one, waveRef, channel, isNewWave, idGenerator, profiles) {
- // Kune patch
- @Override
- protected DomRenderer createRenderer() {
- return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(),
- getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(),
- createViewFactories(), showParticipantsPanel);
- }
+ private void onStageThreeLoaded(StageThree x, Accessor<StageThree> whenReady) {
+ if (closed) {
+ // Stop the loading process.
+ return;
+ }
+ three = x;
+ if (isNewWave) {
+ initNewWave(x);
+ } else {
+ handleExistingWave(x);
+ }
+ wave = new WaveContext(
+ two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor());
+ waveStore.add(wave);
+ whenReady.use(x);
+ }
- // Warning: this run into issue #73
- // @Override
- // protected void installFeatures() {
- // WavePanelResourceLoader.loadCss();
- // // KuneWavePanelResourceLoader.loadCss();
- // }
- });
+ private void initNewWave(StageThree three) {
+ // Do the new-wave flow.
+ ModelAsViewProvider views = two.getModelAsViewProvider();
+ BlipQueueRenderer blipQueue = two.getBlipQueue();
+ ConversationView wave = two.getConversations();
+
+ // Force rendering to finish.
+ blipQueue.flush();
+ BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip());
+ three.getEditActions().startEditing(blipUi);
}
- @Override
- protected AsyncHolder<StageZero> createStageZeroLoader() {
- return haltIfClosed(super.createStageZeroLoader());
+ private void handleExistingWave(StageThree three) {
+ // If there's blip reference then focus on that blip.
+ String documentId = waveRef.getDocumentId();
+ if (documentId != null) {
+ ModelAsViewProvider views = two.getModelAsViewProvider();
+ BlipQueueRenderer blipQueue = two.getBlipQueue();
+ ConversationView wave = two.getConversations();
+ blipQueue.flush();
+ // Find conversation
+ Conversation conversation;
+ if (waveRef.hasWaveletId()) {
+ String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId());
+ conversation = wave.getConversation(id);
+ } else {
+ // Unspecified wavelet means root.
+ conversation = wave.getRoot();
+ }
+ if (conversation != null) {
+ // Find selected blip.
+ ConversationBlip blip = wave.getRoot().getBlip(documentId);
+ if (blip != null) {
+ BlipView blipUi = views.getBlipView(blip);
+ if (blipUi != null) {
+ two.getStageOne().getFocusFrame().focus(blipUi);
}
+ }
+ }
+ }
+ }
public void destroy() {
if (wave != null) {
@@ -210,27 +270,15 @@
wave = null;
}
if (three != null) {
- try {
three.getEditActions().stopEditing();
- } catch (final Exception e) {
- Log.info("Some exception stoping editing", e);
- }
three = null;
}
if (two != null) {
- try {
two.getConnector().close();
- } catch (final Exception e) {
- Log.info("Some exception closing connector", e);
- }
two = null;
}
if (one != null) {
- try {
one.getWavePanel().destroy();
- } catch (final Exception e) {
- Log.info("Some exception destroying panel", e);
- }
one = null;
}
closed = true;
@@ -241,41 +289,7 @@
* given provider.
*/
@SuppressWarnings("unchecked") // HALT is safe as a holder for any type
- private <T> AsyncHolder<T> haltIfClosed(final AsyncHolder<T> provider) {
+ private <T> AsyncHolder<T> haltIfClosed(AsyncHolder<T> provider) {
return closed ? (AsyncHolder<T>) HALT : provider;
}
-
- private void handleExistingWave(final StageThree three) {
- final BlipQueueRenderer blipQueue = two.getBlipQueue();
- blipQueue.flush();
- }
-
- private void initNewWave(final StageThree three) {
- // Do the new-wave flow.
- final ModelAsViewProvider views = two.getModelAsViewProvider();
- final BlipQueueRenderer blipQueue = two.getBlipQueue();
- final ConversationView wave = two.getConversations();
-
- // Force rendering to finish.
- blipQueue.flush();
- final BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip());
- three.getEditActions().startEditing(blipUi);
- }
-
- private void onStageThreeLoaded(final StageThree x, final Accessor<StageThree> whenReady) {
- if (closed) {
- // Stop the loading process.
- return;
- }
- three = x;
- if (isNewWave) {
- initNewWave(x);
- } else {
- handleExistingWave(x);
- }
- wave = new WaveContext(
- two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor());
- waveStore.add(wave);
- whenReady.use(x);
- }
}
Added: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,295 @@
+// @formatter:off
+/**
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed 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 cc.kune.wave.client;
+
+import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer;
+import org.waveprotocol.box.webclient.client.StageTwoProvider;
+import org.waveprotocol.box.webclient.search.WaveContext;
+import org.waveprotocol.box.webclient.search.WaveStore;
+import org.waveprotocol.wave.client.StageOne;
+import org.waveprotocol.wave.client.StageThree;
+import org.waveprotocol.wave.client.StageTwo;
+import org.waveprotocol.wave.client.StageZero;
+import org.waveprotocol.wave.client.Stages;
+import org.waveprotocol.wave.client.account.ProfileManager;
+import org.waveprotocol.wave.client.common.util.AsyncHolder;
+import org.waveprotocol.wave.client.common.util.AsyncHolder.Accessor;
+import org.waveprotocol.wave.client.common.util.LogicalPanel;
+import org.waveprotocol.wave.client.editor.EditorStaticDeps;
+import org.waveprotocol.wave.client.wavepanel.impl.WavePanelImpl;
+import org.waveprotocol.wave.client.wavepanel.impl.edit.Actions;
+import org.waveprotocol.wave.client.wavepanel.impl.edit.EditController;
+import org.waveprotocol.wave.client.wavepanel.impl.edit.EditSession;
+import org.waveprotocol.wave.client.wavepanel.impl.edit.KeepFocusInView;
+import org.waveprotocol.wave.client.wavepanel.impl.focus.FocusFramePresenter;
+import org.waveprotocol.wave.client.wavepanel.impl.indicator.ReplyIndicatorController;
+import org.waveprotocol.wave.client.wavepanel.impl.menu.MenuController;
+import org.waveprotocol.wave.client.wavepanel.impl.title.WaveTitleHandler;
+import org.waveprotocol.wave.client.wavepanel.impl.toolbar.ToolbarSwitcher;
+import org.waveprotocol.wave.client.wavepanel.view.BlipView;
+import org.waveprotocol.wave.client.wavepanel.view.dom.ModelAsViewProvider;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipQueueRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer;
+import org.waveprotocol.wave.client.widget.popup.PopupChromeFactory;
+import org.waveprotocol.wave.client.widget.popup.PopupFactory;
+import org.waveprotocol.wave.model.conversation.Conversation;
+import org.waveprotocol.wave.model.conversation.ConversationBlip;
+import org.waveprotocol.wave.model.conversation.ConversationView;
+import org.waveprotocol.wave.model.id.IdGenerator;
+import org.waveprotocol.wave.model.id.ModernIdSerialiser;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.common.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.dom.client.Element;
+
+/**
+ * Stages for loading the undercurrent Wave Panel
+ *
+ * @author zdwang(a)google.com (David Wang)
+ */
+public class KuneStagesProvider extends Stages {
+
+ private final static AsyncHolder<Object> HALT = new AsyncHolder<Object>() {
+ @Override
+ public void call(Accessor<Object> accessor) {
+ // Never ready, so never notify the accessor.
+ }
+ };
+
+ private final Element wavePanelElement;
+ private final LogicalPanel rootPanel;
+ private final WaveRef waveRef;
+ private final RemoteViewServiceMultiplexer channel;
+ private final I18nTranslationService i18n;
+ private final IdGenerator idGenerator;
+ private final ProfileManager profiles;
+ private final WaveStore waveStore;
+ private final boolean isNewWave;
+ private final String localDomain;
+
+ private final boolean showParticipantsPanel;
+ private boolean closed;
+ private StageOne one;
+ private StageTwo two;
+ private StageThree three;
+ private WaveContext wave;
+
+ /**
+ * @param wavePanelElement The dom element to become the wave panel
+ * @param rootPanel A panel that this an ancestor of wavePanelElement. This is
+ * used for adopting to the GWT widget tree.
+ * @param waveRef the id of the wave to open. If null, it means, create a new
+ * wave.
+ * @param channel communication channel.
+ * @param isNewWave true if the wave is a new client-created wave
+ * @param idGenerator
+ */
+ public KuneStagesProvider(Element wavePanelElement, LogicalPanel rootPanel, WaveRef waveRef,
+ RemoteViewServiceMultiplexer channel, IdGenerator idGenerator, ProfileManager profiles,
+ WaveStore store, boolean isNewWave, String localDomain, boolean showParticipantsPanel, I18nTranslationService i18n) {
+ this.wavePanelElement = wavePanelElement;
+ this.rootPanel = rootPanel;
+ this.waveRef = waveRef;
+ this.channel = channel;
+ this.idGenerator = idGenerator;
+ this.profiles = profiles;
+ this.waveStore = store;
+ this.isNewWave = isNewWave;
+ this.localDomain = localDomain;
+ this.showParticipantsPanel = showParticipantsPanel;
+ this.i18n = i18n;
+ }
+
+ @Override
+ protected AsyncHolder<StageZero> createStageZeroLoader() {
+ return haltIfClosed(super.createStageZeroLoader());
+ }
+
+ @Override
+ protected AsyncHolder<StageOne> createStageOneLoader(StageZero zero) {
+ return haltIfClosed(new StageOne.DefaultProvider(zero) {
+ @Override
+ protected Element createWaveHolder() {
+ return wavePanelElement;
+ }
+
+ @Override
+ protected LogicalPanel createWaveContainer() {
+ return rootPanel;
+ }
+ });
+ }
+
+ @Override
+ protected AsyncHolder<StageTwo> createStageTwoLoader(StageOne one) {
+ return haltIfClosed(new StageTwoProvider(
+ this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) {
+ // Kune patch
+ @Override
+ protected DomRenderer createRenderer() {
+ return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(),
+ getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(),
+ createViewFactories(), showParticipantsPanel);
+ }
+
+ // Warning: this run into issue #73
+ // @Override
+ // protected void installFeatures() {
+ // WavePanelResourceLoader.loadCss();
+ // // KuneWavePanelResourceLoader.loadCss();
+ // }
+ });
+ }
+
+ @Override
+ protected AsyncHolder<StageThree> createStageThreeLoader(final StageTwo two) {
+ return haltIfClosed(new StageThree.DefaultProvider(this.two = two) {
+ @Override
+ protected void create(final Accessor<StageThree> whenReady) {
+ // Prepend an init wave flow onto the stage continuation.
+ super.create(new Accessor<StageThree>() {
+ @Override
+ public void use(StageThree x) {
+ onStageThreeLoaded(x, whenReady);
+ }
+ });
+ }
+
+ @Override
+ protected String getLocalDomain() {
+ return localDomain;
+ }
+ @Override
+ protected void install() {
+ EditorStaticDeps.setPopupProvider(PopupFactory.getProvider());
+ EditorStaticDeps.setPopupChromeProvider(PopupChromeFactory.getProvider());
+
+ // Eagerly install some features.
+ final WavePanelImpl panel = stageTwo.getStageOne().getWavePanel();
+ final FocusFramePresenter focus = stageTwo.getStageOne().getFocusFrame();
+ final ParticipantId user = stageTwo.getSignedInUser();
+ final ModelAsViewProvider models = stageTwo.getModelAsViewProvider();
+ final ProfileManager profiles = stageTwo.getProfileManager();
+
+ final Actions actions = getEditActions();
+ final EditSession edit = getEditSession();
+ MenuController.install(actions, panel);
+ ToolbarSwitcher.install(stageTwo.getStageOne().getWavePanel(), getEditSession(),
+ getViewToolbar(), getEditToolbar());
+ WaveTitleHandler.install(edit, models);
+ ReplyIndicatorController.install(actions, edit, panel);
+ EditController.install(focus, actions, panel);
+ KuneParticipantController.install(panel, models, profiles, getLocalDomain(), i18n);
+ KeepFocusInView.install(edit, panel);
+ stageTwo.getDiffController().upgrade(edit);
+ }
+ });
+ }
+
+ private void onStageThreeLoaded(StageThree x, Accessor<StageThree> whenReady) {
+ if (closed) {
+ // Stop the loading process.
+ return;
+ }
+ three = x;
+ if (isNewWave) {
+ initNewWave(x);
+ } else {
+ handleExistingWave(x);
+ }
+ wave = new WaveContext(
+ two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor());
+ waveStore.add(wave);
+ whenReady.use(x);
+ }
+
+ private void initNewWave(StageThree three) {
+ // Do the new-wave flow.
+ ModelAsViewProvider views = two.getModelAsViewProvider();
+ BlipQueueRenderer blipQueue = two.getBlipQueue();
+ ConversationView wave = two.getConversations();
+
+ // Force rendering to finish.
+ blipQueue.flush();
+ BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip());
+ three.getEditActions().startEditing(blipUi);
+ }
+
+ private void handleExistingWave(StageThree three) {
+ // If there's blip reference then focus on that blip.
+ String documentId = waveRef.getDocumentId();
+ if (documentId != null) {
+ ModelAsViewProvider views = two.getModelAsViewProvider();
+ BlipQueueRenderer blipQueue = two.getBlipQueue();
+ ConversationView wave = two.getConversations();
+ blipQueue.flush();
+ // Find conversation
+ Conversation conversation;
+ if (waveRef.hasWaveletId()) {
+ String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId());
+ conversation = wave.getConversation(id);
+ } else {
+ // Unspecified wavelet means root.
+ conversation = wave.getRoot();
+ }
+ if (conversation != null) {
+ // Find selected blip.
+ ConversationBlip blip = wave.getRoot().getBlip(documentId);
+ if (blip != null) {
+ BlipView blipUi = views.getBlipView(blip);
+ if (blipUi != null) {
+ two.getStageOne().getFocusFrame().focus(blipUi);
+ }
+ }
+ }
+ }
+ }
+
+ public void destroy() {
+ if (wave != null) {
+ waveStore.remove(wave);
+ wave = null;
+ }
+ if (three != null) {
+ three.getEditActions().stopEditing();
+ three = null;
+ }
+ if (two != null) {
+ two.getConnector().close();
+ two = null;
+ }
+ if (one != null) {
+ one.getWavePanel().destroy();
+ one = null;
+ }
+ closed = true;
+ }
+
+ /**
+ * @return a halting provider if this stage is closed. Otherwise, returns the
+ * given provider.
+ */
+ @SuppressWarnings("unchecked") // HALT is safe as a holder for any type
+ private <T> AsyncHolder<T> haltIfClosed(AsyncHolder<T> provider) {
+ return closed ? (AsyncHolder<T>) HALT : provider;
+ }
+}
Deleted: trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.client;
-
-import org.waveprotocol.wave.client.wavepanel.view.dom.full.TopConversationViewBuilder;
-
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.resources.client.ImageResource.ImageOptions;
-import com.google.gwt.resources.client.ImageResource.RepeatStyle;
-
-public class KuneWaveResources {
- // Not used now
- public interface Conversation extends ClientBundle {
- // Note: the CSS file contains a gwt-image reference, so must be defined
- // after the referenced images in this interface.
- @Source("KuneConversation.css")
- TopConversationViewBuilder.Css css();
-
- @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
- @Source("toolbar_empty.png")
- ImageResource emptyToolbar();
- }
-}
Deleted: trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,77 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.client;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-
-import com.google.gwt.event.shared.HasHandlers;
-
-public class WaveClientClearEvent extends GwtEvent<WaveClientClearEvent.WaveClientClearHandler> {
-
- public interface HasWaveClientClearHandlers extends HasHandlers {
- HandlerRegistration addWaveClientClearHandler(WaveClientClearHandler handler);
- }
-
- public interface WaveClientClearHandler extends EventHandler {
- public void onWaveClientClear(WaveClientClearEvent event);
- }
-
- private static final Type<WaveClientClearHandler> TYPE = new Type<WaveClientClearHandler>();
-
- public static void fire(HasHandlers source) {
- source.fireEvent(new WaveClientClearEvent());
- }
-
- public static Type<WaveClientClearHandler> getType() {
- return TYPE;
- }
-
-
- public WaveClientClearEvent() {
- }
-
- @Override
- public Type<WaveClientClearHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- protected void dispatch(WaveClientClearHandler handler) {
- handler.onWaveClientClear(this);
- }
-
- @Override
- public boolean equals(Object obj) {
- return super.equals(obj);
- }
-
- @Override
- public int hashCode() {
- return super.hashCode();
- }
-
- @Override
- public String toString() {
- return "WaveClientClearEvent["
- + "]";
- }
-}
Added: trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.client;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class WaveClientClearEvent extends GwtEvent<WaveClientClearEvent.WaveClientClearHandler> {
+
+ public interface HasWaveClientClearHandlers extends HasHandlers {
+ HandlerRegistration addWaveClientClearHandler(WaveClientClearHandler handler);
+ }
+
+ public interface WaveClientClearHandler extends EventHandler {
+ public void onWaveClientClear(WaveClientClearEvent event);
+ }
+
+ private static final Type<WaveClientClearHandler> TYPE = new Type<WaveClientClearHandler>();
+
+ public static void fire(HasHandlers source) {
+ source.fireEvent(new WaveClientClearEvent());
+ }
+
+ public static Type<WaveClientClearHandler> getType() {
+ return TYPE;
+ }
+
+
+ public WaveClientClearEvent() {
+ }
+
+ @Override
+ public Type<WaveClientClearHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ protected void dispatch(WaveClientClearHandler handler) {
+ handler.onWaveClientClear(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return "WaveClientClearEvent["
+ + "]";
+ }
+}
Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -20,17 +20,17 @@
package cc.kune.wave.client;
import cc.kune.common.client.log.Log;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.TokenMatcher;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.dto.WaveClientParams;
-import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.armor.GSpaceArmor;
import cc.kune.wave.client.inboxcount.InboxCountPresenter;
import com.google.gwt.core.client.JavaScriptObject;
Modified: trunk/src/main/java/cc/kune/wave/client/WaveParts.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveParts.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/WaveParts.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -19,8 +19,8 @@
*/
package cc.kune.wave.client;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import cc.kune.wave.client.inboxcount.InboxCountPresenter;
Deleted: trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,92 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.client;
-
-import org.waveprotocol.box.webclient.client.ClientEvents;
-import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent;
-import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler;
-
-import cc.kune.common.client.actions.AbstractAction;
-import cc.kune.common.client.actions.Action;
-import cc.kune.common.client.actions.ActionEvent;
-import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import cc.kune.core.client.sitebar.SitebarActionsPresenter;
-import cc.kune.core.client.sn.actions.SessionAction;
-import cc.kune.core.client.state.Session;
-
-import com.google.inject.Inject;
-
-public class WaveStatusIndicator {
-
- public static class WaveStatusAction extends SessionAction {
-
- @Inject
- public WaveStatusAction(final Session session, final I18nTranslationService i18n) {
- super(session, true);
- setVisible(false);
- ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() {
- private void goOnline() {
- putValue(Action.NAME, ""); // i18n.t("Online"));
- putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-online");
- setVisible(false);
- NotifyUser.hideProgress();
- }
-
- @Override
- public void onNetworkStatus(final NetworkStatusEvent event) {
- switch (event.getStatus()) {
- case CONNECTED:
- case RECONNECTED:
- session.check(new AsyncCallbackSimple<Void>() {
- @Override
- public void onSuccess(final Void result) {
- goOnline();
- }
- });
- break;
- case DISCONNECTED:
- NotifyUser.showProgress(i18n.t("Connecting"));
- case RECONNECTING:
- putValue(Action.NAME, i18n.t("Offline"));
- putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-offline");
- setVisible(true);
- break;
- }
- }
- });
- }
-
- @Override
- public void actionPerformed(final ActionEvent event) {
- // Do nothing
- }
-
- }
-
- @Inject
- public WaveStatusIndicator(final SitebarActionsPresenter sitebar, final WaveStatusAction action) {
- final IconLabelDescriptor status = new IconLabelDescriptor(action);
- status.setPosition(1);
- sitebar.getRightToolbar().add(status);
- }
-}
Added: trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,92 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.client;
+
+import org.waveprotocol.box.webclient.client.ClientEvents;
+import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent;
+import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler;
+
+import cc.kune.common.client.actions.AbstractAction;
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.sitebar.SitebarActionsPresenter;
+import cc.kune.core.client.sn.actions.SessionAction;
+import cc.kune.core.client.state.Session;
+
+import com.google.inject.Inject;
+
+public class WaveStatusIndicator {
+
+ public static class WaveStatusAction extends SessionAction {
+
+ @Inject
+ public WaveStatusAction(final Session session, final I18nTranslationService i18n) {
+ super(session, true);
+ setVisible(false);
+ ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() {
+ private void goOnline() {
+ putValue(Action.NAME, ""); // i18n.t("Online"));
+ putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-online");
+ setVisible(false);
+ NotifyUser.hideProgress();
+ }
+
+ @Override
+ public void onNetworkStatus(final NetworkStatusEvent event) {
+ switch (event.getStatus()) {
+ case CONNECTED:
+ case RECONNECTED:
+ session.check(new AsyncCallbackSimple<Void>() {
+ @Override
+ public void onSuccess(final Void result) {
+ goOnline();
+ }
+ });
+ break;
+ case DISCONNECTED:
+ NotifyUser.showProgress(i18n.t("Connecting"));
+ case RECONNECTING:
+ putValue(Action.NAME, i18n.t("Offline"));
+ putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-offline");
+ setVisible(true);
+ break;
+ }
+ }
+ });
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ // Do nothing
+ }
+
+ }
+
+ @Inject
+ public WaveStatusIndicator(final SitebarActionsPresenter sitebar, final WaveStatusAction action) {
+ final IconLabelDescriptor status = new IconLabelDescriptor(action);
+ status.setPosition(1);
+ sitebar.getRightToolbar().add(status);
+ }
+}
Modified: trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,9 +29,9 @@
import cc.kune.core.client.events.InboxUnreadUpdatedEvent;
import cc.kune.core.client.events.NewUserRegisteredEvent;
import cc.kune.core.client.events.SndClickEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent;
+import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent;
-import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Timer;
Copied: trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css (from rev 1655, trunk/src/main/java/cc/kune/wave/client/KuneConversation.css)
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,31 @@
+/*
+ * CSS for conversations.
+ *
+ * Author: reuben(a)google.com (Reuben Kan)
+ */
+.fixedSelf {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 0;
+}
+
+.fixedThread {
+ /*
+ * Allow scrolling. Also, keep the scrollbar there permanently, so that content does not get
+ * horizontally resized by the addition and removal of a scrollbar.
+ */
+ overflow-y: scroll;
+ /* position: absolute; */ /* position: relative; */
+ /* top: 24px; */
+ top: 0;
+ /* left: 0; */ /* right: 0; */ /* bottom: 0; */
+ /* Layout under siblings (participant panel etc). */
+ z-index: -1;
+}
+
+@sprite .toolbar {
+ gwt-image: 'emptyToolbar';
+}
Copied: trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java (from rev 1655, trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,41 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.client.resources;
+
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.TopConversationViewBuilder;
+
+import com.google.gwt.resources.client.ClientBundle;
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.resources.client.ImageResource.ImageOptions;
+import com.google.gwt.resources.client.ImageResource.RepeatStyle;
+
+public class KuneWaveResources {
+ // Not used now
+ public interface Conversation extends ClientBundle {
+ // Note: the CSS file contains a gwt-image reference, so must be defined
+ // after the referenced images in this interface.
+ @Source("KuneConversation.css")
+ TopConversationViewBuilder.Css css();
+
+ @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
+ @Source("toolbar_empty.png")
+ ImageResource emptyToolbar();
+ }
+}
Copied: trunk/src/main/java/cc/kune/wave/client/resources/toolbar_empty.png (from rev 1655, trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png)
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png
===================================================================
(Binary files differ)
Modified: trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -44,7 +44,7 @@
/**
* The user registration servlet allows new users to register accounts.
- *
+ *
* @author josephg(a)gmail.com (Joseph Gentle)
*/
@SuppressWarnings("serial")
@@ -53,17 +53,18 @@
private final AccountStore accountStore;
private final String domain;
- // private final WelcomeRobot welcomeBot;
+ private final boolean registrationDisabled;
private final Log LOG = Log.get(CustomUserRegistrationServlet.class);
@Inject
public CustomUserRegistrationServlet(AccountStore accountStore,
- @Named(CoreSettings.WAVE_SERVER_DOMAIN) String domain) {
- //, WelcomeRobot welcomeBot) {
+ @Named(CoreSettings.WAVE_SERVER_DOMAIN) String domain,
+ @Named(CoreSettings.DISABLE_REGISTRATION) boolean registrationDisabled) {
this.accountStore = accountStore;
this.domain = domain;
// this.welcomeBot = welcomeBot;
+ this.registrationDisabled = registrationDisabled;
}
@Override
@@ -71,26 +72,29 @@
writeRegistrationPage("", AuthenticationServlet.RESPONSE_STATUS_NONE, req.getLocale(), resp);
}
- @SuppressWarnings("unchecked")
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("UTF-8");
+ String message = null;
+ String responseType;
String password = req.getParameter(HttpRequestBasedCallbackHandler.PASSWORD_FIELD);
if (password == null) {
// Register the user with an empty password.
password = "";
}
+ if (!registrationDisabled) {
final PasswordDigest passwordDigest = new PasswordDigest(password.toCharArray());
- String message =
+ message =
tryCreateUser(req.getParameter(HttpRequestBasedCallbackHandler.ADDRESS_FIELD), passwordDigest);
- String responseType = AuthenticationServlet.RESPONSE_STATUS_SUCCESS;
+ }
- if (message != null) {
+ if (message != null || registrationDisabled) {
resp.setStatus(HttpServletResponse.SC_FORBIDDEN);
responseType = AuthenticationServlet.RESPONSE_STATUS_FAILED;
} else {
message = "Registration complete.";
resp.setStatus(HttpServletResponse.SC_OK);
+ responseType = AuthenticationServlet.RESPONSE_STATUS_SUCCESS;
}
writeRegistrationPage(message, responseType, req.getLocale(), resp);
@@ -101,7 +105,6 @@
* returns a string containing an error message. On success, returns null.
*/
public String tryCreateUser(String username, final PasswordDigest passwordDigest) { // NOPMD by vjrj on 27/04/11 8:36
- final String message = null;
ParticipantId id = null;
try {
@@ -159,6 +162,6 @@
dest.setCharacterEncoding("UTF-8");
dest.setContentType("text/html;charset=utf-8");
UserRegistrationPage.write(dest.getWriter(), new GxpContext(locale), domain, message,
- responseType);
+ responseType, registrationDisabled);
}
}
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneAgent.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,193 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.server;
-
-import java.net.URL;
-import java.util.HashSet;
-import java.util.logging.Logger;
-
-import javax.annotation.Nonnull;
-
-import org.waveprotocol.box.server.robots.agent.AbstractBaseRobotAgent;
-import org.waveprotocol.wave.model.id.WaveId;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.Singleton;
-import com.google.wave.api.Wavelet;
-
-@SuppressWarnings("serial")
-@Singleton
-public class KuneAgent extends AbstractBaseRobotAgent implements KuneWaveService {
-
- private static final Logger LOG = Logger.getLogger(KuneAgent.class.getName());
-
- private static final String NO_TITLE = "";
- public static final String ROBOT_URI = AGENT_PREFIX_URI + "/kune-agent";
-
- @Inject
- public KuneAgent(final Injector injector) {
- super(injector);
- }
-
- // public KuneAgent(final String waveDomain, final AccountStore accountStore,
- // final TokenGenerator tokenGenerator, final ServerFrontendAddressHolder
- // frontendAddressHolder) {
- // super(waveDomain, accountStore, tokenGenerator, frontendAddressHolder);
- // }
-
- @Override
- public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdd,
- final String... newParticipants) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public WaveRef createWave(final String message, final ParticipantId... participants) {
- return createWave(NO_TITLE, message, participants);
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message,
- @Nonnull final ParticipantId... participantsArray) {
- return createWave(title, message, WITHOUT_GADGET, participantsArray);
- }
-
- @Override
- public WaveRef createWave(final String title, final String message, final String... participantsArray) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public WaveRef createWave(final String title, final String message, final String waveIdToCopy,
- final URL gadgetUrl, final ParticipantId... participantsArray) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public WaveRef createWave(final String title, final String message, final URL gadgetUrl,
- final ParticipantId... participantsArray) {
- // super.newWave(getWaveDomain(), participantsArray);
- final HashSet<String> parts = new HashSet<String>();
- for (final ParticipantId part : participantsArray) {
- parts.add(part.getAddress());
- }
- final Wavelet wave = newWave(getWaveDomain(), parts);
- return WaveRef.of(wave.getWaveId(), wave.getWaveletId());
- }
-
- @Override
- public void delParticipants(final WaveRef waveName, final String whoDel, final String... participants) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Wavelet fetchWave(final WaveRef waveRef, final String author) {
- // // Preconditions.checkNotNull(author);
- // RobotAccountData account = null;
- // final String rpcUrl = "http://" + getFrontEndAddress() + "/robot/rpc";
- // try {
- // account = getAccountStore().getAccount(
- // ParticipantId.ofUnsafe(getRobotId() + "@" + getWaveDomain())).asRobot();
- // } catch (final PersistenceException e) {
- // LOG.log(Level.WARNING, "Cannot fetch account data for robot id: " +
- // getRobotId(), e);
- // }
- // if (account != null) {
- // setupOAuth(account.getId().getAddress(), account.getConsumerSecret(),
- // rpcUrl);
- // try {
- // return super.fetchWavelet(waveRef.getWaveId(), waveRef.getWaveletId(),
- // "http://"
- // + getFrontEndAddress() + "/robot/rpc");
- // } catch (final IOException e) {
- // e.printStackTrace();
- // return null;
- // }
- // }
- return null;
- }
-
- @Override
- public String getRobotId() {
- return "kune-agent";
- }
-
- @Override
- protected String getRobotName() {
- return "Kune Agent";
- }
-
- @Override
- public String getRobotUri() {
- return ROBOT_URI;
- }
-
- @Override
- public boolean isParticipant(final Wavelet wavelet, final String user) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public String render(final Wavelet wavelet) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String render(final WaveRef waveRef, final String author) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl,
- final String someProperty, final String someValue) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setTitle(final WaveRef waveName, final String title, final String author) {
- // TODO Auto-generated method stub
-
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,68 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.server;
-
-import java.net.URL;
-
-import org.waveprotocol.wave.model.id.WaveId;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import com.google.wave.api.Wavelet;
-
-public interface KuneWaveService {
- public static final String NO_MESSAGE = "";
- public static final String NO_TITLE = "";
- public static final URL WITHOUT_GADGET = null;
-
- void addGadget(WaveRef waveName, String author, URL gadgetUrl);
-
- void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants);
-
- WaveRef createWave(String message, ParticipantId... participants);
-
- WaveRef createWave(String title, String message, ParticipantId... participantsArray);
-
- WaveRef createWave(String title, String message, String... participantsArray);
-
- WaveRef createWave(String title, String message, String waveIdToCopy, URL gadgetUrl,
- ParticipantId... participantsArray);
-
- WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray);
-
- void delParticipants(WaveRef waveName, String whoDel, String... participants);
-
- Wavelet fetchWave(WaveId waveId, WaveletId waveletId, String author);
-
- Wavelet fetchWave(WaveRef waveRef, String author);
-
- boolean isParticipant(Wavelet wavelet, String user);
-
- String render(Wavelet wavelet);
-
- String render(WaveRef waveRef, String author);
-
- void setGadgetProperty(WaveRef waveletName, String author, URL gadgetUrl, String someProperty,
- String someValue);
-
- void setTitle(WaveRef waveName, String title, String author);
-
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,491 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.wave.server;
-
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeSet;
-
-import javax.annotation.Nonnull;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.waveprotocol.box.server.CoreSettings;
-import org.waveprotocol.box.server.robots.OperationContextImpl;
-import org.waveprotocol.box.server.robots.OperationServiceRegistry;
-import org.waveprotocol.box.server.robots.util.ConversationUtil;
-import org.waveprotocol.box.server.robots.util.OperationUtil;
-import org.waveprotocol.box.server.waveserver.WaveletProvider;
-import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener;
-import org.waveprotocol.wave.model.id.InvalidIdException;
-import org.waveprotocol.wave.model.id.WaveId;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.version.HashedVersion;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.client.errors.DefaultException;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import com.google.wave.api.Annotation;
-import com.google.wave.api.ApiIdSerializer;
-import com.google.wave.api.Blip;
-import com.google.wave.api.BlipContent;
-import com.google.wave.api.BlipData;
-import com.google.wave.api.BlipThread;
-import com.google.wave.api.Element;
-import com.google.wave.api.ElementType;
-import com.google.wave.api.FormElement;
-import com.google.wave.api.Gadget;
-import com.google.wave.api.Image;
-import com.google.wave.api.JsonRpcConstant.ParamsProperty;
-import com.google.wave.api.JsonRpcResponse;
-import com.google.wave.api.Line;
-import com.google.wave.api.OperationQueue;
-import com.google.wave.api.OperationRequest;
-import com.google.wave.api.OperationRequest.Parameter;
-import com.google.wave.api.Participants;
-import com.google.wave.api.ProtocolVersion;
-import com.google.wave.api.Range;
-import com.google.wave.api.Wavelet;
-import com.google.wave.api.data.converter.EventDataConverterManager;
-import com.google.wave.api.impl.DocumentModifyAction;
-import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation;
-import com.google.wave.api.impl.DocumentModifyAction.ModifyHow;
-import com.google.wave.api.impl.DocumentModifyQuery;
-import com.google.wave.api.impl.WaveletData;
-import com.google.wave.splash.rpc.ClientAction;
-import com.google.wave.splash.web.template.WaveRenderer;
-
-public class KuneWaveServiceDefault implements KuneWaveService {
- public static final Log LOG = LogFactory.getLog(KuneWaveServiceDefault.class);
-
- // See: DocumentModifyServiceTest
- private static final String NO_ANNOTATION_KEY = null;
- private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList();
- private static final List<String> NO_VALUES = Collections.<String> emptyList();
- private static final String NO_WAVE_TO_COPY = null;
-
- /**
- *
- * Copy blips
- *
- * @param fromBlip
- * @param toBlip
- *
- * @author yurize(a)apache.org (Yuri Zelikov)
- *
- */
- public static void copyWavelet(final Blip fromBlip, final Blip toBlip) {
- for (final BlipContent blipContent : fromBlip.all().values()) {
- toBlip.append(blipContent);
- }
- // Deep copy annotations
- for (final Annotation annotation : fromBlip.getAnnotations()) {
- final Range range = annotation.getRange();
- try {
- toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(),
- annotation.getValue());
- } catch (final IndexOutOfBoundsException e) {
- // Don't copy faulty annotations
- }
- }
- }
-
- public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) {
- // Deep copy form elements.
- // DocumentModifyService don't permit this:
- // "Can't insert other elements than text and gadgets at the moment");
- for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) {
- final ElementType type = entry.getValue().getType();
- Element result = null;
- if (FormElement.getFormElementTypes().contains(type)) {
- result = new FormElement(type, entry.getValue().getProperties());
- } else if (type == ElementType.GADGET) {
- result = new Gadget(entry.getValue().getProperties());
- } else if (type == ElementType.IMAGE) {
- result = new Image(entry.getValue().getProperties());
- } else if (type == ElementType.LINE) {
- result = new Line(entry.getValue().getProperties());
- } else {
- result = new Element(type, entry.getValue().getProperties());
- }
- toBlip.append(result);
- }
- }
-
- private final ConversationUtil conversationUtil;
- private final EventDataConverterManager converterManager;
- private final String domain;
- private final OperationServiceRegistry operationRegistry;
- private final ParticipantUtils participantUtils;
- private final WaveletProvider waveletProvider;
- private final WaveRenderer waveRenderer;
-
- @Inject
- public KuneWaveServiceDefault(final EventDataConverterManager converterManager,
- @Named("DataApiRegistry") final OperationServiceRegistry operationRegistry,
- final WaveletProvider waveletProvider, final ConversationUtil conversationUtil,
- final ParticipantUtils participantUtils, final WaveRenderer waveRenderer,
- @Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain) {
- this.converterManager = converterManager;
- this.waveletProvider = waveletProvider;
- this.conversationUtil = conversationUtil;
- this.operationRegistry = operationRegistry;
- this.participantUtils = participantUtils;
- this.waveRenderer = waveRenderer;
- this.domain = domain;
- }
-
- @Override
- public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) {
- // See DocumentModifyServiceTest
- final List<Element> elementsIn = Lists.newArrayListWithCapacity(1);
- final Map<String, String> properties = Maps.newHashMap();
- properties.put(Gadget.URL, gadgetUrl.toString());
- properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress());
- final Gadget gadget = new Gadget(properties);
-
- elementsIn.add(gadget);
- final Wavelet wavelet = fetchWave(waveName, author);
- final OperationQueue opQueue = new OperationQueue();
- final Blip rootBlip = wavelet.getRootBlip();
-
- final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip);
- operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction(
- ModifyHow.INSERT, NO_VALUES, NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false)));
- operationRequest.addParameter(Parameter.of(ParamsProperty.INDEX, 1));
- doOperation(author, opQueue, "add gadget");
- }
-
- @Override
- public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdds,
- final String... newLocalParticipants) {
- final Wavelet wavelet = fetchWave(waveName, author);
- final Participants currentParticipants = wavelet.getParticipants();
- // Removing duplicates
- for (final String participant : toSet(newLocalParticipants)) {
- final String newPartWithDomain = participantUtils.of(participant).toString();
- if (!currentParticipants.contains(newPartWithDomain)) {
- // FIXME This is very costly. Seems like only one participant per
- // opQueue is added (try to
- // fix this in WAVE)
- final OperationQueue opQueue = new OperationQueue();
- LOG.debug("Adding as participant: " + newPartWithDomain);
- opQueue.addParticipantToWavelet(wavelet, newPartWithDomain);
- final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds
- : author;
- doOperation(whoAdd, opQueue, "add participant");
- }
- }
- }
-
- @Override
- public WaveRef createWave(final String message, final ParticipantId... participants) {
- return createWave(NO_TITLE, message, participants);
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message,
- @Nonnull final ParticipantId... participantsArray) {
- return createWave(title, message, WITHOUT_GADGET, participantsArray);
- }
-
- @Override
- public WaveRef createWave(final String title, final String message, final String... participantsArray) {
- return createWave(title, message, participantUtils.listFrom(participantsArray));
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message,
- final String waveIdToCopy, final URL gadgetUrl, @Nonnull final ParticipantId... participantsArray) {
- String newWaveId = null;
- String newWaveletId = null;
- final Set<String> participants = new HashSet<String>();
- for (final ParticipantId participant : participantsArray) {
- participants.add(participant.toString());
- }
- final ParticipantId user = participantsArray[0];
- final OperationQueue opQueue = new OperationQueue();
- final Wavelet newWavelet = opQueue.createWavelet(domain, participants);
- opQueue.setTitleOfWavelet(newWavelet, title);
- final Blip rootBlip = newWavelet.getRootBlip();
- rootBlip.append(new com.google.wave.api.Markup(message).getText());
-
- if (waveIdToCopy != NO_WAVE_TO_COPY && TextUtils.notEmpty(waveIdToCopy)) {
- try {
- WaveId copyWaveId;
- copyWaveId = WaveId.ofChecked(domain, waveIdToCopy);
- final Wavelet waveletToCopy = fetchWave(copyWaveId, WaveletId.of(domain, "conv+root"),
- participantsArray[0].toString());
- if (waveletToCopy != null) {
- copyWavelet(waveletToCopy.getRootBlip(), rootBlip);
- }
- } catch (final InvalidIdException e) {
- LOG.error("Error copying wave content", e);
- } catch (final DefaultException e2) {
- LOG.error("Error copying wave content", e2);
- }
- }
-
- if (gadgetUrl != WITHOUT_GADGET) {
- final Gadget gadget = new Gadget(gadgetUrl.toString());
- rootBlip.append(gadget);
- }
-
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- for (final OperationRequest req : opQueue.getPendingOperations()) {
- OperationUtil.executeOperation(req, operationRegistry, context, user);
- final String reqId = req.getId();
- final JsonRpcResponse response = context.getResponse(reqId);
- if (response != null) {
- if (response.isError()) {
- onFailure(context.getResponse(reqId).getErrorMessage());
- } else {
- final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID);
- final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID);
- if (responseWaveId != null && responseWaveletId != null) {
- // This is serialized use
- // ApiIdSerializer.instance().deserialiseWaveId (see
- // WaveService)
- newWaveId = (String) responseWaveId;
- newWaveletId = (String) responseWaveletId;
- }
- }
- }
- }
- OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
- @Override
- public void onFailure(final String arg0) {
- KuneWaveServiceDefault.this.onFailure("Wave creation failed, onFailure: " + arg0);
- }
-
- @Override
- public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
- LOG.info("Wave creation success: " + arg1);
- }
- });
- LOG.info("WaveId: " + newWaveId + " waveletId: " + newWaveletId);
- WaveRef wavename;
- try {
- wavename = WaveRef.of(ApiIdSerializer.instance().deserialiseWaveId(newWaveId),
- ApiIdSerializer.instance().deserialiseWaveletId(newWaveletId));
- } catch (final InvalidIdException e) {
- throw new DefaultException("Error getting wave id");
- }
- return wavename;
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl,
- @Nonnull final ParticipantId... participantsArray) {
- return createWave(title, message, NO_WAVE_TO_COPY, gadgetUrl, participantsArray);
- }
-
- @Override
- public void delParticipants(final WaveRef waveName, final String whoDel,
- final String... participantsToDel) {
- final Wavelet wavelet = fetchWave(waveName, whoDel);
- final Participants currentParticipants = wavelet.getParticipants();
- final Set<String> set = toSet(participantsToDel);
- LOG.debug("Removing participants: " + set.toString());
- for (final String participant : set) {
- // FIXME Seems like only one participant per opQueue is added (try to fix
- // this in WAVE)
- final String partWithDomain = participantUtils.of(participant).toString();
- if (currentParticipants.contains(partWithDomain)) {
- final OperationQueue opQueue = new OperationQueue();
- LOG.debug("Removing as participant: " + partWithDomain);
- opQueue.removeParticipantFromWavelet(wavelet, partWithDomain);
- doOperation(whoDel, opQueue, "del participant");
- }
- }
- }
-
- private void doOperation(final String author, final OperationQueue opQueue, final String logComment) {
- // FIXME: do here a callback!!!
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- for (final OperationRequest request : opQueue.getPendingOperations()) {
- // final OperationRequest request = opQueue.getPendingOperations().get(0);
- OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
- final String reqId = request.getId();
- final JsonRpcResponse response = context.getResponse(reqId);
- if (response != null && response.isError()) {
- onFailure(context.getResponse(reqId).getErrorMessage());
- }
- OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
- @Override
- public void onFailure(final String arg0) {
- KuneWaveServiceDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0);
- }
-
- @Override
- public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
- LOG.info("Wave " + logComment + " success: " + arg1);
- }
- });
- }
- }
-
- public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue,
- final SubmitRequestListener listener) {
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- for (final OperationRequest req : opQueue.getPendingOperations()) {
- OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author));
- }
- OperationUtil.submitDeltas(context, waveletProvider, listener);
- }
-
- @Override
- public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) {
- final OperationQueue opQueue = new OperationQueue();
- opQueue.fetchWavelet(waveId, waveletId);
- Wavelet wavelet = null;
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- final OperationRequest request = opQueue.getPendingOperations().get(0);
- OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
- final String reqId = request.getId();
- final JsonRpcResponse response = context.getResponse(reqId);
- if (response != null && response.isError()) {
- onFailure(context.getResponse(reqId).getErrorMessage());
- } else {
- // Duplicate code from WaveService
- assert response != null;
- final WaveletData waveletData = (WaveletData) response.getData().get(ParamsProperty.WAVELET_DATA);
- final Map<String, Blip> blips = new HashMap<String, Blip>();
- final Map<String, BlipThread> threads = new HashMap<String, BlipThread>();
- wavelet = Wavelet.deserialize(opQueue, blips, threads, waveletData);
-
- // Deserialize threads.
- @SuppressWarnings("unchecked")
- final Map<String, BlipThread> tempThreads = (Map<String, BlipThread>) response.getData().get(
- ParamsProperty.THREADS);
- for (final Map.Entry<String, BlipThread> entry : tempThreads.entrySet()) {
- final BlipThread thread = entry.getValue();
- threads.put(entry.getKey(),
- new BlipThread(thread.getId(), thread.getLocation(), thread.getBlipIds(), blips));
- }
-
- // Deserialize blips.
- @SuppressWarnings("unchecked")
- final Map<String, BlipData> blipDatas = (Map<String, BlipData>) response.getData().get(
- ParamsProperty.BLIPS);
- for (final Map.Entry<String, BlipData> entry : blipDatas.entrySet()) {
- blips.put(entry.getKey(), Blip.deserialize(opQueue, wavelet, entry.getValue()));
- }
- }
- return wavelet;
- }
-
- @Override
- public Wavelet fetchWave(final WaveRef waveName, final String author) {
- final WaveId waveId = waveName.getWaveId();
- final WaveletId waveletId = waveName.getWaveletId();
- return fetchWave(waveId, waveletId, author);
- }
-
- @Override
- public boolean isParticipant(final Wavelet wavelet, final String user) {
- return wavelet.getParticipants().contains(participantUtils.of(user).toString());
- }
-
- private void onFailure(final String message) {
- final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed";
- LOG.error(errorMsg);
- throw new DefaultException(errorMsg);
- }
-
- @Override
- public String render(final Wavelet wavelet) {
- final ClientAction clientPage = waveRenderer.render(wavelet, 0);
- final String html = clientPage.getHtml();
- return html;
- }
-
- @Override
- public String render(final WaveRef waveRef, final String author) {
- return render(fetchWave(waveRef, author));
- }
-
- @Override
- public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl,
- final String someProperty, final String someValue) {
- // See BlipContentRefs DocumentModifyService
- final Wavelet wavelet = fetchWave(waveletName, author);
- // FIXME
- final OperationQueue opQueue = new OperationQueue();
- final Blip rootBlip = wavelet.getRootBlip();
- for (final Element elem : rootBlip.getElements().values()) {
- if (elem.isGadget()) {
- final Map<String, String> properties = elem.getProperties();
- if (properties.get(Gadget.URL).equals(gadgetUrl.toString())) {
- // This is the gadget we want to modify (the first of that type)
- final List<Element> updatedElementsIn = Lists.newArrayListWithCapacity(1);
- properties.put(someProperty, someValue);
- // properties.put(propertyNameToDelete, null);
- final Gadget gadget = (Gadget) elem;
- gadget.setProperty(someProperty, someValue);
- // updatedElementsIn.add(new Gadget(properties));
- updatedElementsIn.add(gadget);
- final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip);
- operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION,
- new DocumentModifyAction(ModifyHow.UPDATE_ELEMENT, NO_VALUES, NO_ANNOTATION_KEY,
- updatedElementsIn, NO_BUNDLED_ANNOTATIONS, false)));
- operationRequest.addParameter(Parameter.of(
- ParamsProperty.MODIFY_QUERY,
- new DocumentModifyQuery(ElementType.GADGET, ImmutableMap.of(Gadget.URL,
- gadgetUrl.toString()), 1)));
- doOperation(author, opQueue, "set gadget property");
- break;
- }
- }
- }
- }
-
- @Override
- public void setTitle(final WaveRef waveName, final String title, final String author) {
- final Wavelet wavelet = fetchWave(waveName, author);
- final OperationQueue opQueue = new OperationQueue();
- opQueue.setTitleOfWavelet(wavelet, title);
- doOperation(author, opQueue, "set title");
- }
-
- private Set<String> toSet(final String[] array) {
- final Set<String> set = new TreeSet<String>(Collections.reverseOrder());
- set.addAll(Arrays.asList(array));
- return set;
- }
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,84 +0,0 @@
-package cc.kune.wave.server;
-
-import javax.persistence.NoResultException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.waveprotocol.box.common.DeltaSequence;
-import org.waveprotocol.box.server.waveserver.WaveBus;
-import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber;
-import org.waveprotocol.wave.model.id.IdUtil;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.id.WaveletName;
-import org.waveprotocol.wave.model.operation.wave.AddParticipant;
-import org.waveprotocol.wave.model.operation.wave.TransformedWaveletDelta;
-import org.waveprotocol.wave.model.operation.wave.WaveletBlipOperation;
-import org.waveprotocol.wave.model.operation.wave.WaveletOperation;
-import org.waveprotocol.wave.model.version.HashedVersion;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.wave.data.ReadableWaveletData;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import cc.kune.core.server.LogThis;
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.core.server.notifier.NotifySender;
-import cc.kune.core.server.notifier.NotifyType;
-import cc.kune.core.server.notifier.UsersOnline;
-import cc.kune.core.server.properties.KuneBasicProperties;
-import cc.kune.domain.User;
-import cc.kune.domain.finders.UserFinder;
-
-import com.google.inject.Inject;
-
-@LogThis
-public class WaveEmailNotifier {
- public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class);
-
- @Inject
- public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService,
- final UsersOnline usersOnline, final KuneBasicProperties basicProperties,
- final ParticipantUtils partUtils, final UserFinder userFinder) {
- waveBus.subscribe(new Subscriber() {
- @Override
- public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) {
- }
-
- @Override
- public void waveletUpdate(final ReadableWaveletData wavelet, final DeltaSequence deltas) {
- final WaveletId waveletId = wavelet.getWaveletId();
- if (IdUtil.isUserDataWavelet(waveletId)) {
- return;
- }
- for (final TransformedWaveletDelta delta : deltas) {
- for (final WaveletOperation op : delta) {
- if (op instanceof AddParticipant) {
- final ParticipantId participant = ((AddParticipant) op).getParticipantId();
- final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId));
- final FormatedString body = FormatedString.build(
- "Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>",
- basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url);
- final String address = participant.getAddress();
- if (partUtils.isLocal(address)) {
- final String userName = partUtils.getAddressName(address);
- // FIXME only for testing
- try {
- final User user = userFinder.findByShortName(userName);
- if (true || !usersOnline.isLogged(userName)) {
- notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
- body, true, user);
- notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true,
- user);
- }
- } catch (final NoResultException e) {
- // Seems is not a local user
- }
- }
- } else if (op instanceof WaveletBlipOperation) {
-
- }
- }
- }
- }
- });
- }
-}
Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneAgent.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,193 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.server.kspecific;
+
+import java.net.URL;
+import java.util.HashSet;
+import java.util.logging.Logger;
+
+import javax.annotation.Nonnull;
+
+import org.waveprotocol.box.server.robots.agent.AbstractBaseRobotAgent;
+import org.waveprotocol.wave.model.id.WaveId;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Singleton;
+import com.google.wave.api.Wavelet;
+
+@SuppressWarnings("serial")
+@Singleton
+public class KuneAgent extends AbstractBaseRobotAgent implements KuneWaveService {
+
+ private static final Logger LOG = Logger.getLogger(KuneAgent.class.getName());
+
+ private static final String NO_TITLE = "";
+ public static final String ROBOT_URI = AGENT_PREFIX_URI + "/kune-agent";
+
+ @Inject
+ public KuneAgent(final Injector injector) {
+ super(injector);
+ }
+
+ // public KuneAgent(final String waveDomain, final AccountStore accountStore,
+ // final TokenGenerator tokenGenerator, final ServerFrontendAddressHolder
+ // frontendAddressHolder) {
+ // super(waveDomain, accountStore, tokenGenerator, frontendAddressHolder);
+ // }
+
+ @Override
+ public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdd,
+ final String... newParticipants) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public WaveRef createWave(final String message, final ParticipantId... participants) {
+ return createWave(NO_TITLE, message, participants);
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message,
+ @Nonnull final ParticipantId... participantsArray) {
+ return createWave(title, message, WITHOUT_GADGET, participantsArray);
+ }
+
+ @Override
+ public WaveRef createWave(final String title, final String message, final String... participantsArray) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public WaveRef createWave(final String title, final String message, final String waveIdToCopy,
+ final URL gadgetUrl, final ParticipantId... participantsArray) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public WaveRef createWave(final String title, final String message, final URL gadgetUrl,
+ final ParticipantId... participantsArray) {
+ // super.newWave(getWaveDomain(), participantsArray);
+ final HashSet<String> parts = new HashSet<String>();
+ for (final ParticipantId part : participantsArray) {
+ parts.add(part.getAddress());
+ }
+ final Wavelet wave = newWave(getWaveDomain(), parts);
+ return WaveRef.of(wave.getWaveId(), wave.getWaveletId());
+ }
+
+ @Override
+ public void delParticipants(final WaveRef waveName, final String whoDel, final String... participants) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Wavelet fetchWave(final WaveRef waveRef, final String author) {
+ // // Preconditions.checkNotNull(author);
+ // RobotAccountData account = null;
+ // final String rpcUrl = "http://" + getFrontEndAddress() + "/robot/rpc";
+ // try {
+ // account = getAccountStore().getAccount(
+ // ParticipantId.ofUnsafe(getRobotId() + "@" + getWaveDomain())).asRobot();
+ // } catch (final PersistenceException e) {
+ // LOG.log(Level.WARNING, "Cannot fetch account data for robot id: " +
+ // getRobotId(), e);
+ // }
+ // if (account != null) {
+ // setupOAuth(account.getId().getAddress(), account.getConsumerSecret(),
+ // rpcUrl);
+ // try {
+ // return super.fetchWavelet(waveRef.getWaveId(), waveRef.getWaveletId(),
+ // "http://"
+ // + getFrontEndAddress() + "/robot/rpc");
+ // } catch (final IOException e) {
+ // e.printStackTrace();
+ // return null;
+ // }
+ // }
+ return null;
+ }
+
+ @Override
+ public String getRobotId() {
+ return "kune-agent";
+ }
+
+ @Override
+ protected String getRobotName() {
+ return "Kune Agent";
+ }
+
+ @Override
+ public String getRobotUri() {
+ return ROBOT_URI;
+ }
+
+ @Override
+ public boolean isParticipant(final Wavelet wavelet, final String user) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String render(final Wavelet wavelet) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String render(final WaveRef waveRef, final String author) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl,
+ final String someProperty, final String someValue) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setTitle(final WaveRef waveName, final String title, final String author) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.server.kspecific;
+
+import java.net.URL;
+
+import org.waveprotocol.wave.model.id.WaveId;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import com.google.wave.api.Wavelet;
+
+public interface KuneWaveService {
+ public static final String NO_MESSAGE = "";
+ public static final String NO_TITLE = "";
+ public static final URL WITHOUT_GADGET = null;
+
+ void addGadget(WaveRef waveName, String author, URL gadgetUrl);
+
+ void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants);
+
+ WaveRef createWave(String message, ParticipantId... participants);
+
+ WaveRef createWave(String title, String message, ParticipantId... participantsArray);
+
+ WaveRef createWave(String title, String message, String... participantsArray);
+
+ WaveRef createWave(String title, String message, String waveIdToCopy, URL gadgetUrl,
+ ParticipantId... participantsArray);
+
+ WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray);
+
+ void delParticipants(WaveRef waveName, String whoDel, String... participants);
+
+ Wavelet fetchWave(WaveId waveId, WaveletId waveletId, String author);
+
+ Wavelet fetchWave(WaveRef waveRef, String author);
+
+ boolean isParticipant(Wavelet wavelet, String user);
+
+ String render(Wavelet wavelet);
+
+ String render(WaveRef waveRef, String author);
+
+ void setGadgetProperty(WaveRef waveletName, String author, URL gadgetUrl, String someProperty,
+ String someValue);
+
+ void setTitle(WaveRef waveName, String title, String author);
+
+}
Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,492 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.wave.server.kspecific;
+
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.annotation.Nonnull;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.waveprotocol.box.server.CoreSettings;
+import org.waveprotocol.box.server.robots.OperationContextImpl;
+import org.waveprotocol.box.server.robots.OperationServiceRegistry;
+import org.waveprotocol.box.server.robots.util.ConversationUtil;
+import org.waveprotocol.box.server.robots.util.OperationUtil;
+import org.waveprotocol.box.server.waveserver.WaveletProvider;
+import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener;
+import org.waveprotocol.wave.model.id.InvalidIdException;
+import org.waveprotocol.wave.model.id.WaveId;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.version.HashedVersion;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.client.errors.DefaultException;
+import cc.kune.wave.server.ParticipantUtils;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+import com.google.wave.api.Annotation;
+import com.google.wave.api.ApiIdSerializer;
+import com.google.wave.api.Blip;
+import com.google.wave.api.BlipContent;
+import com.google.wave.api.BlipData;
+import com.google.wave.api.BlipThread;
+import com.google.wave.api.Element;
+import com.google.wave.api.ElementType;
+import com.google.wave.api.FormElement;
+import com.google.wave.api.Gadget;
+import com.google.wave.api.Image;
+import com.google.wave.api.JsonRpcConstant.ParamsProperty;
+import com.google.wave.api.JsonRpcResponse;
+import com.google.wave.api.Line;
+import com.google.wave.api.OperationQueue;
+import com.google.wave.api.OperationRequest;
+import com.google.wave.api.OperationRequest.Parameter;
+import com.google.wave.api.Participants;
+import com.google.wave.api.ProtocolVersion;
+import com.google.wave.api.Range;
+import com.google.wave.api.Wavelet;
+import com.google.wave.api.data.converter.EventDataConverterManager;
+import com.google.wave.api.impl.DocumentModifyAction;
+import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation;
+import com.google.wave.api.impl.DocumentModifyAction.ModifyHow;
+import com.google.wave.api.impl.DocumentModifyQuery;
+import com.google.wave.api.impl.WaveletData;
+import com.google.wave.splash.rpc.ClientAction;
+import com.google.wave.splash.web.template.WaveRenderer;
+
+public class KuneWaveServiceDefault implements KuneWaveService {
+ public static final Log LOG = LogFactory.getLog(KuneWaveServiceDefault.class);
+
+ // See: DocumentModifyServiceTest
+ private static final String NO_ANNOTATION_KEY = null;
+ private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList();
+ private static final List<String> NO_VALUES = Collections.<String> emptyList();
+ private static final String NO_WAVE_TO_COPY = null;
+
+ /**
+ *
+ * Copy blips
+ *
+ * @param fromBlip
+ * @param toBlip
+ *
+ * @author yurize(a)apache.org (Yuri Zelikov)
+ *
+ */
+ public static void copyWavelet(final Blip fromBlip, final Blip toBlip) {
+ for (final BlipContent blipContent : fromBlip.all().values()) {
+ toBlip.append(blipContent);
+ }
+ // Deep copy annotations
+ for (final Annotation annotation : fromBlip.getAnnotations()) {
+ final Range range = annotation.getRange();
+ try {
+ toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(),
+ annotation.getValue());
+ } catch (final IndexOutOfBoundsException e) {
+ // Don't copy faulty annotations
+ }
+ }
+ }
+
+ public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) {
+ // Deep copy form elements.
+ // DocumentModifyService don't permit this:
+ // "Can't insert other elements than text and gadgets at the moment");
+ for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) {
+ final ElementType type = entry.getValue().getType();
+ Element result = null;
+ if (FormElement.getFormElementTypes().contains(type)) {
+ result = new FormElement(type, entry.getValue().getProperties());
+ } else if (type == ElementType.GADGET) {
+ result = new Gadget(entry.getValue().getProperties());
+ } else if (type == ElementType.IMAGE) {
+ result = new Image(entry.getValue().getProperties());
+ } else if (type == ElementType.LINE) {
+ result = new Line(entry.getValue().getProperties());
+ } else {
+ result = new Element(type, entry.getValue().getProperties());
+ }
+ toBlip.append(result);
+ }
+ }
+
+ private final ConversationUtil conversationUtil;
+ private final EventDataConverterManager converterManager;
+ private final String domain;
+ private final OperationServiceRegistry operationRegistry;
+ private final ParticipantUtils participantUtils;
+ private final WaveletProvider waveletProvider;
+ private final WaveRenderer waveRenderer;
+
+ @Inject
+ public KuneWaveServiceDefault(final EventDataConverterManager converterManager,
+ @Named("DataApiRegistry") final OperationServiceRegistry operationRegistry,
+ final WaveletProvider waveletProvider, final ConversationUtil conversationUtil,
+ final ParticipantUtils participantUtils, final WaveRenderer waveRenderer,
+ @Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain) {
+ this.converterManager = converterManager;
+ this.waveletProvider = waveletProvider;
+ this.conversationUtil = conversationUtil;
+ this.operationRegistry = operationRegistry;
+ this.participantUtils = participantUtils;
+ this.waveRenderer = waveRenderer;
+ this.domain = domain;
+ }
+
+ @Override
+ public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) {
+ // See DocumentModifyServiceTest
+ final List<Element> elementsIn = Lists.newArrayListWithCapacity(1);
+ final Map<String, String> properties = Maps.newHashMap();
+ properties.put(Gadget.URL, gadgetUrl.toString());
+ properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress());
+ final Gadget gadget = new Gadget(properties);
+
+ elementsIn.add(gadget);
+ final Wavelet wavelet = fetchWave(waveName, author);
+ final OperationQueue opQueue = new OperationQueue();
+ final Blip rootBlip = wavelet.getRootBlip();
+
+ final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip);
+ operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction(
+ ModifyHow.INSERT, NO_VALUES, NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false)));
+ operationRequest.addParameter(Parameter.of(ParamsProperty.INDEX, 1));
+ doOperation(author, opQueue, "add gadget");
+ }
+
+ @Override
+ public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdds,
+ final String... newLocalParticipants) {
+ final Wavelet wavelet = fetchWave(waveName, author);
+ final Participants currentParticipants = wavelet.getParticipants();
+ // Removing duplicates
+ for (final String participant : toSet(newLocalParticipants)) {
+ final String newPartWithDomain = participantUtils.of(participant).toString();
+ if (!currentParticipants.contains(newPartWithDomain)) {
+ // FIXME This is very costly. Seems like only one participant per
+ // opQueue is added (try to
+ // fix this in WAVE)
+ final OperationQueue opQueue = new OperationQueue();
+ LOG.debug("Adding as participant: " + newPartWithDomain);
+ opQueue.addParticipantToWavelet(wavelet, newPartWithDomain);
+ final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds
+ : author;
+ doOperation(whoAdd, opQueue, "add participant");
+ }
+ }
+ }
+
+ @Override
+ public WaveRef createWave(final String message, final ParticipantId... participants) {
+ return createWave(NO_TITLE, message, participants);
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message,
+ @Nonnull final ParticipantId... participantsArray) {
+ return createWave(title, message, WITHOUT_GADGET, participantsArray);
+ }
+
+ @Override
+ public WaveRef createWave(final String title, final String message, final String... participantsArray) {
+ return createWave(title, message, participantUtils.listFrom(participantsArray));
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message,
+ final String waveIdToCopy, final URL gadgetUrl, @Nonnull final ParticipantId... participantsArray) {
+ String newWaveId = null;
+ String newWaveletId = null;
+ final Set<String> participants = new HashSet<String>();
+ for (final ParticipantId participant : participantsArray) {
+ participants.add(participant.toString());
+ }
+ final ParticipantId user = participantsArray[0];
+ final OperationQueue opQueue = new OperationQueue();
+ final Wavelet newWavelet = opQueue.createWavelet(domain, participants);
+ opQueue.setTitleOfWavelet(newWavelet, title);
+ final Blip rootBlip = newWavelet.getRootBlip();
+ rootBlip.append(new com.google.wave.api.Markup(message).getText());
+
+ if (waveIdToCopy != NO_WAVE_TO_COPY && TextUtils.notEmpty(waveIdToCopy)) {
+ try {
+ WaveId copyWaveId;
+ copyWaveId = WaveId.ofChecked(domain, waveIdToCopy);
+ final Wavelet waveletToCopy = fetchWave(copyWaveId, WaveletId.of(domain, "conv+root"),
+ participantsArray[0].toString());
+ if (waveletToCopy != null) {
+ copyWavelet(waveletToCopy.getRootBlip(), rootBlip);
+ }
+ } catch (final InvalidIdException e) {
+ LOG.error("Error copying wave content", e);
+ } catch (final DefaultException e2) {
+ LOG.error("Error copying wave content", e2);
+ }
+ }
+
+ if (gadgetUrl != WITHOUT_GADGET) {
+ final Gadget gadget = new Gadget(gadgetUrl.toString());
+ rootBlip.append(gadget);
+ }
+
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ for (final OperationRequest req : opQueue.getPendingOperations()) {
+ OperationUtil.executeOperation(req, operationRegistry, context, user);
+ final String reqId = req.getId();
+ final JsonRpcResponse response = context.getResponse(reqId);
+ if (response != null) {
+ if (response.isError()) {
+ onFailure(context.getResponse(reqId).getErrorMessage());
+ } else {
+ final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID);
+ final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID);
+ if (responseWaveId != null && responseWaveletId != null) {
+ // This is serialized use
+ // ApiIdSerializer.instance().deserialiseWaveId (see
+ // WaveService)
+ newWaveId = (String) responseWaveId;
+ newWaveletId = (String) responseWaveletId;
+ }
+ }
+ }
+ }
+ OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
+ @Override
+ public void onFailure(final String arg0) {
+ KuneWaveServiceDefault.this.onFailure("Wave creation failed, onFailure: " + arg0);
+ }
+
+ @Override
+ public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
+ LOG.info("Wave creation success: " + arg1);
+ }
+ });
+ LOG.info("WaveId: " + newWaveId + " waveletId: " + newWaveletId);
+ WaveRef wavename;
+ try {
+ wavename = WaveRef.of(ApiIdSerializer.instance().deserialiseWaveId(newWaveId),
+ ApiIdSerializer.instance().deserialiseWaveletId(newWaveletId));
+ } catch (final InvalidIdException e) {
+ throw new DefaultException("Error getting wave id");
+ }
+ return wavename;
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl,
+ @Nonnull final ParticipantId... participantsArray) {
+ return createWave(title, message, NO_WAVE_TO_COPY, gadgetUrl, participantsArray);
+ }
+
+ @Override
+ public void delParticipants(final WaveRef waveName, final String whoDel,
+ final String... participantsToDel) {
+ final Wavelet wavelet = fetchWave(waveName, whoDel);
+ final Participants currentParticipants = wavelet.getParticipants();
+ final Set<String> set = toSet(participantsToDel);
+ LOG.debug("Removing participants: " + set.toString());
+ for (final String participant : set) {
+ // FIXME Seems like only one participant per opQueue is added (try to fix
+ // this in WAVE)
+ final String partWithDomain = participantUtils.of(participant).toString();
+ if (currentParticipants.contains(partWithDomain)) {
+ final OperationQueue opQueue = new OperationQueue();
+ LOG.debug("Removing as participant: " + partWithDomain);
+ opQueue.removeParticipantFromWavelet(wavelet, partWithDomain);
+ doOperation(whoDel, opQueue, "del participant");
+ }
+ }
+ }
+
+ private void doOperation(final String author, final OperationQueue opQueue, final String logComment) {
+ // FIXME: do here a callback!!!
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ for (final OperationRequest request : opQueue.getPendingOperations()) {
+ // final OperationRequest request = opQueue.getPendingOperations().get(0);
+ OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
+ final String reqId = request.getId();
+ final JsonRpcResponse response = context.getResponse(reqId);
+ if (response != null && response.isError()) {
+ onFailure(context.getResponse(reqId).getErrorMessage());
+ }
+ OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
+ @Override
+ public void onFailure(final String arg0) {
+ KuneWaveServiceDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0);
+ }
+
+ @Override
+ public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
+ LOG.info("Wave " + logComment + " success: " + arg1);
+ }
+ });
+ }
+ }
+
+ public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue,
+ final SubmitRequestListener listener) {
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ for (final OperationRequest req : opQueue.getPendingOperations()) {
+ OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author));
+ }
+ OperationUtil.submitDeltas(context, waveletProvider, listener);
+ }
+
+ @Override
+ public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) {
+ final OperationQueue opQueue = new OperationQueue();
+ opQueue.fetchWavelet(waveId, waveletId);
+ Wavelet wavelet = null;
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ final OperationRequest request = opQueue.getPendingOperations().get(0);
+ OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
+ final String reqId = request.getId();
+ final JsonRpcResponse response = context.getResponse(reqId);
+ if (response != null && response.isError()) {
+ onFailure(context.getResponse(reqId).getErrorMessage());
+ } else {
+ // Duplicate code from WaveService
+ assert response != null;
+ final WaveletData waveletData = (WaveletData) response.getData().get(ParamsProperty.WAVELET_DATA);
+ final Map<String, Blip> blips = new HashMap<String, Blip>();
+ final Map<String, BlipThread> threads = new HashMap<String, BlipThread>();
+ wavelet = Wavelet.deserialize(opQueue, blips, threads, waveletData);
+
+ // Deserialize threads.
+ @SuppressWarnings("unchecked")
+ final Map<String, BlipThread> tempThreads = (Map<String, BlipThread>) response.getData().get(
+ ParamsProperty.THREADS);
+ for (final Map.Entry<String, BlipThread> entry : tempThreads.entrySet()) {
+ final BlipThread thread = entry.getValue();
+ threads.put(entry.getKey(),
+ new BlipThread(thread.getId(), thread.getLocation(), thread.getBlipIds(), blips));
+ }
+
+ // Deserialize blips.
+ @SuppressWarnings("unchecked")
+ final Map<String, BlipData> blipDatas = (Map<String, BlipData>) response.getData().get(
+ ParamsProperty.BLIPS);
+ for (final Map.Entry<String, BlipData> entry : blipDatas.entrySet()) {
+ blips.put(entry.getKey(), Blip.deserialize(opQueue, wavelet, entry.getValue()));
+ }
+ }
+ return wavelet;
+ }
+
+ @Override
+ public Wavelet fetchWave(final WaveRef waveName, final String author) {
+ final WaveId waveId = waveName.getWaveId();
+ final WaveletId waveletId = waveName.getWaveletId();
+ return fetchWave(waveId, waveletId, author);
+ }
+
+ @Override
+ public boolean isParticipant(final Wavelet wavelet, final String user) {
+ return wavelet.getParticipants().contains(participantUtils.of(user).toString());
+ }
+
+ private void onFailure(final String message) {
+ final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed";
+ LOG.error(errorMsg);
+ throw new DefaultException(errorMsg);
+ }
+
+ @Override
+ public String render(final Wavelet wavelet) {
+ final ClientAction clientPage = waveRenderer.render(wavelet, 0);
+ final String html = clientPage.getHtml();
+ return html;
+ }
+
+ @Override
+ public String render(final WaveRef waveRef, final String author) {
+ return render(fetchWave(waveRef, author));
+ }
+
+ @Override
+ public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl,
+ final String someProperty, final String someValue) {
+ // See BlipContentRefs DocumentModifyService
+ final Wavelet wavelet = fetchWave(waveletName, author);
+ // FIXME
+ final OperationQueue opQueue = new OperationQueue();
+ final Blip rootBlip = wavelet.getRootBlip();
+ for (final Element elem : rootBlip.getElements().values()) {
+ if (elem.isGadget()) {
+ final Map<String, String> properties = elem.getProperties();
+ if (properties.get(Gadget.URL).equals(gadgetUrl.toString())) {
+ // This is the gadget we want to modify (the first of that type)
+ final List<Element> updatedElementsIn = Lists.newArrayListWithCapacity(1);
+ properties.put(someProperty, someValue);
+ // properties.put(propertyNameToDelete, null);
+ final Gadget gadget = (Gadget) elem;
+ gadget.setProperty(someProperty, someValue);
+ // updatedElementsIn.add(new Gadget(properties));
+ updatedElementsIn.add(gadget);
+ final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip);
+ operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION,
+ new DocumentModifyAction(ModifyHow.UPDATE_ELEMENT, NO_VALUES, NO_ANNOTATION_KEY,
+ updatedElementsIn, NO_BUNDLED_ANNOTATIONS, false)));
+ operationRequest.addParameter(Parameter.of(
+ ParamsProperty.MODIFY_QUERY,
+ new DocumentModifyQuery(ElementType.GADGET, ImmutableMap.of(Gadget.URL,
+ gadgetUrl.toString()), 1)));
+ doOperation(author, opQueue, "set gadget property");
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void setTitle(final WaveRef waveName, final String title, final String author) {
+ final Wavelet wavelet = fetchWave(waveName, author);
+ final OperationQueue opQueue = new OperationQueue();
+ opQueue.setTitleOfWavelet(wavelet, title);
+ doOperation(author, opQueue, "set title");
+ }
+
+ private Set<String> toSet(final String[] array) {
+ final Set<String> set = new TreeSet<String>(Collections.reverseOrder());
+ set.addAll(Arrays.asList(array));
+ return set;
+ }
+}
Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,86 @@
+package cc.kune.wave.server.kspecific;
+
+import javax.persistence.NoResultException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.waveprotocol.box.common.DeltaSequence;
+import org.waveprotocol.box.server.waveserver.WaveBus;
+import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber;
+import org.waveprotocol.wave.model.id.IdUtil;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.id.WaveletName;
+import org.waveprotocol.wave.model.operation.wave.AddParticipant;
+import org.waveprotocol.wave.model.operation.wave.TransformedWaveletDelta;
+import org.waveprotocol.wave.model.operation.wave.WaveletBlipOperation;
+import org.waveprotocol.wave.model.operation.wave.WaveletOperation;
+import org.waveprotocol.wave.model.version.HashedVersion;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.wave.data.ReadableWaveletData;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.core.server.LogThis;
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.notifier.NotifySender;
+import cc.kune.core.server.notifier.NotifyType;
+import cc.kune.core.server.notifier.UsersOnline;
+import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.UserFinder;
+import cc.kune.wave.server.KuneWaveUtils;
+import cc.kune.wave.server.ParticipantUtils;
+
+import com.google.inject.Inject;
+
+@LogThis
+public class WaveEmailNotifier {
+ public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class);
+
+ @Inject
+ public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService,
+ final UsersOnline usersOnline, final KuneBasicProperties basicProperties,
+ final ParticipantUtils partUtils, final UserFinder userFinder) {
+ waveBus.subscribe(new Subscriber() {
+ @Override
+ public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) {
+ }
+
+ @Override
+ public void waveletUpdate(final ReadableWaveletData wavelet, final DeltaSequence deltas) {
+ final WaveletId waveletId = wavelet.getWaveletId();
+ if (IdUtil.isUserDataWavelet(waveletId)) {
+ return;
+ }
+ for (final TransformedWaveletDelta delta : deltas) {
+ for (final WaveletOperation op : delta) {
+ if (op instanceof AddParticipant) {
+ final ParticipantId participant = ((AddParticipant) op).getParticipantId();
+ final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId));
+ final FormatedString body = FormatedString.build(
+ "Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>",
+ basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url);
+ final String address = participant.getAddress();
+ if (partUtils.isLocal(address)) {
+ final String userName = partUtils.getAddressName(address);
+ // FIXME only for testing
+ try {
+ final User user = userFinder.findByShortName(userName);
+ if (!usersOnline.isLogged(userName)) {
+ notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
+ body, true, user);
+ notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true,
+ user);
+ }
+ } catch (final NoResultException e) {
+ // Seems is not a local user
+ }
+ }
+ } else if (op instanceof WaveletBlipOperation) {
+
+ }
+ }
+ }
+ }
+ });
+ }
+}
Modified: trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java
===================================================================
--- trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -18,7 +18,7 @@
import org.waveprotocol.wave.client.editor.EditorImpl;
-import cc.kune.wave.client.KuneWaveResources;
+import cc.kune.wave.client.resources.KuneWaveResources;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
Deleted: trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import java.util.ArrayList;
-
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.SimpleEventBus;
-
-public class EventBusTester extends SimpleEventBus {
- private final ArrayList<GwtEvent<?>> all;
- private GwtEvent<?> lastEvent;
-
- public EventBusTester() {
- all = new ArrayList<GwtEvent<?>>();
- }
-
- @Override
- public void fireEvent(final GwtEvent<?> event) {
- all.add(event);
- this.lastEvent = event;
- super.fireEvent(event);
- }
-
- public GwtEvent<?> getLastEvent() {
- return lastEvent;
- }
-
- @SuppressWarnings("unchecked")
- public <T extends GwtEvent<?>> Class<T> getLastEventClass() {
- return (Class<T>) lastEvent.getClass();
- }
-
- public boolean receivedEventOfClass(final Class<? extends GwtEvent<?>> eventClass) {
- for (final GwtEvent<?> event : all) {
- if (eventClass.equals(event.getClass())) {
- return true;
- }
- }
- return false;
- }
-}
Deleted: trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,329 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import static org.mockito.Matchers.anyBoolean;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import cc.kune.common.client.actions.BeforeActionListener;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
-import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.InitDataDTO;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class StateManagerDefaultTest {
-
- private static final StateToken EMPTY_TOKEN = null;
- private static final StateToken GROUP1_TOOL1 = new StateToken("group1.tool1");
- private static final StateToken GROUP1_TOOL2 = new StateToken("group1.tool2");
- private static final StateToken GROUP2_TOOL1 = new StateToken("group2.tool1");
- private static final String HASH = "someUserHash";
- private BeforeActionListener beforeChangeListener1;
- private BeforeActionListener beforeChangeListener2;
- private ContentCache contentProvider;
- private EventBusTester eventBus;
- private GroupChangedHandler groupChangeHandler;
- private HistoryWrapper history;
- private Session session;
- private SiteTokenListeners siteTokens;
- private StateAbstractDTO state;
- private StateChangedHandler stateChangeHandler;
- private StateManagerDefault stateManager;
- private TokenMatcher tokenMatcher;
- private ToolChangedHandler toolChangeHandler;
-
- @Before
- public void before() {
- contentProvider = Mockito.mock(ContentCache.class);
- session = Mockito.mock(Session.class);
- history = Mockito.mock(HistoryWrapper.class);
- tokenMatcher = Mockito.mock(TokenMatcher.class);
- siteTokens = Mockito.mock(SiteTokenListeners.class);
- eventBus = new EventBusTester();
- Mockito.when(session.getUserHash()).thenReturn(HASH);
- Mockito.doAnswer(new Answer<Object>() {
- @Override
- public Object answer(final InvocationOnMock invocation) throws Throwable {
- eventBus.addHandler(UserSignInEvent.getType(), (UserSignInHandler) invocation.getArguments()[1]);
- return null;
- }
- }).when(session).onUserSignIn(anyBoolean(), (UserSignInHandler) Mockito.anyObject());
- Mockito.doAnswer(new Answer<Object>() {
- @Override
- public Object answer(final InvocationOnMock invocation) throws Throwable {
- eventBus.addHandler(UserSignOutEvent.getType(),
- (UserSignOutHandler) invocation.getArguments()[1]);
- return null;
- }
- }).when(session).onUserSignOut(anyBoolean(), (UserSignOutHandler) Mockito.anyObject());
- Mockito.doAnswer(new Answer<Object>() {
- @Override
- public Object answer(final InvocationOnMock invocation) throws Throwable {
- eventBus.addHandler(AppStartEvent.getType(), (AppStartHandler) invocation.getArguments()[1]);
- return null;
- }
- }).when(session).onAppStart(anyBoolean(), (AppStartHandler) Mockito.anyObject());
- state = Mockito.mock(StateAbstractDTO.class);
- stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus,
- siteTokens);
- stateChangeHandler = Mockito.mock(StateChangedHandler.class);
- groupChangeHandler = Mockito.mock(GroupChangedHandler.class);
- toolChangeHandler = Mockito.mock(ToolChangedHandler.class);
- beforeChangeListener1 = Mockito.mock(BeforeActionListener.class);
- beforeChangeListener2 = Mockito.mock(BeforeActionListener.class);
- eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler);
- eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler);
- eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler);
- // new NotifyUser(null, null);
- }
-
- @Test
- public void changeGroupWithNoTool() {
- changeState("group1", "group2");
- Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
- (StateChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- }
-
- private void changeState(final String... tokens) {
- for (final String token : tokens) {
- Mockito.when(state.getStateToken()).thenReturn(new StateToken(token));
- stateManager.setState(state);
- }
- }
-
- @Test
- public void changeStateWithDifferentAndGroupsToolsMustFireListener() {
- changeState("group2.tool1", "group1.tool2");
- Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
- (StateChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged(
- (ToolChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("", "group2"));
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("group2", "group1"));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(EMPTY_TOKEN, GROUP2_TOOL1));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(GROUP2_TOOL1, GROUP1_TOOL2));
- }
-
- @Test
- public void changeStateWithDifferentGroupsMustFireListener() {
- changeState("group1.tool1", "group2.tool1");
- // assertTrue(stateChangeListener.isCalled(2));
- // assertTrue(groupChangeListener.isCalledWithEquals("", "group1",
- // "group1", "group2"));
- // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1"));
- Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
- (StateChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- (ToolChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("", "group1"));
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("group1", "group2"));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(null, GROUP1_TOOL1));
-
- }
-
- @Test
- public void changeStateWithDifferentToolsMustFireListener() {
- changeState("group1.tool1", "group1.tool2");
- Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
- (StateChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged(
- (ToolChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("", "group1"));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(GROUP1_TOOL1, GROUP1_TOOL2));
- }
-
- @Test
- public void changeToNoTool() {
- changeState("group1.tool1", "group1");
- Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
- (StateChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged(
- (ToolChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("", "group1"));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(GROUP1_TOOL1, new StateToken("group1")));
- }
-
- @Test
- public void changeToSameToken() {
- changeState("group1.tool1", "group1.tool1");
- Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
- (StateChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- (GroupChangedEvent) Mockito.anyObject());
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- (ToolChangedEvent) Mockito.anyObject());
- Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
- new GroupChangedEvent("", "group1"));
- Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
- new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1));
- }
-
- private String confBeforeStateChangeListeners(final boolean value, final boolean value2) {
- stateManager.addBeforeStateChangeListener(beforeChangeListener1);
- stateManager.addBeforeStateChangeListener(beforeChangeListener2);
- final String newToken = "something";
- Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value);
- Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2);
- return newToken;
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void getDefGroup() {
- stateManager.processHistoryToken("site.docs");
- verifyGetServerContent();
- }
-
- public void getWaveToken() {
- stateManager.processHistoryToken("example.com/w+abcd/~/conv+root/b+45kg");
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void normalStartLoggedUser() {
- // When a user enter reload state, also if the application is starting
- // (and the user was logged)
- Mockito.when(history.getToken()).thenReturn("");
- stateManager.refreshCurrentState();
- verifyGetServerContent();
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void oneBeforeStateChangeListenerAddAndRemove() {
- final String newToken = confBeforeStateChangeListeners(false, false);
- stateManager.processHistoryToken(newToken);
- removeBeforeStateChangeListener();
- stateManager.processHistoryToken(newToken);
- verifyGetServerContent();
- }
-
- @Test
- public void oneBeforeStateChangeListenerFalseAndResume() {
- final String token = confBeforeStateChangeListeners(false, true);
- stateManager.processHistoryToken(token);
- Mockito.verify(history, Mockito.never()).newItem(token);
- removeBeforeStateChangeListener();
- stateManager.resumeTokenChange();
- Mockito.verify(history, Mockito.times(1)).newItem(token);
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void oneBeforeStateChangeListenerReturnFalse() {
- stateManager.processHistoryToken(confBeforeStateChangeListeners(true, false));
- Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(),
- (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void oneBeforeStateChangeListenerReturnFalseWithTwo() {
- stateManager.processHistoryToken(confBeforeStateChangeListeners(false, false));
- Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(),
- (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void oneBeforeStateChangeListenerReturnTrue() {
- stateManager.processHistoryToken(confBeforeStateChangeListeners(true, true));
- verifyGetServerContent();
- }
-
- private void removeBeforeStateChangeListener() {
- stateManager.removeBeforeStateChangeListener(beforeChangeListener1);
- stateManager.removeBeforeStateChangeListener(beforeChangeListener2);
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void siteTokenFirstLoadDefContentAndFireListener() {
- final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class);
- final String token = SiteTokens.SIGNIN;
- stateManager.addSiteToken(token, listener);
- Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener);
- stateManager.processHistoryToken(token);
- Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString());
- verifyGetServerContent();
- }
-
- @Test
- public void siteTokenTest() {
- final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class);
- stateManager.addSiteToken(SiteTokens.SIGNIN, listener);
- Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener);
- stateManager.processHistoryToken("signIn");
- Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString());
- }
-
- @Test
- public void startMustLoadContent() {
- final InitDataDTO initData = Mockito.mock(InitDataDTO.class);
- Mockito.when(history.getToken()).thenReturn("");
- eventBus.fireEvent(new AppStartEvent(initData));
- verifyGetServerContent();
- }
-
- private void verifyGetServerContent() {
- Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
- (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
- }
-}
Deleted: trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,72 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-
-import org.junit.Test;
-
-import cc.kune.core.shared.domain.utils.StateToken;
-
-public class StateTokenTest {
-
- @Test
- public void checkAllEmpty() {
- final StateToken token = new StateToken("");
- assertNull(token.getGroup());
- assertNull(token.getTool());
- assertNull(token.getFolder());
- assertNull(token.getDocument());
- }
-
- @Test
- public void checkEquals() {
- final StateToken token1 = new StateToken("abc", "da", "1", "1");
- final StateToken token2 = new StateToken("abc", "da", "1", "1");
- assertEquals(token1, token2);
- }
-
- @Test
- public void checkEqualsEncoded() {
- final StateToken token1 = new StateToken("abc.da.1.1");
- final StateToken token2 = new StateToken("abc.da.1.1");
- assertEquals(token1, token2);
- }
-
- @Test
- public void checkNoEquals() {
- final StateToken token1 = new StateToken("abc", "da", "1", "1");
- final StateToken token2 = new StateToken("abc", "da", 1L);
- assertFalse(token1.equals(token2));
- }
-
- @Test
- public void parseEncodedNotCatched() {
- final StateToken token1 = new StateToken();
- final StateToken token2 = new StateToken();
- token1.getEncoded();
- token2.getEncoded();
- token1.setEncoded("abc.da.1.1");
- token2.setEncoded("abc.da.1.2");
- assertFalse(token1.equals(token2));
- }
-}
Deleted: trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -1,152 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.state;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
-
-import cc.kune.core.shared.dto.ReservedWordsRegistryDTO;
-
-public class TokenMatcherTest {
-
- private static final String DEF_SITE_TOKEN = "";
- private static final String GROUP_TOKEN = "site.docs.1";
- private static final String GROUP_TOKEN_ONLY_PROJECT = "site";
- private static final String GROUP_TOKEN_ONLY_PROJECT_AND_TOOL = "site.docs";
- private static final String REDIRECT_LINK = "example.com/w+jsdKixyHhZA";
- private static final String SIGNIN_TOKEN = "signin";
- private static final String SIGNIN_TOKEN_WITH_REDIRECT = SIGNIN_TOKEN + "(" + REDIRECT_LINK + ")";
- private static final String SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW = SIGNIN_TOKEN + "(" + SiteTokens.PREVIEW + "("
- + REDIRECT_LINK + "))";
- private static final String WAVE_TOKEN_SAMPLE1 = "example.com/w+abcd";
- private static final String WAVE_TOKEN_SAMPLE2 = "example.com/w+abcd/~/conv+root";
- private static final String WAVE_TOKEN_SAMPLE3 = "example.com/w+abcd/~/conv+root/b+45kg";
- private TokenMatcher tokenMatcher;
-
- @Before
- public void before() {
- final ReservedWordsRegistryDTO reservedWords = new ReservedWordsRegistryDTO();
- reservedWords.add(SIGNIN_TOKEN);
- tokenMatcher = new TokenMatcher(reservedWords);
- tokenMatcher.init(JavaWaverefEncoder.INSTANCE);
- }
-
- private void dontMatchGroupToken(final String token) {
- assertFalse("Expected '" + token + "' dont match isGroup", tokenMatcher.isGroupToken(token));
- }
-
- @Test
- public void dontMatchRedirect() {
- dontMatchWaveToken(SIGNIN_TOKEN_WITH_REDIRECT);
- dontMatchGroupToken(SIGNIN_TOKEN_WITH_REDIRECT);
- assertFalse(tokenMatcher.hasRedirect(SIGNIN_TOKEN));
- }
-
- private void dontMatchWaveToken(final String token) {
- assertFalse("Expected '" + token + "' dont match isWaveToken", tokenMatcher.isWaveToken(token));
- }
-
- private void matchGroupToken(final String token) {
- assertTrue("Expected '" + token + "' match isGroup", tokenMatcher.isGroupToken(token));
- }
-
- private void matchWaveToken(final String token) {
- assertTrue("Expected '" + token + "' match isWaveToken", tokenMatcher.isWaveToken(token));
- }
-
- @Test
- public void matchWaveToken2() {
- matchWaveToken(WAVE_TOKEN_SAMPLE2);
- dontMatchGroupToken(WAVE_TOKEN_SAMPLE2);
- }
-
- @Test
- public void matchWaveToken3() {
- matchWaveToken(WAVE_TOKEN_SAMPLE3);
- dontMatchGroupToken(WAVE_TOKEN_SAMPLE3);
- }
-
- @Test
- public void shouldDontMatchNull() {
- dontMatchWaveToken(null);
- dontMatchWaveToken("");
- dontMatchGroupToken(null);
- dontMatchGroupToken("");
- }
-
- @Test
- public void shouldExtractRedirect() {
- assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT));
- assertEquals(SIGNIN_TOKEN, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getLeft());
- assertEquals(REDIRECT_LINK, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight());
- }
-
- @Test
- public void shouldExtractRedirectInSignPreview() {
- assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW));
- assertEquals(
- "Expected " + SIGNIN_TOKEN + " but: "
- + tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft(), SIGNIN_TOKEN,
- tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft());
- // assertEquals(REDIRECT_LINK,
- // tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight());
- }
-
- @Test
- public void shoulMatchCompleteToken() {
- matchGroupToken(GROUP_TOKEN);
- dontMatchWaveToken(GROUP_TOKEN);
- }
-
- @Test
- public void shoulMatchGroupToken() {
- matchGroupToken(GROUP_TOKEN_ONLY_PROJECT);
- dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT);
- }
-
- @Test
- public void shoulMatchGroupToolToken() {
- matchGroupToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL);
- dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL);
- }
-
- @Test
- public void testDefSiteTokenDontMatch() {
- dontMatchWaveToken(DEF_SITE_TOKEN);
- dontMatchGroupToken(DEF_SITE_TOKEN);
- }
-
- @Test
- public void testMatchWaveToken1() {
- matchWaveToken(WAVE_TOKEN_SAMPLE1);
- dontMatchGroupToken(WAVE_TOKEN_SAMPLE1);
- }
-
- @Test
- public void testOtherSiteTokensDontMatch() {
- dontMatchWaveToken(SIGNIN_TOKEN);
- dontMatchGroupToken(SIGNIN_TOKEN);
- }
-}
Copied: trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java)
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import java.util.ArrayList;
+
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.SimpleEventBus;
+
+public class EventBusTester extends SimpleEventBus {
+ private final ArrayList<GwtEvent<?>> all;
+ private GwtEvent<?> lastEvent;
+
+ public EventBusTester() {
+ all = new ArrayList<GwtEvent<?>>();
+ }
+
+ @Override
+ public void fireEvent(final GwtEvent<?> event) {
+ all.add(event);
+ this.lastEvent = event;
+ super.fireEvent(event);
+ }
+
+ public GwtEvent<?> getLastEvent() {
+ return lastEvent;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends GwtEvent<?>> Class<T> getLastEventClass() {
+ return (Class<T>) lastEvent.getClass();
+ }
+
+ public boolean receivedEventOfClass(final Class<? extends GwtEvent<?>> eventClass) {
+ for (final GwtEvent<?> event : all) {
+ if (eventClass.equals(event.getClass())) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
Copied: trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java)
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,342 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import static org.mockito.Matchers.anyBoolean;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import cc.kune.common.client.actions.BeforeActionListener;
+import cc.kune.core.client.events.AppStartEvent;
+import cc.kune.core.client.events.GroupChangedEvent;
+import cc.kune.core.client.events.StateChangedEvent;
+import cc.kune.core.client.events.ToolChangedEvent;
+import cc.kune.core.client.events.UserSignInEvent;
+import cc.kune.core.client.events.UserSignOutEvent;
+import cc.kune.core.client.events.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler;
+import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler;
+import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler;
+import cc.kune.core.client.state.ContentCache;
+import cc.kune.core.client.state.HistoryTokenCallback;
+import cc.kune.core.client.state.HistoryWrapper;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokenListeners;
+import cc.kune.core.client.state.SiteTokens;
+import cc.kune.core.client.state.TokenMatcher;
+import cc.kune.core.client.state.impl.StateManagerDefault;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.InitDataDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public class StateManagerDefaultTest {
+
+ private static final StateToken EMPTY_TOKEN = null;
+ private static final StateToken GROUP1_TOOL1 = new StateToken("group1.tool1");
+ private static final StateToken GROUP1_TOOL2 = new StateToken("group1.tool2");
+ private static final StateToken GROUP2_TOOL1 = new StateToken("group2.tool1");
+ private static final String HASH = "someUserHash";
+ private BeforeActionListener beforeChangeListener1;
+ private BeforeActionListener beforeChangeListener2;
+ private ContentCache contentProvider;
+ private EventBusTester eventBus;
+ private GroupChangedHandler groupChangeHandler;
+ private HistoryWrapper history;
+ private Session session;
+ private SiteTokenListeners siteTokens;
+ private StateAbstractDTO state;
+ private StateChangedHandler stateChangeHandler;
+ private StateManagerDefault stateManager;
+ private TokenMatcher tokenMatcher;
+ private ToolChangedHandler toolChangeHandler;
+
+ @Before
+ public void before() {
+ contentProvider = Mockito.mock(ContentCache.class);
+ session = Mockito.mock(Session.class);
+ history = Mockito.mock(HistoryWrapper.class);
+ tokenMatcher = Mockito.mock(TokenMatcher.class);
+ siteTokens = Mockito.mock(SiteTokenListeners.class);
+ eventBus = new EventBusTester();
+ Mockito.when(session.getUserHash()).thenReturn(HASH);
+ Mockito.doAnswer(new Answer<Object>() {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws Throwable {
+ eventBus.addHandler(UserSignInEvent.getType(), (UserSignInHandler) invocation.getArguments()[1]);
+ return null;
+ }
+ }).when(session).onUserSignIn(anyBoolean(), (UserSignInHandler) Mockito.anyObject());
+ Mockito.doAnswer(new Answer<Object>() {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws Throwable {
+ eventBus.addHandler(UserSignOutEvent.getType(),
+ (UserSignOutHandler) invocation.getArguments()[1]);
+ return null;
+ }
+ }).when(session).onUserSignOut(anyBoolean(), (UserSignOutHandler) Mockito.anyObject());
+ Mockito.doAnswer(new Answer<Object>() {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws Throwable {
+ eventBus.addHandler(AppStartEvent.getType(), (AppStartHandler) invocation.getArguments()[1]);
+ return null;
+ }
+ }).when(session).onAppStart(anyBoolean(), (AppStartHandler) Mockito.anyObject());
+ state = Mockito.mock(StateAbstractDTO.class);
+ stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus,
+ siteTokens);
+ stateChangeHandler = Mockito.mock(StateChangedHandler.class);
+ groupChangeHandler = Mockito.mock(GroupChangedHandler.class);
+ toolChangeHandler = Mockito.mock(ToolChangedHandler.class);
+ beforeChangeListener1 = Mockito.mock(BeforeActionListener.class);
+ beforeChangeListener2 = Mockito.mock(BeforeActionListener.class);
+ eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler);
+ eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler);
+ eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler);
+ // new NotifyUser(null, null);
+ }
+
+ @Test
+ public void changeGroupWithNoTool() {
+ changeState("group1", "group2");
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
+ (StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ }
+
+ private void changeState(final String... tokens) {
+ for (final String token : tokens) {
+ Mockito.when(state.getStateToken()).thenReturn(new StateToken(token));
+ stateManager.setState(state);
+ }
+ }
+
+ @Test
+ public void changeStateWithDifferentAndGroupsToolsMustFireListener() {
+ changeState("group2.tool1", "group1.tool2");
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
+ (StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged(
+ (ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("", "group2"));
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("group2", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(EMPTY_TOKEN, GROUP2_TOOL1));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(GROUP2_TOOL1, GROUP1_TOOL2));
+ }
+
+ @Test
+ public void changeStateWithDifferentGroupsMustFireListener() {
+ changeState("group1.tool1", "group2.tool1");
+ // assertTrue(stateChangeListener.isCalled(2));
+ // assertTrue(groupChangeListener.isCalledWithEquals("", "group1",
+ // "group1", "group2"));
+ // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1"));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
+ (StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ (ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("", "group1"));
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("group1", "group2"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(null, GROUP1_TOOL1));
+
+ }
+
+ @Test
+ public void changeStateWithDifferentToolsMustFireListener() {
+ changeState("group1.tool1", "group1.tool2");
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
+ (StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged(
+ (ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(GROUP1_TOOL1, GROUP1_TOOL2));
+ }
+
+ @Test
+ public void changeToNoTool() {
+ changeState("group1.tool1", "group1");
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
+ (StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged(
+ (ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(GROUP1_TOOL1, new StateToken("group1")));
+ }
+
+ @Test
+ public void changeToSameToken() {
+ changeState("group1.tool1", "group1.tool1");
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged(
+ (StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ (GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ (ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(
+ new GroupChangedEvent("", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(
+ new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1));
+ }
+
+ private String confBeforeStateChangeListeners(final boolean value, final boolean value2) {
+ stateManager.addBeforeStateChangeListener(beforeChangeListener1);
+ stateManager.addBeforeStateChangeListener(beforeChangeListener2);
+ final String newToken = "something";
+ Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value);
+ Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2);
+ return newToken;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void getDefGroup() {
+ stateManager.processHistoryToken("site.docs");
+ verifyGetServerContent();
+ }
+
+ public void getWaveToken() {
+ stateManager.processHistoryToken("example.com/w+abcd/~/conv+root/b+45kg");
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void normalStartLoggedUser() {
+ // When a user enter reload state, also if the application is starting
+ // (and the user was logged)
+ Mockito.when(history.getToken()).thenReturn("");
+ stateManager.refreshCurrentState();
+ verifyGetServerContent();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void oneBeforeStateChangeListenerAddAndRemove() {
+ final String newToken = confBeforeStateChangeListeners(false, false);
+ stateManager.processHistoryToken(newToken);
+ removeBeforeStateChangeListener();
+ stateManager.processHistoryToken(newToken);
+ verifyGetServerContent();
+ }
+
+ @Test
+ public void oneBeforeStateChangeListenerFalseAndResume() {
+ final String token = confBeforeStateChangeListeners(false, true);
+ stateManager.processHistoryToken(token);
+ Mockito.verify(history, Mockito.never()).newItem(token);
+ removeBeforeStateChangeListener();
+ stateManager.resumeTokenChange();
+ Mockito.verify(history, Mockito.times(1)).newItem(token);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void oneBeforeStateChangeListenerReturnFalse() {
+ stateManager.processHistoryToken(confBeforeStateChangeListeners(true, false));
+ Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(),
+ (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void oneBeforeStateChangeListenerReturnFalseWithTwo() {
+ stateManager.processHistoryToken(confBeforeStateChangeListeners(false, false));
+ Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(),
+ (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void oneBeforeStateChangeListenerReturnTrue() {
+ stateManager.processHistoryToken(confBeforeStateChangeListeners(true, true));
+ verifyGetServerContent();
+ }
+
+ private void removeBeforeStateChangeListener() {
+ stateManager.removeBeforeStateChangeListener(beforeChangeListener1);
+ stateManager.removeBeforeStateChangeListener(beforeChangeListener2);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void siteTokenFirstLoadDefContentAndFireListener() {
+ final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class);
+ final String token = SiteTokens.SIGNIN;
+ stateManager.addSiteToken(token, listener);
+ Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener);
+ stateManager.processHistoryToken(token);
+ Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString());
+ verifyGetServerContent();
+ }
+
+ @Test
+ public void siteTokenTest() {
+ final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class);
+ stateManager.addSiteToken(SiteTokens.SIGNIN, listener);
+ Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener);
+ stateManager.processHistoryToken("signIn");
+ Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString());
+ }
+
+ @Test
+ public void startMustLoadContent() {
+ final InitDataDTO initData = Mockito.mock(InitDataDTO.class);
+ Mockito.when(history.getToken()).thenReturn("");
+ eventBus.fireEvent(new AppStartEvent(initData));
+ verifyGetServerContent();
+ }
+
+ private void verifyGetServerContent() {
+ Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+ (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
+ }
+}
Copied: trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java)
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+import cc.kune.core.shared.domain.utils.StateToken;
+
+public class StateTokenTest {
+
+ @Test
+ public void checkAllEmpty() {
+ final StateToken token = new StateToken("");
+ assertNull(token.getGroup());
+ assertNull(token.getTool());
+ assertNull(token.getFolder());
+ assertNull(token.getDocument());
+ }
+
+ @Test
+ public void checkEquals() {
+ final StateToken token1 = new StateToken("abc", "da", "1", "1");
+ final StateToken token2 = new StateToken("abc", "da", "1", "1");
+ assertEquals(token1, token2);
+ }
+
+ @Test
+ public void checkEqualsEncoded() {
+ final StateToken token1 = new StateToken("abc.da.1.1");
+ final StateToken token2 = new StateToken("abc.da.1.1");
+ assertEquals(token1, token2);
+ }
+
+ @Test
+ public void checkNoEquals() {
+ final StateToken token1 = new StateToken("abc", "da", "1", "1");
+ final StateToken token2 = new StateToken("abc", "da", 1L);
+ assertFalse(token1.equals(token2));
+ }
+
+ @Test
+ public void parseEncodedNotCatched() {
+ final StateToken token1 = new StateToken();
+ final StateToken token2 = new StateToken();
+ token1.getEncoded();
+ token2.getEncoded();
+ token1.setEncoded("abc.da.1.1");
+ token2.setEncoded("abc.da.1.2");
+ assertFalse(token1.equals(token2));
+ }
+}
Copied: trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java)
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -0,0 +1,154 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
+
+import cc.kune.core.client.state.SiteTokens;
+import cc.kune.core.client.state.TokenMatcher;
+import cc.kune.core.shared.dto.ReservedWordsRegistryDTO;
+
+public class TokenMatcherTest {
+
+ private static final String DEF_SITE_TOKEN = "";
+ private static final String GROUP_TOKEN = "site.docs.1";
+ private static final String GROUP_TOKEN_ONLY_PROJECT = "site";
+ private static final String GROUP_TOKEN_ONLY_PROJECT_AND_TOOL = "site.docs";
+ private static final String REDIRECT_LINK = "example.com/w+jsdKixyHhZA";
+ private static final String SIGNIN_TOKEN = "signin";
+ private static final String SIGNIN_TOKEN_WITH_REDIRECT = SIGNIN_TOKEN + "(" + REDIRECT_LINK + ")";
+ private static final String SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW = SIGNIN_TOKEN + "(" + SiteTokens.PREVIEW + "("
+ + REDIRECT_LINK + "))";
+ private static final String WAVE_TOKEN_SAMPLE1 = "example.com/w+abcd";
+ private static final String WAVE_TOKEN_SAMPLE2 = "example.com/w+abcd/~/conv+root";
+ private static final String WAVE_TOKEN_SAMPLE3 = "example.com/w+abcd/~/conv+root/b+45kg";
+ private TokenMatcher tokenMatcher;
+
+ @Before
+ public void before() {
+ final ReservedWordsRegistryDTO reservedWords = new ReservedWordsRegistryDTO();
+ reservedWords.add(SIGNIN_TOKEN);
+ tokenMatcher = new TokenMatcher(reservedWords);
+ tokenMatcher.init(JavaWaverefEncoder.INSTANCE);
+ }
+
+ private void dontMatchGroupToken(final String token) {
+ assertFalse("Expected '" + token + "' dont match isGroup", tokenMatcher.isGroupToken(token));
+ }
+
+ @Test
+ public void dontMatchRedirect() {
+ dontMatchWaveToken(SIGNIN_TOKEN_WITH_REDIRECT);
+ dontMatchGroupToken(SIGNIN_TOKEN_WITH_REDIRECT);
+ assertFalse(tokenMatcher.hasRedirect(SIGNIN_TOKEN));
+ }
+
+ private void dontMatchWaveToken(final String token) {
+ assertFalse("Expected '" + token + "' dont match isWaveToken", tokenMatcher.isWaveToken(token));
+ }
+
+ private void matchGroupToken(final String token) {
+ assertTrue("Expected '" + token + "' match isGroup", tokenMatcher.isGroupToken(token));
+ }
+
+ private void matchWaveToken(final String token) {
+ assertTrue("Expected '" + token + "' match isWaveToken", tokenMatcher.isWaveToken(token));
+ }
+
+ @Test
+ public void matchWaveToken2() {
+ matchWaveToken(WAVE_TOKEN_SAMPLE2);
+ dontMatchGroupToken(WAVE_TOKEN_SAMPLE2);
+ }
+
+ @Test
+ public void matchWaveToken3() {
+ matchWaveToken(WAVE_TOKEN_SAMPLE3);
+ dontMatchGroupToken(WAVE_TOKEN_SAMPLE3);
+ }
+
+ @Test
+ public void shouldDontMatchNull() {
+ dontMatchWaveToken(null);
+ dontMatchWaveToken("");
+ dontMatchGroupToken(null);
+ dontMatchGroupToken("");
+ }
+
+ @Test
+ public void shouldExtractRedirect() {
+ assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT));
+ assertEquals(SIGNIN_TOKEN, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getLeft());
+ assertEquals(REDIRECT_LINK, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight());
+ }
+
+ @Test
+ public void shouldExtractRedirectInSignPreview() {
+ assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW));
+ assertEquals(
+ "Expected " + SIGNIN_TOKEN + " but: "
+ + tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft(), SIGNIN_TOKEN,
+ tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft());
+ // assertEquals(REDIRECT_LINK,
+ // tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight());
+ }
+
+ @Test
+ public void shoulMatchCompleteToken() {
+ matchGroupToken(GROUP_TOKEN);
+ dontMatchWaveToken(GROUP_TOKEN);
+ }
+
+ @Test
+ public void shoulMatchGroupToken() {
+ matchGroupToken(GROUP_TOKEN_ONLY_PROJECT);
+ dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT);
+ }
+
+ @Test
+ public void shoulMatchGroupToolToken() {
+ matchGroupToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL);
+ dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL);
+ }
+
+ @Test
+ public void testDefSiteTokenDontMatch() {
+ dontMatchWaveToken(DEF_SITE_TOKEN);
+ dontMatchGroupToken(DEF_SITE_TOKEN);
+ }
+
+ @Test
+ public void testMatchWaveToken1() {
+ matchWaveToken(WAVE_TOKEN_SAMPLE1);
+ dontMatchGroupToken(WAVE_TOKEN_SAMPLE1);
+ }
+
+ @Test
+ public void testOtherSiteTokensDontMatch() {
+ dontMatchWaveToken(SIGNIN_TOKEN);
+ dontMatchGroupToken(SIGNIN_TOKEN);
+ }
+}
Modified: trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -30,7 +30,6 @@
import cc.kune.core.client.errors.MoveOnSameContainerException;
import cc.kune.core.client.errors.NameInUseException;
import cc.kune.core.server.PersistencePreLoadedDataTest;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.domain.BasicMimeType;
import cc.kune.domain.Content;
Modified: trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -34,7 +34,6 @@
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.client.errors.UserRegistrationException;
import cc.kune.core.server.PersistencePreLoadedDataTest;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.shared.dto.GroupType;
import cc.kune.domain.AccessLists;
import cc.kune.domain.Group;
Modified: trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -29,7 +29,7 @@
import cc.kune.core.server.PersistencePreLoadedDataTest;
import cc.kune.core.server.manager.TagManager;
-import cc.kune.core.server.manager.TagUserContentManagerDefault;
+import cc.kune.core.server.manager.impl.TagUserContentManagerDefault;
import cc.kune.domain.Tag;
import cc.kune.domain.TagUserContent;
import cc.kune.domain.finders.TagUserContentFinder;
Modified: trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -34,7 +34,6 @@
import cc.kune.core.client.errors.GroupShortNameInUseException;
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.server.PersistencePreLoadedDataTest;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.domain.Group;
import cc.kune.domain.User;
Modified: trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java
===================================================================
--- trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -25,9 +25,9 @@
import org.junit.Test;
import org.mockito.Mockito;
-import cc.kune.core.client.state.EventBusTester;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.impl.EventBusTester;
import cc.kune.core.shared.domain.TagCloudResult;
import cc.kune.core.shared.domain.TagCount;
import cc.kune.core.shared.dto.StateContainerDTO;
Modified: trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java
===================================================================
--- trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -23,8 +23,8 @@
import org.junit.Test;
import org.mockito.Mockito;
-import cc.kune.core.client.state.EventBusTester;
import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.impl.EventBusTester;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorProxy;
import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorView;
Modified: trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -37,6 +37,8 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
+import cc.kune.wave.server.kspecific.KuneAgent;
+
import com.google.common.collect.Lists;
import com.google.wave.api.Wavelet;
Modified: trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655)
+++ trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656)
@@ -40,6 +40,7 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.integration.IntegrationTest;
import cc.kune.core.server.integration.IntegrationTestHelper;
+import cc.kune.wave.server.kspecific.KuneWaveService;
import com.google.inject.Inject;
import com.google.wave.api.Element;
1
0
r1655 - in trunk/src/main/java/cc/kune: core/client/auth core/client/events core/client/state core/client/ui core/server core/server/notifier core/server/tool wave/server
by Vicente J. Ruiz Jurado 06 Jan '12
by Vicente J. Ruiz Jurado 06 Jan '12
06 Jan '12
Author: vjrj_
Date: 2012-01-06 21:54:28 +0100 (Fri, 06 Jan 2012)
New Revision: 1655
Modified:
trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java
trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java
trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java
trunk/src/main/java/cc/kune/core/client/ui/ContentPosition.java
trunk/src/main/java/cc/kune/core/server/InitData.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java
trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
Log:
Dep refactorization
Modified: trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -19,10 +19,10 @@
*/
package cc.kune.core.client.auth;
-import cc.kune.common.client.log.Log;
-import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.events.StackErrorEvent;
import cc.kune.gspace.client.GSpaceArmor;
+import com.google.gwt.event.shared.EventBus;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
@@ -35,65 +35,68 @@
public class WaveClientSimpleAuthenticator {
- private final GSpaceArmor wsArmor;
+ private final EventBus eventBus;
+ private final GSpaceArmor wsArmor;
- @Inject
- public WaveClientSimpleAuthenticator(final GSpaceArmor wsArmor) {
- this.wsArmor = wsArmor;
- }
+ @Inject
+ public WaveClientSimpleAuthenticator(final GSpaceArmor wsArmor, final EventBus eventBus) {
+ this.wsArmor = wsArmor;
+ this.eventBus = eventBus;
+ }
- public void doLogin(final String userWithoutDomain, final String passwd, final AsyncCallback<Void> callback) {
- final RequestBuilder request = new RequestBuilder(RequestBuilder.POST, "/auth/signin");
- final StringBuffer params = new StringBuffer();
- params.append("address=");
- params.append(URL.encodeQueryString(userWithoutDomain));
- params.append("&password=");
- params.append(URL.encodeQueryString(passwd));
- params.append("&signIn=");
- params.append(URL.encodeQueryString("Sign in"));
- try {
- request.setHeader("Content-Type", "application/x-www-form-urlencoded");
- request.sendRequest(params.toString(), new RequestCallback() {
- @Override
- public void onError(final Request request, final Throwable exception) {
- NotifyUser.error(exception.getStackTrace().toString(), true);
- callback.onFailure(exception);
- }
+ public void doLogin(final String userWithoutDomain, final String passwd,
+ final AsyncCallback<Void> callback) {
+ final RequestBuilder request = new RequestBuilder(RequestBuilder.POST, "/auth/signin");
+ final StringBuffer params = new StringBuffer();
+ params.append("address=");
+ params.append(URL.encodeQueryString(userWithoutDomain));
+ params.append("&password=");
+ params.append(URL.encodeQueryString(passwd));
+ params.append("&signIn=");
+ params.append(URL.encodeQueryString("Sign in"));
+ try {
+ request.setHeader("Content-Type", "application/x-www-form-urlencoded");
+ request.sendRequest(params.toString(), new RequestCallback() {
+ @Override
+ public void onError(final Request request, final Throwable exception) {
+ StackErrorEvent.fire(eventBus, exception);
+ callback.onFailure(exception);
+ }
- @Override
- public void onResponseReceived(final Request request, final Response response) {
- callback.onSuccess(null);
- }
- });
- } catch (final RequestException e) {
- Log.error(e.getStackTrace().toString());
+ @Override
+ public void onResponseReceived(final Request request, final Response response) {
+ callback.onSuccess(null);
}
+ });
+ } catch (final RequestException e) {
+ StackErrorEvent.fire(eventBus, e);
}
+ }
- public void doLogout(final AsyncCallback<Void> callback) {
- // Original: <a href=\"/auth/signout?r=/\">"
- final RequestBuilder request = new RequestBuilder(RequestBuilder.GET, "/auth/signout");
- try {
- request.setHeader("Content-Type", "application/x-www-form-urlencoded");
- final StringBuffer params = new StringBuffer();
- request.sendRequest(params.toString(), new RequestCallback() {
- @Override
- public void onError(final Request request, final Throwable exception) {
- NotifyUser.error(exception.getStackTrace().toString(), true);
- callback.onFailure(exception);
- }
+ public void doLogout(final AsyncCallback<Void> callback) {
+ // Original: <a href=\"/auth/signout?r=/\">"
+ final RequestBuilder request = new RequestBuilder(RequestBuilder.GET, "/auth/signout");
+ try {
+ request.setHeader("Content-Type", "application/x-www-form-urlencoded");
+ final StringBuffer params = new StringBuffer();
+ request.sendRequest(params.toString(), new RequestCallback() {
+ @Override
+ public void onError(final Request request, final Throwable exception) {
+ StackErrorEvent.fire(eventBus, exception);
+ callback.onFailure(exception);
+ }
- @Override
- public void onResponseReceived(final Request request, final Response response) {
- callback.onSuccess(null);
- }
- });
- } catch (final RequestException e) {
- Log.error(e.getStackTrace().toString());
+ @Override
+ public void onResponseReceived(final Request request, final Response response) {
+ callback.onSuccess(null);
}
+ });
+ } catch (final RequestException e) {
+ StackErrorEvent.fire(eventBus, e);
}
+ }
- public String getCookieTokenValue() {
- return Cookies.getCookie("JSESSIONID");
- }
+ public String getCookieTokenValue() {
+ return Cookies.getCookie("JSESSIONID");
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -94,8 +94,8 @@
@Override
public int hashCode() {
int hashCode = 23;
- hashCode = (hashCode * 37) + new Integer(count).hashCode();
- hashCode = (hashCode * 37) + new Boolean(greater).hashCode();
+ hashCode = (hashCode * 37) + Integer.valueOf(count).hashCode();
+ hashCode = (hashCode * 37) + Boolean.valueOf(greater).hashCode();
return hashCode;
}
Modified: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -104,7 +104,7 @@
if (countriesArray == null) {
countriesArray = mapCountries();
}
- return countriesArray;
+ return countriesArray.clone();
}
@Override
@@ -192,7 +192,7 @@
if (languagesArray == null) {
languagesArray = mapLangs();
}
- return languagesArray;
+ return languagesArray.clone();
}
@Override
@@ -216,7 +216,7 @@
if (timezonesArray == null) {
mapTimezones();
}
- return timezonesArray;
+ return timezonesArray.clone();
}
@Override
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -267,7 +267,7 @@
// Log.debug("Is not a special hash");
// token is not one of #newgroup #signin #translate ...
final String nToken = newHistoryToken != null ? newHistoryToken.toLowerCase() : null;
- if (tokenMatcher.hasRedirect(nToken)) {
+ if (nToken != null && tokenMatcher.hasRedirect(nToken)) {
final Pair<String, String> redirect = tokenMatcher.getRedirect(nToken);
final String firstToken = redirect.getLeft();
final String sndToken = redirect.getRight();
Modified: trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -25,7 +25,7 @@
import com.google.gwt.event.shared.HasHandlers;
import com.gwtplatform.mvp.client.HasEventBus;
-public class UserSignOutEvent extends GwtEvent<UserSignOutEvent.UserSignOutHandler> {
+public class UserSignOutEvent extends GwtEvent<UserSignOutEvent.UserSignOutHandler> {
public interface HasUserSignOutHandlers extends HasHandlers {
HandlerRegistration addUserSignOutHandler(UserSignOutHandler handler);
@@ -37,7 +37,7 @@
private static final Type<UserSignOutHandler> TYPE = new Type<UserSignOutHandler>();
- public static void fire(HasEventBus source) {
+ public static void fire(final HasEventBus source) {
source.fireEvent(new UserSignOutEvent());
}
@@ -45,31 +45,28 @@
return TYPE;
}
-
public UserSignOutEvent() {
}
@Override
- public Type<UserSignOutHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- protected void dispatch(UserSignOutHandler handler) {
+ protected void dispatch(final UserSignOutHandler handler) {
handler.onUserSignOut(this);
}
@Override
- public boolean equals(Object other) {
+ public boolean equals(final Object other) {
if (other != null && other.getClass().equals(this.getClass())) {
- UserSignOutEvent o = (UserSignOutEvent) other;
- return true
- ;
+ return true;
}
return false;
}
@Override
+ public Type<UserSignOutHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
public int hashCode() {
int hashCode = 23;
hashCode = (hashCode * 37) + getClass().hashCode();
@@ -78,8 +75,7 @@
@Override
public String toString() {
- return "UserSignOutEvent["
- + "]";
+ return "UserSignOutEvent[" + "]";
}
}
Modified: trunk/src/main/java/cc/kune/core/client/ui/ContentPosition.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/ContentPosition.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/client/ui/ContentPosition.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -35,7 +35,7 @@
public static final String RIGHT = "right";
private static I18nTranslationService i18n;
private static Object[][] positionObjs;
- public static final String[][] POSITIONS = { new String[] { LEFT }, new String[] { CENTER }, new String[] { RIGHT } };
+ protected static final String[][] POSITIONS = { new String[] { LEFT }, new String[] { CENTER }, new String[] { RIGHT } };
public synchronized static Object[][] getPositions() {
if (positionObjs == null) {
Modified: trunk/src/main/java/cc/kune/core/server/InitData.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/InitData.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/server/InitData.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -58,7 +58,6 @@
private String oggEmbedObject;
private ReservedWordsRegistryDTO reservedWords;
private String siteCommonName;
- private String siteDomain;
private String siteLogoUrl;
private String siteLogoUrlOnOver;
private String siteShortName;
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -1,6 +1,7 @@
package cc.kune.core.server.notifier;
import cc.kune.core.server.mail.FormatedString;
+import cc.kune.domain.User;
/**
* The Interface NotifySender.
@@ -21,10 +22,10 @@
* @param isHtml
* if the body is html
* @param recipients
- * the recipients shortnames (without domain)
+ * the recipients
*/
void send(NotifyType notifyType, FormatedString subject, FormatedString body, boolean isHtml,
- String... recipients);
+ User... recipients);
/**
* Send a message to the recipients (also translate the subject/body using the
@@ -38,8 +39,8 @@
* the body of the message (no translated) but with some %s
* {@link String.format} args
* @param recipients
- * the recipients shortnames (without domain)
+ * the recipients
*/
- void send(NotifyType notifyType, FormatedString subject, FormatedString body, String... recipients);
+ void send(NotifyType notifyType, FormatedString subject, FormatedString body, User... recipients);
}
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -3,8 +3,6 @@
import java.io.File;
import java.io.IOException;
-import javax.persistence.NoResultException;
-
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -13,7 +11,6 @@
import cc.kune.core.server.mail.FormatedString;
import cc.kune.core.server.mail.MailService;
import cc.kune.core.server.manager.I18nTranslationManager;
-import cc.kune.core.server.manager.UserManager;
import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.xmpp.XmppManager;
import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
@@ -30,18 +27,16 @@
private final String emailTemplate;
private final I18nTranslationManager i18n;
private final MailService mailService;
- private final UserManager userManager;
private final KuneWaveService waveService;
private final XmppManager xmppManager;
@Inject
public NotifySenderDefault(final MailService mailService, final KuneWaveService waveService,
- final XmppManager xmppManager, final UserManager userManager, final I18nTranslationManager i18n,
+ final XmppManager xmppManager, final I18nTranslationManager i18n,
final KuneProperties kuneProperties) throws IOException {
this.mailService = mailService;
this.waveService = waveService;
this.xmppManager = xmppManager;
- this.userManager = userManager;
this.i18n = i18n;
emailTemplate = FileUtils.readFileToString(new File(
kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
@@ -51,15 +46,9 @@
@Override
public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final boolean isHtml, final String... recipients) {
- for (final String recipient : recipients) {
- User user;
- try {
- user = userManager.findByShortname(recipient);
- } catch (final NoResultException e) {
- LOG.info(String.format("The recipient %s is not a local user, don't notify", recipient));
- continue;
- }
+ final boolean isHtml, final User... recipients) {
+ for (final User user : recipients) {
+ final String username = user.getShortName();
if (subject.shouldBeTranslated()) {
// Translate per recipient language
final String subjectTranslation = i18n.getTranslation(user.getLanguage().getCode(),
@@ -79,7 +68,7 @@
}
switch (notifyType) {
case chat:
- xmppManager.sendMessage(recipient,
+ xmppManager.sendMessage(username,
String.format("<b>%s</b>%s", subject.getString(), body.getString()));
break;
case email:
@@ -94,7 +83,7 @@
if (isHtml) {
LOG.error("Wave html messages not supported yet");
}
- waveService.createWave(subject.getString(), body.getString(), recipient);
+ waveService.createWave(subject.getString(), body.getString(), username);
break;
}
}
@@ -102,7 +91,7 @@
@Override
public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final String... dests) {
+ final User... dests) {
send(notifyType, subject, body, false, dests);
}
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -1,13 +1,19 @@
package cc.kune.core.server.notifier;
import java.util.Collection;
-import java.util.List;
+import java.util.HashSet;
import java.util.Set;
+import javax.persistence.NoResultException;
+
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import cc.kune.core.server.mail.FormatedString;
import cc.kune.domain.Group;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.UserFinder;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -15,40 +21,69 @@
@Singleton
public class NotifyService {
+ public static final Log LOG = LogFactory.getLog(NotifyService.class);
private final NotifyHtmlHelper helper;
private final NotifySender sender;
+ private final UserFinder userFinder;
@Inject
- NotifyService(final NotifySender sender, final NotifyHtmlHelper helper) {
+ NotifyService(final NotifySender sender, final NotifyHtmlHelper helper, final UserFinder userFinder) {
this.sender = sender;
this.helper = helper;
+ this.userFinder = userFinder;
}
+ private void getAllUserMembers(final Set<User> users, final Group groupToNotify,
+ final boolean onlyAdmins) {
+ final Collection<Group> members;
+ final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
+ if (onlyAdmins) {
+ members = admins;
+ } else {
+ final Set<Group> collabs = groupToNotify.getSocialNetwork().getAccessLists().getEditors().getList();
+ members = CollectionUtils.union(admins, collabs);
+ }
+ for (final Group member : members) {
+ if (member.isPersonal()) {
+ final String shortName = member.getShortName();
+ try {
+ final User user = userFinder.findByShortName(shortName);
+ users.add(user);
+ } catch (final NoResultException e) {
+ LOG.error(String.format("This personal group %s is not a local user", shortName));
+ }
+ } else {
+ // Is a group, so go recursively
+ getAllUserMembers(users, member, onlyAdmins);
+ }
+ }
+
+ }
+
@SuppressWarnings("unchecked")
public void notifyGroup(final Group groupToNotify, final Group groupSender, final String subject,
final String message) {
- final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
- final Set<Group> collabs = groupToNotify.getSocialNetwork().getAccessLists().getEditors().getList();
- final List<Group> groups = (List<Group>) CollectionUtils.union(admins, collabs);
- notifyToAll(groupSender, subject, message, groups);
+ final Set<User> members = new HashSet<User>();
+ getAllUserMembers(members, groupToNotify, false);
+ notifyToAll(groupSender, subject, message, members);
}
public void notifyGroupAdmins(final Group groupToNotify, final Group groupSender,
final String subject, final String message) {
- final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
- notifyToAll(groupSender, subject, message, admins);
+ final Set<User> adminMembers = new HashSet<User>();
+ getAllUserMembers(adminMembers, groupToNotify, true);
+ notifyToAll(groupSender, subject, message, adminMembers);
}
private void notifyToAll(final Group groupSender, final String subject, final String message,
- final Collection<Group> groups) {
- for (final Group to : groups) {
+ final Collection<User> users) {
+ for (final User to : users) {
sender.send(NotifyType.email, FormatedString.build(subject),
- helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message),
- to.getShortName());
+ helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message), to);
}
}
- public void notifyUser(final String to, final Group group, final String subject, final String message) {
+ public void notifyUser(final User to, final Group group, final String subject, final String message) {
sender.send(NotifyType.email, FormatedString.build(subject),
helper.groupNotification(group.getShortName(), group.hasLogo(), message), to);
}
Modified: trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -34,7 +34,7 @@
@Singleton
public class ServerToolRegistry {
- public static List<String> emptyToolList = new ArrayList<String>();
+ public static final List<String> emptyToolList = new ArrayList<String>();
static Log log = LogFactory.getLog(ServerToolRegistry.class);
Modified: trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-03 01:47:18 UTC (rev 1654)
+++ trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-06 20:54:28 UTC (rev 1655)
@@ -1,5 +1,7 @@
package cc.kune.wave.server;
+import javax.persistence.NoResultException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.waveprotocol.box.common.DeltaSequence;
@@ -23,6 +25,8 @@
import cc.kune.core.server.notifier.NotifyType;
import cc.kune.core.server.notifier.UsersOnline;
import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.UserFinder;
import com.google.inject.Inject;
@@ -33,7 +37,7 @@
@Inject
public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService,
final UsersOnline usersOnline, final KuneBasicProperties basicProperties,
- final ParticipantUtils partUtils) {
+ final ParticipantUtils partUtils, final UserFinder userFinder) {
waveBus.subscribe(new Subscriber() {
@Override
public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) {
@@ -48,20 +52,25 @@
for (final TransformedWaveletDelta delta : deltas) {
for (final WaveletOperation op : delta) {
if (op instanceof AddParticipant) {
- final ParticipantId user = ((AddParticipant) op).getParticipantId();
+ final ParticipantId participant = ((AddParticipant) op).getParticipantId();
final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId));
final FormatedString body = FormatedString.build(
"Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>",
basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url);
- final String address = user.getAddress();
+ final String address = participant.getAddress();
if (partUtils.isLocal(address)) {
final String userName = partUtils.getAddressName(address);
// FIXME only for testing
- if (true || !usersOnline.isLogged(userName)) {
- notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
- body, true, userName);
- notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true,
- userName);
+ try {
+ final User user = userFinder.findByShortName(userName);
+ if (true || !usersOnline.isLogged(userName)) {
+ notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
+ body, true, user);
+ notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true,
+ user);
+ }
+ } catch (final NoResultException e) {
+ // Seems is not a local user
}
}
} else if (op instanceof WaveletBlipOperation) {
1
0
r1654 - in trunk/src/main/java/cc/kune: client core/client core/client/auth core/client/groups/newgroup core/client/state core/server core/server/error core/server/manager/impl core/server/properties core/server/rack core/server/rack/filters/rest gspace/client
by Vicente J. Ruiz Jurado 03 Jan '12
by Vicente J. Ruiz Jurado 03 Jan '12
03 Jan '12
Author: vjrj_
Date: 2012-01-03 02:47:18 +0100 (Tue, 03 Jan 2012)
New Revision: 1654
Added:
trunk/src/main/java/cc/kune/core/server/error/
trunk/src/main/java/cc/kune/core/server/error/ServerException.java
Removed:
trunk/src/main/java/cc/kune/core/server/ServerException.java
Modified:
trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
trunk/src/main/java/cc/kune/core/client/CoreParts.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java
trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java
trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java
trunk/src/main/java/cc/kune/core/server/manager/impl/ServerManagerException.java
trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java
trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
trunk/src/main/java/cc/kune/core/server/rack/filters/rest/JSONLibRESTSerializer.java
trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTMethod.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
Log:
Removing some dep. cycles
Modified: trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -19,19 +19,26 @@
*/
package cc.kune.client;
+import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.groups.newgroup.NewGroup;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokenListeners;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class OnAppStartFactory {
@Inject
- public OnAppStartFactory(final Session session) {
+ public OnAppStartFactory(final Session session, final Provider<NewGroup> newGroup,
+ final Provider<SignIn> signIn, final SiteTokenListeners tokenListener) {
session.onAppStart(true, new AppStartHandler() {
@Override
public void onAppStart(final AppStartEvent event) {
+ newGroup.get();
+ //
}
});
}
Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -20,16 +20,27 @@
package cc.kune.core.client;
import cc.kune.core.client.auth.AnonUsersManager;
+import cc.kune.core.client.auth.Register;
+import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.groups.newgroup.NewGroup;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.sitebar.AboutKuneDialog;
import cc.kune.core.client.sitebar.SiteUserOptionsPresenter;
+import cc.kune.core.client.sitebar.spaces.Space;
+import cc.kune.core.client.sitebar.spaces.SpaceSelectEvent;
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter;
import cc.kune.core.client.sn.GroupSNPresenter;
import cc.kune.core.client.sn.UserSNPresenter;
import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
import cc.kune.core.client.sn.actions.registry.UserSNConfActions;
+import cc.kune.core.client.state.HistoryTokenCallback;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokenListeners;
+import cc.kune.core.client.state.SiteTokens;
+import cc.kune.core.client.sub.SubtitlesManager;
+import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -41,7 +52,10 @@
final Provider<GroupSNConfActions> groupMembersConfActions,
final Provider<UserSNConfActions> userSNConfActions, final Provider<AnonUsersManager> anonUsers,
final Provider<SiteUserOptionsPresenter> userOptions,
- final Provider<SpaceSelectorPresenter> spaceSelector) {
+ final Provider<SpaceSelectorPresenter> spaceSelector, final SiteTokenListeners tokenListener,
+ final Provider<SignIn> signIn, final Provider<Register> register,
+ final Provider<AboutKuneDialog> aboutKuneDialog, final Provider<NewGroup> newGroup,
+ final Provider<SubtitlesManager> subProvider, final EventBus eventBus) {
session.onAppStart(true, new AppStartHandler() {
@Override
public void onAppStart(final AppStartEvent event) {
@@ -54,5 +68,48 @@
spaceSelector.get();
}
});
+ tokenListener.put(SiteTokens.SIGNIN, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ signIn.get().showSignInDialog();
+ }
+ });
+ tokenListener.put(SiteTokens.ABOUTKUNE, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ // FIXME, something to come back
+ aboutKuneDialog.get().showCentered();
+ }
+ });
+ tokenListener.put(SiteTokens.REGISTER, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ register.get().doRegister();
+ }
+ });
+ tokenListener.put(SiteTokens.NEWGROUP, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ newGroup.get().doNewGroup();
+ }
+ });
+ tokenListener.put(SiteTokens.SUBTITLES, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ subProvider.get().show(token);
+ }
+ });
+ tokenListener.put(SiteTokens.HOME, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ SpaceSelectEvent.fire(eventBus, Space.homeSpace);
+ }
+ });
+ tokenListener.put(SiteTokens.WAVEINBOX, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ SpaceSelectEvent.fire(eventBus, Space.userSpace);
+ }
+ });
}
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -120,7 +120,6 @@
@Override
public void onSuccess(final Void arg) {
-
final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
@Override
public void onFailure(final Throwable caught) {
Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -29,9 +29,7 @@
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.HistoryTokenCallback;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.GroupType;
@@ -64,12 +62,10 @@
}
private final GroupOptions groupOptions;
-
private final Provider<GroupServiceAsync> groupService;
private final I18nTranslationService i18n;
private final Session session;
private final Provider<SignIn> signIn;
-
private final StateManager stateManager;
@Inject
@@ -84,12 +80,6 @@
this.groupService = groupService;
this.signIn = signIn;
this.groupOptions = groupOptions;
- stateManager.addSiteToken(SiteTokens.NEWGROUP, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- doNewGroup();
- }
- });
}
@Override
Modified: trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -21,97 +21,6 @@
import java.util.HashMap;
-import cc.kune.core.client.auth.Register;
-import cc.kune.core.client.auth.SignIn;
-import cc.kune.core.client.groups.newgroup.NewGroup;
-import cc.kune.core.client.sitebar.AboutKuneDialog;
-import cc.kune.core.client.sitebar.spaces.Space;
-import cc.kune.core.client.sitebar.spaces.SpaceSelectEvent;
-import cc.kune.core.client.sub.SubtitlesManager;
-import cc.kune.gspace.client.i18n.I18nTranslator;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
@SuppressWarnings("serial")
public class SiteTokenListeners extends HashMap<String, HistoryTokenCallback> {
- private final Provider<AboutKuneDialog> aboutKuneDialog;
- private final EventBus eventBus;
- private final Provider<NewGroup> newGroup;
- private final Provider<Register> register;
- private final Session session;
- private final Provider<SignIn> signIn;
- private final Provider<SubtitlesManager> subProvider;
- private final Provider<I18nTranslator> translator;
-
- @Inject
- public SiteTokenListeners(final Session session, final EventBus eventBus,
- final Provider<SignIn> signIn, final Provider<Register> register,
- final Provider<NewGroup> newGroup, final Provider<AboutKuneDialog> aboutKuneDialog,
- final Provider<I18nTranslator> translator, final Provider<SubtitlesManager> subProvider) {
- this.session = session;
- this.eventBus = eventBus;
- this.signIn = signIn;
- this.register = register;
- this.newGroup = newGroup;
- this.aboutKuneDialog = aboutKuneDialog;
- this.translator = translator;
- this.subProvider = subProvider;
- putValues();
- }
-
- private void putValues() {
- put(SiteTokens.HOME, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- SpaceSelectEvent.fire(eventBus, Space.homeSpace);
- }
- });
- put(SiteTokens.WAVEINBOX, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- SpaceSelectEvent.fire(eventBus, Space.userSpace);
- }
- });
- put(SiteTokens.SIGNIN, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- signIn.get().showSignInDialog();
- }
- });
- put(SiteTokens.REGISTER, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- register.get().doRegister();
- }
- });
- put(SiteTokens.NEWGROUP, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- newGroup.get().doNewGroup();
- }
- });
- put(SiteTokens.ABOUTKUNE, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- // FIXME, something to come back
- aboutKuneDialog.get().showCentered();
- }
- });
- put(SiteTokens.TRANSLATE, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- if (session.isLogged() && session.getInitData().isTranslatorEnabled()) {
- translator.get().show();
- }
- }
- });
- put(SiteTokens.SUBTITLES, new HistoryTokenCallback() {
- @Override
- public void onHistoryToken(final String token) {
- subProvider.get().show(token);
- }
- });
- }
}
Modified: trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -19,6 +19,7 @@
*/
package cc.kune.core.server;
+import cc.kune.core.server.error.ServerException;
import cc.kune.core.server.init.DatabaseInitializer;
import com.google.inject.Inject;
Deleted: trunk/src/main/java/cc/kune/core/server/ServerException.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/ServerException.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/ServerException.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -1,50 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.server;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class ServerException extends RuntimeException {
-
- private static final long serialVersionUID = 2028618233098694418L;
-
- private static final Log LOG = LogFactory.getLog(ServerException.class);
-
- public ServerException() {
- super();
- }
-
- public ServerException(final String text) {
- super(text);
- LOG.error(text);
- }
-
- public ServerException(final String text, final Throwable cause) {
- super(text, cause);
- LOG.error(text, cause);
- }
-
- public ServerException(final Throwable cause) {
- super(cause);
- LOG.error("ServerManagerException", cause);
- }
-
-}
Copied: trunk/src/main/java/cc/kune/core/server/error/ServerException.java (from rev 1647, trunk/src/main/java/cc/kune/core/server/ServerException.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/error/ServerException.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/error/ServerException.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.server.error;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ServerException extends RuntimeException {
+
+ private static final Log LOG = LogFactory.getLog(ServerException.class);
+
+ private static final long serialVersionUID = 2028618233098694418L;
+
+ public ServerException() {
+ super();
+ }
+
+ public ServerException(final String text) {
+ super(text);
+ LOG.error(text);
+ }
+
+ public ServerException(final String text, final Throwable cause) {
+ super(text, cause);
+ LOG.error(text, cause);
+ }
+
+ public ServerException(final Throwable cause) {
+ super(cause);
+ LOG.error("ServerException", cause);
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/ServerManagerException.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/ServerManagerException.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/ServerManagerException.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -19,7 +19,7 @@
*/
package cc.kune.core.server.manager.impl;
-import cc.kune.core.server.ServerException;
+import cc.kune.core.server.error.ServerException;
public class ServerManagerException extends ServerException {
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -29,8 +29,8 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.LastAdminInGroupException;
import cc.kune.core.client.errors.UserMustBeLoggedException;
-import cc.kune.core.server.ServerException;
import cc.kune.core.server.access.AccessRightsService;
+import cc.kune.core.server.error.ServerException;
import cc.kune.core.server.manager.SocialNetworkManager;
import cc.kune.core.server.manager.UserManager;
import cc.kune.core.shared.domain.AdmissionType;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -52,12 +52,11 @@
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.client.errors.UserRegistrationException;
import cc.kune.core.client.errors.WrongCurrentPasswordException;
-import cc.kune.core.server.mail.FormatedString;
-import cc.kune.core.server.mail.MailService;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.I18nCountryManager;
import cc.kune.core.server.manager.I18nLanguageManager;
import cc.kune.core.server.manager.UserManager;
+import cc.kune.core.server.notifier.NotifyService;
import cc.kune.core.server.properties.ChatProperties;
import cc.kune.core.server.properties.KuneBasicProperties;
import cc.kune.core.server.xmpp.ChatConnection;
@@ -89,7 +88,7 @@
private final I18nTranslationService i18n;
private final KuneWaveService kuneWaveManager;
private final I18nLanguageManager languageManager;
- private final MailService mailService;
+ private final NotifyService notifyService;
private final ParticipantUtils participantUtils;
private final KuneBasicProperties properties;
private final UserFinder userFinder;
@@ -104,7 +103,7 @@
final I18nTranslationService i18n, final CustomUserRegistrationServlet waveUserRegister,
final AccountStore waveAccountStore, final KuneWaveService kuneWaveManager,
final ParticipantUtils participantUtils, final KuneBasicProperties properties,
- final GroupManager groupManager, final MailService mailService) {
+ final GroupManager groupManager, final NotifyService notifyService) {
super(provider, User.class);
this.userFinder = finder;
this.languageManager = languageManager;
@@ -118,7 +117,7 @@
this.participantUtils = participantUtils;
this.properties = properties;
this.groupManager = groupManager;
- this.mailService = mailService;
+ this.notifyService = notifyService;
}
@Override
@@ -211,7 +210,10 @@
// Is this necessary? try to remove (used when we were setting the def
// content
// contentManager.save(userGroup.getDefaultContent());
- mailService.sendPlain(new FormatedString("Welcome", ""), new FormatedString("welcome"), email);
+
+ // FIXME: notifyService.
+ // mailService.sendPlain(new FormatedString("Welcome", ""), new
+ // FormatedString("welcome"), email);
return user;
} catch (final RuntimeException e) {
try {
Modified: trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -27,7 +27,7 @@
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.SystemConfiguration;
-import cc.kune.core.server.ServerException;
+import cc.kune.core.server.error.ServerException;
import com.google.inject.Inject;
import com.google.inject.Singleton;
Modified: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -35,7 +35,7 @@
import org.quartz.SchedulerException;
import org.waveprotocol.box.server.rpc.ServerRpcProvider;
-import cc.kune.core.server.ServerException;
+import cc.kune.core.server.error.ServerException;
import cc.kune.core.server.rack.dock.Dock;
import cc.kune.core.server.rack.dock.RequestMatcher;
import cc.kune.core.server.scheduler.CronServerTasksManager;
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/rest/JSONLibRESTSerializer.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/rest/JSONLibRESTSerializer.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/rest/JSONLibRESTSerializer.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -23,7 +23,7 @@
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
-import cc.kune.core.server.ServerException;
+import cc.kune.core.server.error.ServerException;
public class JSONLibRESTSerializer implements RESTSerializer {
private final JsonConfig config;
Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTMethod.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTMethod.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTMethod.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -21,7 +21,7 @@
import java.lang.reflect.Method;
-import cc.kune.core.server.ServerException;
+import cc.kune.core.server.error.ServerException;
public class RESTMethod {
public static final String FORMAT_JSON = "json";
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-01-02 20:12:42 UTC (rev 1653)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-01-03 01:47:18 UTC (rev 1654)
@@ -23,9 +23,13 @@
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
import cc.kune.core.client.sn.actions.WriteToBuddyHeaderButton;
+import cc.kune.core.client.state.HistoryTokenCallback;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokenListeners;
+import cc.kune.core.client.state.SiteTokens;
import cc.kune.gspace.client.actions.GiveUsFeedbackBtn;
import cc.kune.gspace.client.i18n.I18nToTranslateGridPanel;
+import cc.kune.gspace.client.i18n.I18nTranslator;
import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection;
import cc.kune.gspace.client.i18n.SiteOptionsI18nTranslatorAction;
import cc.kune.gspace.client.options.GroupOptions;
@@ -74,10 +78,8 @@
final Provider<GiveUsFeedbackBtn> giveUsFeedback,
final Provider<I18nToTranslateGridPanel> toTrans,
final Provider<I18nTranslatorTabsCollection> gtranslator,
- final Provider<WriteToBuddyHeaderButton> writeToBuddie
-
- ) {
-
+ final Provider<I18nTranslator> translator, final Provider<WriteToBuddyHeaderButton> writeToBuddie,
+ final SiteTokenListeners tokenListener) {
session.onAppStart(true, new AppStartHandler() {
@Override
public void onAppStart(final AppStartEvent event) {
@@ -123,5 +125,13 @@
writeToBuddie.get();
}
});
+ tokenListener.put(SiteTokens.TRANSLATE, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken(final String token) {
+ if (session.isLogged() && session.getInitData().isTranslatorEnabled()) {
+ translator.get().show();
+ }
+ }
+ });
}
}
1
0
Author: vjrj_
Date: 2012-01-02 21:12:42 +0100 (Mon, 02 Jan 2012)
New Revision: 1653
Added:
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiBinding.java
trunk/src/main/java/cc/kune/common/client/actions/ui/DefaultGuiProvider.java
trunk/src/main/java/cc/kune/common/client/actions/ui/GuiBinding.java
trunk/src/main/java/cc/kune/common/client/actions/ui/GuiChildBinding.java
trunk/src/main/java/cc/kune/common/client/actions/ui/GuiProvider.java
trunk/src/main/java/cc/kune/common/client/notify/ProgressHideEvent.java
trunk/src/main/java/cc/kune/common/client/notify/ProgressShowEvent.java
trunk/src/main/java/cc/kune/common/client/notify/UserNotifyEvent.java
trunk/src/main/java/cc/kune/common/client/notify/events/
trunk/src/main/java/cc/kune/core/client/events/GoHomeEvent.java
trunk/src/main/java/cc/kune/core/client/events/StackErrorEvent.java
trunk/src/main/java/cc/kune/core/client/events/UserMustBeLoggedEvent.java
trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java
trunk/src/main/java/cc/kune/core/client/state/StateTokenUtils.java
trunk/src/main/java/cc/kune/domain/ParticipationData.java
trunk/src/main/java/cc/kune/domain/SocialNetworkData.java
trunk/src/main/java/cc/kune/domain/UserBuddiesData.java
Removed:
trunk/src/main/java/cc/kune/common/client/actions/ui/bind/
trunk/src/main/java/cc/kune/common/client/events/
trunk/src/main/java/cc/kune/common/client/notify/events/ProgressHideEvent.java
trunk/src/main/java/cc/kune/common/client/notify/events/ProgressShowEvent.java
trunk/src/main/java/cc/kune/common/client/notify/events/UserNotifyEvent.java
trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java
trunk/src/main/java/cc/kune/domain/utils/ParticipationData.java
trunk/src/main/java/cc/kune/domain/utils/SocialNetworkData.java
trunk/src/main/java/cc/kune/domain/utils/UserBuddiesData.java
Modified:
trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/client/KuneGinjector.java
trunk/src/main/java/cc/kune/common/client/SampleGinModule.java
trunk/src/main/java/cc/kune/common/client/SampleGinjector.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtGuiProvider.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java
trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierPresenter.java
trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java
trunk/src/main/java/cc/kune/core/client/notify/spiner/SpinerPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java
trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java
trunk/src/main/java/cc/kune/core/server/manager/SocialNetworkManager.java
trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/state/StateAbstract.java
trunk/src/main/java/cc/kune/core/server/users/UserInfoServiceDefault.java
trunk/src/main/java/cc/kune/core/shared/FileConstants.java
trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java
trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
trunk/src/main/java/cc/kune/wave/client/WebClient.java
trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java
trunk/src/main/resources/dozerBeanMapping.xml
trunk/src/test/java/cc/kune/core/server/manager/impl/SocialNetworkManagerMoreTest.java
trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java
Log:
Refactorization solving dep cycles
Modified: trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -67,6 +67,7 @@
ginjector.getSpinerPresenter();
ginjector.getGlobalShortcutRegister().enable();
AsyncCallbackSimple.init(ginjector.getErrorHandler());
+ ginjector.getSessionExpirationManager();
ginjector.getEventLogger();
NotifyUser.init(ginjector.getEventBus(), ginjector.getI18n());
ginjector.getCorePresenter().get().forceReveal();
Modified: trunk/src/main/java/cc/kune/client/KuneGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneGinjector.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/client/KuneGinjector.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -26,7 +26,7 @@
import cc.kune.chat.client.ChatGinModule;
import cc.kune.chat.client.ChatGinjector;
import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.log.EventBusWithLogging;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
import cc.kune.common.shared.i18n.I18nTranslationService;
@@ -46,6 +46,7 @@
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter;
import cc.kune.core.client.sn.GroupSNPresenter;
import cc.kune.core.client.sn.UserSNPresenter;
+import cc.kune.core.client.state.SessionExpirationManager;
import cc.kune.core.client.state.SiteTokenListeners;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.TokenMatcher;
@@ -116,10 +117,10 @@
GwtGuiProvider getGwtGuiProvider();
+ HSpaceParts getHSpaceParts();
+
// GxtGuiProvider getGxtGuiProvider();
- HSpaceParts getHSpaceParts();
-
AsyncProvider<HSpacePresenter> getHSpacePresenter();
I18nTranslationService getI18n();
@@ -136,6 +137,8 @@
AsyncProvider<RegisterPresenter> getRegisterPresenter();
+ SessionExpirationManager getSessionExpirationManager();
+
AsyncProvider<SignInPresenter> getSignInPresenter();
AsyncProvider<SitebarActionsPresenter> getSitebarActionsPresenter();
Modified: trunk/src/main/java/cc/kune/common/client/SampleGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/SampleGinModule.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/SampleGinModule.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -21,8 +21,8 @@
import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
-import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.DefaultGuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.shortcuts.DefaultGlobalShortcutRegister;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
Modified: trunk/src/main/java/cc/kune/common/client/SampleGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/SampleGinjector.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/SampleGinjector.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -21,7 +21,7 @@
import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
import com.google.gwt.inject.client.GinModules;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtGuiProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtGuiProvider.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtGuiProvider.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,7 +19,7 @@
*/
package cc.kune.common.client.actions.gwtui;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuCheckItemDescriptor;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -21,7 +21,7 @@
import cc.kune.common.client.actions.ui.AbstractComposedGuiItem;
import cc.kune.common.client.actions.ui.AbstractGuiItem;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.shared.i18n.HasRTL;
import com.google.gwt.user.client.ui.HorizontalPanel;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,7 +20,7 @@
package cc.kune.common.client.actions.gxtui;
import cc.kune.common.client.actions.gwtui.GwtIconLabelGui;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuCheckItemDescriptor;
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -21,8 +21,6 @@
import java.util.List;
-import cc.kune.common.client.actions.ui.bind.GuiBinding;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.AbstractParentGuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
Copied: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiBinding.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/actions/ui/bind/AbstractGuiBinding.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiBinding.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiBinding.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,41 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.actions.ui;
+
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+
+public abstract class AbstractGuiBinding implements GuiBinding {
+
+ @Override
+ public AbstractGuiItem create(final GuiActionDescrip descriptor) { // NOPMD
+ // by
+ // vjrj
+ // on
+ // 18/01/11
+ // 0:47
+ return null;
+ }
+
+ @Override
+ public boolean shouldBeAdded() { // NOPMD by vjrj on 18/01/11 0:47
+ return true;
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -24,7 +24,6 @@
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.PropertyChangeEvent;
import cc.kune.common.client.actions.PropertyChangeListener;
-import cc.kune.common.client.actions.ui.bind.GuiBinding;
import cc.kune.common.client.actions.ui.descrip.DropTarget;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.errors.NotImplementedException;
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,7 +19,6 @@
*/
package cc.kune.common.client.actions.ui;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.shared.i18n.HasRTL;
import com.google.gwt.user.client.ui.FlowPanel;
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,7 +19,6 @@
*/
package cc.kune.common.client.actions.ui;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.shared.i18n.HasRTL;
import com.google.gwt.user.client.ui.HorizontalPanel;
Copied: trunk/src/main/java/cc/kune/common/client/actions/ui/DefaultGuiProvider.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/actions/ui/bind/DefaultGuiProvider.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/DefaultGuiProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/DefaultGuiProvider.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.actions.ui;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+import com.google.inject.Provider;
+
+public class DefaultGuiProvider implements GuiProvider {
+
+ private final Map<Class<?>, Provider<?>> map;
+
+ public DefaultGuiProvider() {
+ map = new HashMap<Class<?>, Provider<?>>();
+ }
+
+ @Override
+ public <T> GuiBinding get(final Class<T> classType) {
+ return (GuiBinding) map.get(classType).get();
+ }
+
+ @Override
+ public <T, Z> void register(final Class<T> classType, final Provider<Z> binding) {
+ map.put(classType, binding);
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/client/actions/ui/GuiBinding.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/actions/ui/bind/GuiBinding.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/GuiBinding.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/GuiBinding.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.actions.ui;
+
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+
+public interface GuiBinding {
+
+ AbstractGuiItem create(GuiActionDescrip descriptor);
+
+ boolean shouldBeAdded();
+
+}
Copied: trunk/src/main/java/cc/kune/common/client/actions/ui/GuiChildBinding.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/actions/ui/bind/GuiChildBinding.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/GuiChildBinding.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/GuiChildBinding.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.actions.ui;
+
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.common.client.errors.UIException;
+
+import com.google.gwt.user.client.ui.UIObject;
+
+public abstract class GuiChildBinding extends AbstractGuiBinding {
+
+ protected UIObject child;
+ protected ParentWidget parent;
+
+ @Override
+ public AbstractGuiItem create(final GuiActionDescrip descriptor) {
+ final int position = descriptor.getPosition();
+ if (descriptor.isChild()) {
+ // A menu item is a child, a toolbar separator, also. A button can
+ // be a child of a toolbar or not
+ parent = ((ParentWidget) descriptor.getParent().getValue(ParentWidget.PARENT_UI));
+ if (parent == null) {
+ throw new UIException("To add a item you need to add its parent before. Item: " + descriptor);
+ }
+ if (child != null) {
+ // Sometimes (menu/toolbar separators), there is no Widget to
+ // add/insert
+ if (position == GuiActionDescrip.NO_POSITION) {
+ parent.add(child);
+ } else {
+ parent.insert(position, child);
+ }
+ }
+ }
+ return super.create(descriptor);
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/client/actions/ui/GuiProvider.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/actions/ui/bind/GuiProvider.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/GuiProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/GuiProvider.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,31 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.actions.ui;
+
+
+import com.google.inject.Provider;
+
+public interface GuiProvider {
+
+ <T> GuiBinding get(final Class<T> classType);
+
+ <T, Z> void register(final Class<T> classType, final Provider<Z> provider);
+
+}
Modified: trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,9 +19,6 @@
*/
package cc.kune.common.client.notify;
-import cc.kune.common.client.events.ProgressHideEvent;
-import cc.kune.common.client.events.ProgressShowEvent;
-import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.utils.SimpleResponseCallback;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
Copied: trunk/src/main/java/cc/kune/common/client/notify/ProgressHideEvent.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/events/ProgressHideEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/notify/ProgressHideEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/notify/ProgressHideEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,81 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.notify;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class ProgressHideEvent extends GwtEvent<ProgressHideEvent.ProgressHideHandler> {
+
+ public interface HasProgressHideHandlers extends HasHandlers {
+ HandlerRegistration addProgressHideHandler(ProgressHideHandler handler);
+ }
+
+ public interface ProgressHideHandler extends EventHandler {
+ public void onProgressHide(ProgressHideEvent event);
+ }
+
+ private static final Type<ProgressHideHandler> TYPE = new Type<ProgressHideHandler>();
+
+ public static void fire(final HasHandlers source) {
+ source.fireEvent(new ProgressHideEvent());
+ }
+
+ public static Type<ProgressHideHandler> getType() {
+ return TYPE;
+ }
+
+ public ProgressHideEvent() {
+ }
+
+ @Override
+ protected void dispatch(final ProgressHideHandler handler) {
+ handler.onProgressHide(this);
+ }
+
+ @Override
+ public boolean equals(final Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ final ProgressHideEvent o = (ProgressHideEvent) other;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public Type<ProgressHideHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "ProgressHideEvent[" + "]";
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/common/client/notify/ProgressShowEvent.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/events/ProgressShowEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/notify/ProgressShowEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/notify/ProgressShowEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,93 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.notify;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class ProgressShowEvent extends GwtEvent<ProgressShowEvent.ProgressShowHandler> {
+
+ public interface HasProgressShowHandlers extends HasHandlers {
+ HandlerRegistration addProgressShowHandler(ProgressShowHandler handler);
+ }
+
+ public interface ProgressShowHandler extends EventHandler {
+ public void onProgressShow(ProgressShowEvent event);
+ }
+
+ private static final Type<ProgressShowHandler> TYPE = new Type<ProgressShowHandler>();
+
+ public static void fire(final HasHandlers source, final java.lang.String message) {
+ source.fireEvent(new ProgressShowEvent(message));
+ }
+
+ public static Type<ProgressShowHandler> getType() {
+ return TYPE;
+ }
+
+ private final java.lang.String message;
+
+ public ProgressShowEvent() {
+ this("");
+ }
+
+ public ProgressShowEvent(final java.lang.String message) {
+ this.message = message;
+ }
+
+ @Override
+ protected void dispatch(final ProgressShowHandler handler) {
+ handler.onProgressShow(this);
+ }
+
+ @Override
+ public boolean equals(final Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ final ProgressShowEvent o = (ProgressShowEvent) other;
+ return true && ((o.message == null && this.message == null) || (o.message != null && o.message.equals(this.message)));
+ }
+ return false;
+ }
+
+ @Override
+ public Type<ProgressShowHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public java.lang.String getMessage() {
+ return message;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ hashCode = (hashCode * 37) + (message == null ? 1 : message.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "ProgressShowEvent[" + message + "]";
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/common/client/notify/UserNotifyEvent.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/events/UserNotifyEvent.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/notify/UserNotifyEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/notify/UserNotifyEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,154 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.client.notify;
+
+
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class UserNotifyEvent extends GwtEvent<UserNotifyEvent.UserNotifyHandler> {
+
+ public interface HasUserNotifyHandlers extends HasHandlers {
+ HandlerRegistration addUserNotifyHandler(UserNotifyHandler handler);
+ }
+
+ public interface UserNotifyCloser {
+ public void close();
+ }
+
+ public interface UserNotifyHandler extends EventHandler {
+ public void onUserNotify(UserNotifyEvent event);
+ }
+
+ private static final Type<UserNotifyHandler> TYPE = new Type<UserNotifyHandler>();
+
+ public static void fire(final HasHandlers source, final NotifyLevel level,
+ final java.lang.String message) {
+ source.fireEvent(new UserNotifyEvent(level, "", message));
+ }
+
+ public static void fire(final HasHandlers source, final NotifyLevel level,
+ final java.lang.String message, final Boolean closeable) {
+ source.fireEvent(new UserNotifyEvent(level, "", message, closeable));
+ }
+
+ public static void fire(final HasHandlers source, final NotifyLevel level,
+ final java.lang.String title, final java.lang.String message) {
+ source.fireEvent(new UserNotifyEvent(level, title, message));
+ }
+
+ public static UserNotifyEvent fire(final HasHandlers source, final NotifyLevel level,
+ final java.lang.String title, final java.lang.String message, final Boolean closeable) {
+ final UserNotifyEvent event = new UserNotifyEvent(level, title, message, closeable);
+ source.fireEvent(event);
+ return event;
+ }
+
+ public static Type<UserNotifyHandler> getType() {
+ return TYPE;
+ }
+
+ private ClickHandler clickHandler;
+ private final Boolean closeable;
+ private UserNotifyCloser closer;
+ private java.lang.String id;
+ private final NotifyLevel level;
+ private final java.lang.String message;
+ private final java.lang.String title;
+
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String message) {
+ this(level, "", message, false);
+ }
+
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String message, final Boolean closeable) {
+ this(level, "", message, closeable);
+ }
+
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String title,
+ final java.lang.String message) {
+ this(level, title, message, false);
+ }
+
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String title,
+ final java.lang.String message, final Boolean closeable) {
+ this.level = level;
+ this.title = title;
+ this.message = message;
+ this.closeable = closeable;
+ }
+
+ public UserNotifyEvent(final String message) {
+ this(NotifyLevel.info, message);
+ }
+
+ @Override
+ protected void dispatch(final UserNotifyHandler handler) {
+ handler.onUserNotify(this);
+ }
+
+ @Override
+ public Type<UserNotifyHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public ClickHandler getClickHandler() {
+ return clickHandler;
+ }
+
+ public Boolean getCloseable() {
+ return closeable;
+ }
+
+ public UserNotifyCloser getCloser() {
+ return closer;
+ }
+
+ public java.lang.String getId() {
+ return id;
+ }
+
+ public NotifyLevel getLevel() {
+ return level;
+ }
+
+ public java.lang.String getMessage() {
+ return message;
+ }
+
+ public java.lang.String getTitle() {
+ return title;
+ }
+
+ public void setClickHandler(final ClickHandler clickHandler) {
+ this.clickHandler = clickHandler;
+ }
+
+ public void setCloser(final UserNotifyCloser closer) {
+ this.closer = closer;
+ }
+
+ public void setId(final String id) {
+ this.id = id;
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/common/client/notify/events (from rev 1647, trunk/src/main/java/cc/kune/common/client/events)
Deleted: trunk/src/main/java/cc/kune/common/client/notify/events/ProgressHideEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/events/ProgressHideEvent.java 2011-12-21 23:32:22 UTC (rev 1647)
+++ trunk/src/main/java/cc/kune/common/client/notify/events/ProgressHideEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,81 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.common.client.events;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class ProgressHideEvent extends GwtEvent<ProgressHideEvent.ProgressHideHandler> {
-
- public interface HasProgressHideHandlers extends HasHandlers {
- HandlerRegistration addProgressHideHandler(ProgressHideHandler handler);
- }
-
- public interface ProgressHideHandler extends EventHandler {
- public void onProgressHide(ProgressHideEvent event);
- }
-
- private static final Type<ProgressHideHandler> TYPE = new Type<ProgressHideHandler>();
-
- public static void fire(final HasHandlers source) {
- source.fireEvent(new ProgressHideEvent());
- }
-
- public static Type<ProgressHideHandler> getType() {
- return TYPE;
- }
-
- public ProgressHideEvent() {
- }
-
- @Override
- protected void dispatch(final ProgressHideHandler handler) {
- handler.onProgressHide(this);
- }
-
- @Override
- public boolean equals(final Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- final ProgressHideEvent o = (ProgressHideEvent) other;
- return true;
- }
- return false;
- }
-
- @Override
- public Type<ProgressHideHandler> getAssociatedType() {
- return TYPE;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "ProgressHideEvent[" + "]";
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/common/client/notify/events/ProgressShowEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/events/ProgressShowEvent.java 2011-12-21 23:32:22 UTC (rev 1647)
+++ trunk/src/main/java/cc/kune/common/client/notify/events/ProgressShowEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,93 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.common.client.events;
-
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class ProgressShowEvent extends GwtEvent<ProgressShowEvent.ProgressShowHandler> {
-
- public interface HasProgressShowHandlers extends HasHandlers {
- HandlerRegistration addProgressShowHandler(ProgressShowHandler handler);
- }
-
- public interface ProgressShowHandler extends EventHandler {
- public void onProgressShow(ProgressShowEvent event);
- }
-
- private static final Type<ProgressShowHandler> TYPE = new Type<ProgressShowHandler>();
-
- public static void fire(final HasHandlers source, final java.lang.String message) {
- source.fireEvent(new ProgressShowEvent(message));
- }
-
- public static Type<ProgressShowHandler> getType() {
- return TYPE;
- }
-
- private final java.lang.String message;
-
- public ProgressShowEvent() {
- this("");
- }
-
- public ProgressShowEvent(final java.lang.String message) {
- this.message = message;
- }
-
- @Override
- protected void dispatch(final ProgressShowHandler handler) {
- handler.onProgressShow(this);
- }
-
- @Override
- public boolean equals(final Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- final ProgressShowEvent o = (ProgressShowEvent) other;
- return true && ((o.message == null && this.message == null) || (o.message != null && o.message.equals(this.message)));
- }
- return false;
- }
-
- @Override
- public Type<ProgressShowHandler> getAssociatedType() {
- return TYPE;
- }
-
- public java.lang.String getMessage() {
- return message;
- }
-
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- hashCode = (hashCode * 37) + (message == null ? 1 : message.hashCode());
- return hashCode;
- }
-
- @Override
- public String toString() {
- return "ProgressShowEvent[" + message + "]";
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/common/client/notify/events/UserNotifyEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/events/UserNotifyEvent.java 2011-12-21 23:32:22 UTC (rev 1647)
+++ trunk/src/main/java/cc/kune/common/client/notify/events/UserNotifyEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,155 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.common.client.events;
-
-import cc.kune.common.client.notify.NotifyLevel;
-
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.shared.EventHandler;
-import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
-
-public class UserNotifyEvent extends GwtEvent<UserNotifyEvent.UserNotifyHandler> {
-
- public interface HasUserNotifyHandlers extends HasHandlers {
- HandlerRegistration addUserNotifyHandler(UserNotifyHandler handler);
- }
-
- public interface UserNotifyCloser {
- public void close();
- }
-
- public interface UserNotifyHandler extends EventHandler {
- public void onUserNotify(UserNotifyEvent event);
- }
-
- private static final Type<UserNotifyHandler> TYPE = new Type<UserNotifyHandler>();
-
- public static void fire(final HasHandlers source, final NotifyLevel level,
- final java.lang.String message) {
- source.fireEvent(new UserNotifyEvent(level, "", message));
- }
-
- public static void fire(final HasHandlers source, final NotifyLevel level,
- final java.lang.String message, final Boolean closeable) {
- source.fireEvent(new UserNotifyEvent(level, "", message, closeable));
- }
-
- public static void fire(final HasHandlers source, final NotifyLevel level,
- final java.lang.String title, final java.lang.String message) {
- source.fireEvent(new UserNotifyEvent(level, title, message));
- }
-
- public static UserNotifyEvent fire(final HasHandlers source, final NotifyLevel level,
- final java.lang.String title, final java.lang.String message, final Boolean closeable) {
- final UserNotifyEvent event = new UserNotifyEvent(level, title, message, closeable);
- source.fireEvent(event);
- return event;
- }
-
- public static Type<UserNotifyHandler> getType() {
- return TYPE;
- }
-
- private ClickHandler clickHandler;
- private final Boolean closeable;
- private UserNotifyCloser closer;
- private java.lang.String id;
- private final NotifyLevel level;
- private final java.lang.String message;
- private final java.lang.String title;
-
- public UserNotifyEvent(final NotifyLevel level, final java.lang.String message) {
- this(level, "", message, false);
- }
-
- public UserNotifyEvent(final NotifyLevel level, final java.lang.String message, final Boolean closeable) {
- this(level, "", message, closeable);
- }
-
- public UserNotifyEvent(final NotifyLevel level, final java.lang.String title,
- final java.lang.String message) {
- this(level, title, message, false);
- }
-
- public UserNotifyEvent(final NotifyLevel level, final java.lang.String title,
- final java.lang.String message, final Boolean closeable) {
- this.level = level;
- this.title = title;
- this.message = message;
- this.closeable = closeable;
- }
-
- public UserNotifyEvent(final String message) {
- this(NotifyLevel.info, message);
- }
-
- @Override
- protected void dispatch(final UserNotifyHandler handler) {
- handler.onUserNotify(this);
- }
-
- @Override
- public Type<UserNotifyHandler> getAssociatedType() {
- return TYPE;
- }
-
- public ClickHandler getClickHandler() {
- return clickHandler;
- }
-
- public Boolean getCloseable() {
- return closeable;
- }
-
- public UserNotifyCloser getCloser() {
- return closer;
- }
-
- public java.lang.String getId() {
- return id;
- }
-
- public NotifyLevel getLevel() {
- return level;
- }
-
- public java.lang.String getMessage() {
- return message;
- }
-
- public java.lang.String getTitle() {
- return title;
- }
-
- public void setClickHandler(final ClickHandler clickHandler) {
- this.clickHandler = clickHandler;
- }
-
- public void setCloser(final UserNotifyCloser closer) {
- this.closer = closer;
- }
-
- public void setId(final String id) {
- this.id = id;
- }
-
-}
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,8 +20,8 @@
package cc.kune.core.client;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
-import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.DefaultGuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.log.EventBusWithLogging;
import cc.kune.common.client.shortcuts.DefaultGlobalShortcutRegister;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
@@ -98,6 +98,7 @@
import cc.kune.core.client.state.HistoryWrapperDefault;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SessionDefault;
+import cc.kune.core.client.state.SessionExpirationManager;
import cc.kune.core.client.state.SiteTokenListeners;
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
@@ -201,6 +202,7 @@
// Core App
bind(Session.class).to(SessionDefault.class).in(Singleton.class);
+ s(SessionExpirationManager.class);
s(ErrorHandler.class);
s(StateManagerDefault.class);
bind(StateManager.class).to(StateManagerDefault.class).in(Singleton.class);
Modified: trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,8 +19,8 @@
*/
package cc.kune.core.client.auth;
-import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.notify.NotifyLevel;
+import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.i18n.I18nUITranslationService;
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,10 +19,10 @@
*/
package cc.kune.core.client.auth;
-import cc.kune.common.client.events.ProgressHideEvent;
-import cc.kune.common.client.events.ProgressShowEvent;
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyLevel;
+import cc.kune.common.client.notify.ProgressHideEvent;
+import cc.kune.common.client.notify.ProgressShowEvent;
import cc.kune.common.client.utils.OnAcceptCallback;
import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.common.client.utils.TimerWrapper.Executer;
Modified: trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,7 +20,7 @@
package cc.kune.core.client.cnt;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,19 +19,16 @@
*/
package cc.kune.core.client.errors;
-import org.waveprotocol.wave.client.common.safehtml.SafeHtml;
-import org.waveprotocol.wave.client.common.util.AsyncHolder.Accessor;
-
-import cc.kune.common.client.events.ProgressHideEvent;
-import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyLevel;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.notify.ProgressHideEvent;
+import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.TextUtils;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.wave.client.WaveClientProvider;
+import cc.kune.core.client.events.GoHomeEvent;
+import cc.kune.core.client.events.StackErrorEvent;
+import cc.kune.core.client.events.UserMustBeLoggedEvent;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
@@ -41,28 +38,19 @@
private final EventBus eventBus;
private final I18nTranslationService i18n;
- private final Session session;
- private final StateManager stateManager;
- private final WaveClientProvider waveClient;
@Inject
- public ErrorHandler(final Session session, final I18nTranslationService i18n,
- final StateManager stateManager, final EventBus eventBus, final WaveClientProvider waveClient) {
- this.session = session;
+ public ErrorHandler(final I18nTranslationService i18n, final EventBus eventBus) {
this.i18n = i18n;
- this.stateManager = stateManager;
this.eventBus = eventBus;
- this.waveClient = waveClient;
}
public void doSessionExpired() {
eventBus.fireEvent(new SessionExpiredEvent());
- eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info,
- "Your session has expired. Please log in again."));
}
private void goHome() {
- stateManager.gotoDefaultHomepage();
+ GoHomeEvent.fire(eventBus);
}
private void logException(final Throwable caught) {
@@ -91,12 +79,7 @@
doSessionExpired();
} else if (caught instanceof UserMustBeLoggedException) {
logException(caught);
- if (session.isLogged()) {
- doSessionExpired();
- } else {
- eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.important,
- i18n.t("Please sign in or register to collaborate")));
- }
+ UserMustBeLoggedEvent.fire(eventBus);
} else if (caught instanceof GroupNotFoundException) {
logException(caught);
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.veryImportant, i18n.t("Group not found")));
@@ -148,14 +131,7 @@
i18n.t("Oops! Something has gone wrong with our servers. Retry later, please.")));
final String error = "Other kind of exception received in ErrorHandler";
Log.error(error, caught);
- waveClient.get().getStackTraceAsync(caught, new Accessor<SafeHtml>() {
- @Override
- public void use(final SafeHtml stack) {
- final String stackAsString = stack.asString().replace("<br>", "\n");
- NotifyUser.logError(stackAsString);
- Log.error("Stack: " + stackAsString);
- }
- });
+ StackErrorEvent.fire(eventBus, caught);
}
}
Added: trunk/src/main/java/cc/kune/core/client/events/GoHomeEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/GoHomeEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/GoHomeEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,58 @@
+package cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class GoHomeEvent extends GwtEvent<GoHomeEvent.GoHomeHandler> {
+
+ public interface HasGoHomeHandlers extends HasHandlers {
+ HandlerRegistration addGoHomeHandler(GoHomeHandler handler);
+ }
+
+ public interface GoHomeHandler extends EventHandler {
+ public void onGoHome(GoHomeEvent event);
+ }
+
+ private static final Type<GoHomeHandler> TYPE = new Type<GoHomeHandler>();
+
+ public static void fire(HasHandlers source) {
+ source.fireEvent(new GoHomeEvent());
+ }
+
+ public static Type<GoHomeHandler> getType() {
+ return TYPE;
+ }
+
+
+ public GoHomeEvent() {
+ }
+
+ @Override
+ public Type<GoHomeHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ protected void dispatch(GoHomeHandler handler) {
+ handler.onGoHome(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return "GoHomeEvent["
+ + "]";
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/events/StackErrorEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/StackErrorEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/StackErrorEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,83 @@
+package cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class StackErrorEvent extends GwtEvent<StackErrorEvent.StackErrorHandler> {
+
+ public interface HasStackErrorHandlers extends HasHandlers {
+ HandlerRegistration addStackErrorHandler(StackErrorHandler handler);
+ }
+
+ public interface StackErrorHandler extends EventHandler {
+ public void onStackError(StackErrorEvent event);
+ }
+
+ private static final Type<StackErrorHandler> TYPE = new Type<StackErrorHandler>();
+
+ public static void fire(HasHandlers source, java.lang.Throwable exception) {
+ source.fireEvent(new StackErrorEvent(exception));
+ }
+
+ public static Type<StackErrorHandler> getType() {
+ return TYPE;
+ }
+
+ java.lang.Throwable exception;
+
+ public StackErrorEvent(java.lang.Throwable exception) {
+ this.exception = exception;
+ }
+
+ protected StackErrorEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<StackErrorHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public java.lang.Throwable getException() {
+ return exception;
+ }
+
+ @Override
+ protected void dispatch(StackErrorHandler handler) {
+ handler.onStackError(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StackErrorEvent other = (StackErrorEvent) obj;
+ if (exception == null) {
+ if (other.exception != null)
+ return false;
+ } else if (!exception.equals(other.exception))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (exception == null ? 1 : exception.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "StackErrorEvent["
+ + exception
+ + "]";
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/events/UserMustBeLoggedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/events/UserMustBeLoggedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/events/UserMustBeLoggedEvent.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,55 @@
+package cc.kune.core.client.events;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class UserMustBeLoggedEvent extends GwtEvent<UserMustBeLoggedEvent.UserMustBeLoggedHandler> {
+
+ public interface HasUserMustBeLoggedHandlers extends HasHandlers {
+ HandlerRegistration addUserMustBeLoggedHandler(UserMustBeLoggedHandler handler);
+ }
+
+ public interface UserMustBeLoggedHandler extends EventHandler {
+ public void onUserMustBeLogged(UserMustBeLoggedEvent event);
+ }
+
+ private static final Type<UserMustBeLoggedHandler> TYPE = new Type<UserMustBeLoggedHandler>();
+
+ public static void fire(final HasHandlers source) {
+ source.fireEvent(new UserMustBeLoggedEvent());
+ }
+
+ public static Type<UserMustBeLoggedHandler> getType() {
+ return TYPE;
+ }
+
+ public UserMustBeLoggedEvent() {
+ }
+
+ @Override
+ protected void dispatch(final UserMustBeLoggedHandler handler) {
+ handler.onUserMustBeLogged(this);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public Type<UserMustBeLoggedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return "UserMustBeLoggedEvent[" + "]";
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -125,6 +125,7 @@
});
}
});
+
session.onUserSignIn(true, new UserSignInHandler() {
@Override
public void onUserSignIn(final UserSignInEvent event) {
Modified: trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,11 +19,11 @@
*/
package cc.kune.core.client.init;
-import cc.kune.common.client.events.ProgressHideEvent;
-import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyLevel;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.notify.ProgressHideEvent;
+import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.client.resources.CommonResources;
import cc.kune.common.client.utils.SimpleResponseCallback;
import cc.kune.core.client.rpcservices.SiteServiceAsync;
Modified: trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierPresenter.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,8 +19,8 @@
*/
package cc.kune.core.client.notify.msgs;
-import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.notify.NotifyLevel;
+import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter.UserNotifierProxy;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter.UserNotifierView;
Modified: trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,7 +19,7 @@
*/
package cc.kune.core.client.notify.msgs;
-import cc.kune.common.client.events.UserNotifyEvent;
+import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.client.ui.PopupBottomPanel;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter.UserNotifierView;
import cc.kune.msgs.client.CloseCallback;
Modified: trunk/src/main/java/cc/kune/core/client/notify/spiner/SpinerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/spiner/SpinerPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/notify/spiner/SpinerPresenter.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,8 +19,8 @@
*/
package cc.kune.core.client.notify.spiner;
-import cc.kune.common.client.events.ProgressHideEvent;
-import cc.kune.common.client.events.ProgressShowEvent;
+import cc.kune.common.client.notify.ProgressHideEvent;
+import cc.kune.common.client.notify.ProgressShowEvent;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.i18n.I18nReadyEvent;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -19,8 +19,8 @@
*/
package cc.kune.core.client.sitebar;
-import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.notify.NotifyLevel;
+import cc.kune.common.client.notify.UserNotifyEvent;
import cc.kune.common.client.ui.IconLabel;
import cc.kune.common.client.ui.dialogs.BasicTopDialog;
import cc.kune.common.shared.i18n.I18nTranslationService;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -25,8 +25,8 @@
import cc.kune.common.client.actions.BeforeActionCollection;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.errors.UIException;
-import cc.kune.common.client.events.ProgressHideEvent;
-import cc.kune.common.client.events.ProgressShowEvent;
+import cc.kune.common.client.notify.ProgressHideEvent;
+import cc.kune.common.client.notify.ProgressShowEvent;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.auth.WaveClientSimpleAuthenticator;
import cc.kune.core.client.cookies.CookiesManager;
Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -22,8 +22,8 @@
import cc.kune.common.client.actions.gxtui.AbstractGxtMenuGui;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
import cc.kune.common.client.actions.ui.ActionSimplePanel;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.IsActionExtensible;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,7 +20,7 @@
package cc.kune.core.client.sn;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.shared.i18n.I18nTranslationService;
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,7 +20,7 @@
package cc.kune.core.client.sn;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.avatar.SmallAvatarDecorator;
Modified: trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -22,7 +22,7 @@
import java.util.HashMap;
import java.util.Map;
-import cc.kune.common.client.events.ProgressShowEvent;
+import cc.kune.common.client.notify.ProgressShowEvent;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
Modified: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -24,7 +24,6 @@
import cc.kune.common.client.log.Log;
import cc.kune.core.client.cookies.CookiesManager;
-import cc.kune.core.client.errors.SessionExpiredEvent;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
@@ -72,12 +71,6 @@
this.userHash = userHash == null || userHash.equals("null") ? null : userHash;
this.userServiceProvider = userServiceProvider;
languagesArray = null;
- eventBus.addHandler(SessionExpiredEvent.getType(), new SessionExpiredEvent.SessionExpiredHandler() {
- @Override
- public void onSessionExpired(final SessionExpiredEvent event) {
- signOut();
- }
- });
check(new AsyncCallbackSimple<Void>() {
@Override
public void onSuccess(final Void result) {
Added: trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionExpirationManager.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,34 @@
+package cc.kune.core.client.state;
+
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.errors.SessionExpiredEvent;
+import cc.kune.core.client.events.UserMustBeLoggedEvent;
+import cc.kune.core.client.events.UserMustBeLoggedEvent.UserMustBeLoggedHandler;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class SessionExpirationManager {
+ @Inject
+ public SessionExpirationManager(final EventBus eventBus, final Session session,
+ final I18nTranslationService i18n) {
+ eventBus.addHandler(UserMustBeLoggedEvent.getType(), new UserMustBeLoggedHandler() {
+ @Override
+ public void onUserMustBeLogged(final UserMustBeLoggedEvent event) {
+ if (session.isLogged()) {
+ SessionExpiredEvent.fire(eventBus);
+ } else {
+ NotifyUser.important(i18n.t("Please sign in or register to collaborate"));
+ }
+ }
+ });
+ eventBus.addHandler(SessionExpiredEvent.getType(), new SessionExpiredEvent.SessionExpiredHandler() {
+ @Override
+ public void onSessionExpired(final SessionExpiredEvent event) {
+ NotifyUser.info(i18n.t("Please sign in again"));
+ }
+ });
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -27,9 +27,10 @@
import cc.kune.common.client.actions.BeforeActionCollection;
import cc.kune.common.client.actions.BeforeActionListener;
-import cc.kune.common.client.events.ProgressHideEvent;
import cc.kune.common.client.log.Log;
+import cc.kune.common.client.notify.ProgressHideEvent;
import cc.kune.common.client.utils.Pair;
+import cc.kune.core.client.events.GoHomeEvent;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
@@ -102,6 +103,12 @@
contentCache.removeCacheOfGroup(event.getState().getStateToken().getGroup());
}
});
+ eventBus.addHandler(GoHomeEvent.getType(), new GoHomeEvent.GoHomeHandler() {
+ @Override
+ public void onGoHome(final GoHomeEvent event) {
+ gotoDefaultHomepage();
+ }
+ });
}
@Override
Copied: trunk/src/main/java/cc/kune/core/client/state/StateTokenUtils.java (from rev 1647, trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateTokenUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/StateTokenUtils.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,62 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.state;
+
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.domain.utils.StateToken;
+
+import com.google.inject.Inject;
+
+public class StateTokenUtils {
+
+ private static final String SEPARATOR = ".";
+ private final Session session;
+
+ @Inject
+ public StateTokenUtils(final Session session) {
+ this.session = session;
+ }
+
+ public String getPublicUrl(final StateToken token) {
+ String publicUrl = "";
+
+ final String group = token.getGroup();
+ final String tool = token.getTool();
+ final String folder = token.getFolder();
+ final String document = token.getDocument();
+
+ publicUrl += session.getSiteUrl() + "/public";
+
+ if (group != null) {
+ publicUrl += "/" + group;
+ }
+ if (tool != null) {
+ publicUrl += SEPARATOR + tool;
+ }
+ if (folder != null) {
+ publicUrl += SEPARATOR + folder;
+ }
+ if (document != null) {
+ publicUrl += SEPARATOR + document;
+ }
+
+ return publicUrl;
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,7 +20,7 @@
package cc.kune.core.client.ws.entheader;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.UrlParam;
Modified: trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -5,7 +5,8 @@
/**
* The Class FormatedString is used to separate, String templates (usually html)
* from args (indicated with %s) and also to allow the translation of this
- * templates.
+ * templates. More info
+ * http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
*/
public class FormatedString {
Modified: trunk/src/main/java/cc/kune/core/server/manager/SocialNetworkManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/SocialNetworkManager.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/manager/SocialNetworkManager.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -25,10 +25,10 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.shared.dto.SocialNetworkRequestResult;
import cc.kune.domain.Group;
+import cc.kune.domain.ParticipationData;
import cc.kune.domain.SocialNetwork;
+import cc.kune.domain.SocialNetworkData;
import cc.kune.domain.User;
-import cc.kune.domain.utils.ParticipationData;
-import cc.kune.domain.utils.SocialNetworkData;
public interface SocialNetworkManager extends Manager<SocialNetwork, Long> {
Modified: trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -27,7 +27,7 @@
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.domain.User;
-import cc.kune.domain.utils.UserBuddiesData;
+import cc.kune.domain.UserBuddiesData;
public interface UserManager {
User changePasswd(Long userId, String oldPassword, String newPassword);
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -34,8 +34,8 @@
import cc.kune.core.shared.domain.AccessRol;
import cc.kune.domain.Group;
import cc.kune.domain.User;
+import cc.kune.domain.UserBuddiesData;
import cc.kune.domain.finders.GroupFinder;
-import cc.kune.domain.utils.UserBuddiesData;
import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.KuneWaveUtils;
import cc.kune.wave.server.ParticipantUtils;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -41,12 +41,12 @@
import cc.kune.core.shared.dto.GroupType;
import cc.kune.core.shared.dto.SocialNetworkRequestResult;
import cc.kune.domain.Group;
+import cc.kune.domain.ParticipationData;
import cc.kune.domain.SocialNetwork;
+import cc.kune.domain.SocialNetworkData;
import cc.kune.domain.User;
+import cc.kune.domain.UserBuddiesData;
import cc.kune.domain.finders.GroupFinder;
-import cc.kune.domain.utils.ParticipationData;
-import cc.kune.domain.utils.SocialNetworkData;
-import cc.kune.domain.utils.UserBuddiesData;
import com.google.inject.Inject;
import com.google.inject.Provider;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -70,8 +70,8 @@
import cc.kune.domain.I18nCountry;
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.User;
+import cc.kune.domain.UserBuddiesData;
import cc.kune.domain.finders.UserFinder;
-import cc.kune.domain.utils.UserBuddiesData;
import cc.kune.wave.server.CustomUserRegistrationServlet;
import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.ParticipantUtils;
Modified: trunk/src/main/java/cc/kune/core/server/state/StateAbstract.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/StateAbstract.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/state/StateAbstract.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -24,10 +24,10 @@
import cc.kune.core.shared.domain.utils.AccessRights;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.domain.Group;
+import cc.kune.domain.ParticipationData;
import cc.kune.domain.SocialNetwork;
-import cc.kune.domain.utils.ParticipationData;
-import cc.kune.domain.utils.SocialNetworkData;
-import cc.kune.domain.utils.UserBuddiesData;
+import cc.kune.domain.SocialNetworkData;
+import cc.kune.domain.UserBuddiesData;
public abstract class StateAbstract {
Modified: trunk/src/main/java/cc/kune/core/server/users/UserInfoServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/users/UserInfoServiceDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/server/users/UserInfoServiceDefault.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -25,8 +25,8 @@
import cc.kune.core.server.manager.SocialNetworkManager;
import cc.kune.domain.Content;
import cc.kune.domain.Group;
+import cc.kune.domain.ParticipationData;
import cc.kune.domain.User;
-import cc.kune.domain.utils.ParticipationData;
import com.google.inject.Inject;
import com.google.inject.Singleton;
Modified: trunk/src/main/java/cc/kune/core/shared/FileConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/FileConstants.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/shared/FileConstants.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -29,10 +29,7 @@
public static final String DOWNLOADSERVLET = ASITE_PREFIX + "servlets/FileDownloadManager";
public final static String FILENAME = "filename";
public final static String GROUP_LOGO_FIELD = "k-glogov-ff";
- // public static final String GROUP_NO_AVATAR_IMAGE = ASITE_PREFIX +
- // "images/group-def-icon.png";
public static final String GROUP_NO_AVATAR_IMAGE = "others/defgroup.gif";
- public static final String GROUP_NO_AVATAR_IMAGE_PATH = ASITE_PREFIX + GROUP_NO_AVATAR_IMAGE;
public final static String HASH = "hash";
public final static String IMGSIZE = "imgsize";
@@ -41,8 +38,7 @@
public final static int LOGO_MIN_HEIGHT = 28;
public final static int LOGO_MIN_WIDTH = 468;
public static final String LOGODOWNLOADSERVLET = ASITE_PREFIX + "servlets/EntityLogoDownloadManager";
- public final static String PERSON_NO_AVATAR_IMAGE = "images/unknown.jpg";
- public final static String PERSON_NO_AVATAR_IMAGE_PATH = ASITE_PREFIX + PERSON_NO_AVATAR_IMAGE;
+ public final static String PERSON_NO_AVATAR_IMAGE = "others/unknown.jpg";
public final static String TOKEN = "token";
public final static String TYPE_ID = "typeid";
public final static String USER_LOGO_FIELD = "k-ulogov-ff";
Deleted: trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,62 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.shared.dto;
-
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.domain.utils.StateToken;
-
-import com.google.inject.Inject;
-
-public class StateTokenUtils {
-
- private static final String SEPARATOR = ".";
- private final Session session;
-
- @Inject
- public StateTokenUtils(final Session session) {
- this.session = session;
- }
-
- public String getPublicUrl(final StateToken token) {
- String publicUrl = "";
-
- final String group = token.getGroup();
- final String tool = token.getTool();
- final String folder = token.getFolder();
- final String document = token.getDocument();
-
- publicUrl += session.getSiteUrl() + "/public";
-
- if (group != null) {
- publicUrl += "/" + group;
- }
- if (tool != null) {
- publicUrl += SEPARATOR + tool;
- }
- if (folder != null) {
- publicUrl += SEPARATOR + folder;
- }
- if (document != null) {
- publicUrl += SEPARATOR + document;
- }
-
- return publicUrl;
- }
-}
Modified: trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -21,8 +21,8 @@
public String getGroupLogo(final GroupDTO group) {
return prefix
+ (group.hasLogo() ? getLogoImageUrl(group.getShortName())
- : group.isPersonal() ? FileConstants.PERSON_NO_AVATAR_IMAGE_PATH
- : FileConstants.GROUP_NO_AVATAR_IMAGE_PATH);
+ : group.isPersonal() ? FileConstants.PERSON_NO_AVATAR_IMAGE
+ : FileConstants.GROUP_NO_AVATAR_IMAGE);
}
public String getLogoAvatarHtml(final String groupName, final boolean groupHasLogo,
@@ -49,8 +49,7 @@
public String getUserAvatar(final UserSimpleDTO user) {
return prefix
- + (user.hasLogo() ? getLogoImageUrl(user.getShortName())
- : FileConstants.PERSON_NO_AVATAR_IMAGE_PATH);
+ + (user.hasLogo() ? getLogoImageUrl(user.getShortName()) : FileConstants.PERSON_NO_AVATAR_IMAGE);
}
}
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/domain/ParticipationData.java (from rev 1647, trunk/src/main/java/cc/kune/domain/utils/ParticipationData.java)
===================================================================
--- trunk/src/main/java/cc/kune/domain/ParticipationData.java (rev 0)
+++ trunk/src/main/java/cc/kune/domain/ParticipationData.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.domain;
+
+import java.util.Set;
+
+
+public class ParticipationData {
+ private Set<Group> groupsIsAdmin;
+ private Set<Group> groupsIsCollab;
+
+ public ParticipationData() {
+ this(null, null);
+ }
+
+ public ParticipationData(final Set<Group> groupsIsAdmin, final Set<Group> groupsIsCollab) {
+ this.groupsIsAdmin = groupsIsAdmin;
+ this.groupsIsCollab = groupsIsCollab;
+ }
+
+ public Set<Group> getGroupsIsAdmin() {
+ return groupsIsAdmin;
+ }
+
+ public Set<Group> getGroupsIsCollab() {
+ return groupsIsCollab;
+ }
+
+ public void setGroupsIsAdmin(final Set<Group> groupsIsAdmin) {
+ this.groupsIsAdmin = groupsIsAdmin;
+ }
+
+ public void setGroupsIsCollab(final Set<Group> groupsIsCollab) {
+ this.groupsIsCollab = groupsIsCollab;
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/domain/SocialNetworkData.java (from rev 1647, trunk/src/main/java/cc/kune/domain/utils/SocialNetworkData.java)
===================================================================
--- trunk/src/main/java/cc/kune/domain/SocialNetworkData.java (rev 0)
+++ trunk/src/main/java/cc/kune/domain/SocialNetworkData.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,133 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.domain;
+
+import cc.kune.core.shared.domain.SocialNetworkVisibility;
+import cc.kune.core.shared.domain.UserSNetVisibility;
+import cc.kune.core.shared.domain.utils.AccessRights;
+
+public class SocialNetworkData {
+ private SocialNetworkVisibility socialNetworkVisibility;
+ private SocialNetwork groupMembers;
+ private ParticipationData userParticipation;
+ private UserSNetVisibility userBuddiesVisibility;
+ private UserBuddiesData userBuddies;
+ private AccessRights groupRights;
+ private boolean isBuddiesVisible;
+ private boolean isMembersVisible;
+
+ public SocialNetworkData() {
+ this(null, null, null, null, null, null, false, false);
+ }
+
+ public SocialNetworkData(SocialNetworkVisibility socialNetworkVisibility, SocialNetwork groupMembers,
+ ParticipationData userParticipation, UserSNetVisibility userBuddiesVisibility,
+ UserBuddiesData userBuddies, AccessRights groupRights, boolean isBuddiesVisible, boolean isMembersVisible) {
+ this.socialNetworkVisibility = socialNetworkVisibility;
+ this.groupMembers = groupMembers;
+ this.userParticipation = userParticipation;
+ this.userBuddiesVisibility = userBuddiesVisibility;
+ this.userBuddies = userBuddies;
+ this.groupRights = groupRights;
+ this.isBuddiesVisible = isBuddiesVisible;
+ this.isMembersVisible = isMembersVisible;
+ }
+
+ public SocialNetwork getGroupMembers() {
+ return groupMembers;
+ }
+
+ public AccessRights getGroupRights() {
+ return groupRights;
+ }
+
+ public boolean getIsBuddiesVisible() {
+ return isBuddiesVisible;
+ }
+
+ public boolean getIsMembersVisible() {
+ return isMembersVisible;
+ }
+
+ public SocialNetworkVisibility getSocialNetworkVisibility() {
+ return socialNetworkVisibility;
+ }
+
+ public UserBuddiesData getUserBuddies() {
+ return userBuddies;
+ }
+
+ public UserSNetVisibility getUserBuddiesVisibility() {
+ return userBuddiesVisibility;
+ }
+
+ public ParticipationData getUserParticipation() {
+ return userParticipation;
+ }
+
+ public boolean isBuddiesVisible() {
+ return isBuddiesVisible;
+ }
+
+ public boolean isMembersVisible() {
+ return isMembersVisible;
+ }
+
+ public void setBuddiesVisible(boolean isBuddiesVisible) {
+ this.isBuddiesVisible = isBuddiesVisible;
+ }
+
+ public void setGroupMembers(SocialNetwork groupMembers) {
+ this.groupMembers = groupMembers;
+ }
+
+ public void setGroupRights(AccessRights groupRights) {
+ this.groupRights = groupRights;
+ }
+
+ public void setIsBuddiesVisible(boolean isBuddiesVisible) {
+ setBuddiesVisible(isBuddiesVisible);
+ }
+
+ public void setIsMembersVisible(boolean isMembersVisible) {
+ setMembersVisible(isMembersVisible);
+ }
+
+ public void setMembersVisible(boolean isMembersVisible) {
+ this.isMembersVisible = isMembersVisible;
+ }
+
+ public void setSocialNetworkVisibility(SocialNetworkVisibility socialNetworkVisibility) {
+ this.socialNetworkVisibility = socialNetworkVisibility;
+ }
+
+ public void setUserBuddies(UserBuddiesData userBuddies) {
+ this.userBuddies = userBuddies;
+ }
+
+ public void setUserBuddiesVisibility(UserSNetVisibility userBuddiesVisibility) {
+ this.userBuddiesVisibility = userBuddiesVisibility;
+ }
+
+ public void setUserParticipation(ParticipationData userParticipation) {
+ this.userParticipation = userParticipation;
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/domain/UserBuddiesData.java (from rev 1647, trunk/src/main/java/cc/kune/domain/utils/UserBuddiesData.java)
===================================================================
--- trunk/src/main/java/cc/kune/domain/UserBuddiesData.java (rev 0)
+++ trunk/src/main/java/cc/kune/domain/UserBuddiesData.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.domain;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class UserBuddiesData {
+
+ public static final UserBuddiesData EMPTY = new UserBuddiesData();
+
+ private List<User> buddies;
+ private int otherExtBuddies;
+
+ public UserBuddiesData() {
+ otherExtBuddies = 0;
+ buddies = new ArrayList<User>();
+ }
+
+ public boolean contains(final String shortName) {
+ for (User buddie : buddies) {
+ if (buddie.getShortName().equals(shortName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public List<User> getBuddies() {
+ return buddies;
+ }
+
+ public int getOtherExtBuddies() {
+ return otherExtBuddies;
+ }
+
+ public void setBuddies(final List<User> buddies) {
+ this.buddies = buddies;
+ }
+
+ public void setOtherExtBuddies(final int otherExtBuddies) {
+ this.otherExtBuddies = otherExtBuddies;
+ }
+
+ @Override
+ public String toString() {
+ return "UserBuddiesData[ext: " + otherExtBuddies + " / int: " + buddies + "]";
+ }
+}
Deleted: trunk/src/main/java/cc/kune/domain/utils/ParticipationData.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/utils/ParticipationData.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/domain/utils/ParticipationData.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,55 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.domain.utils;
-
-import java.util.Set;
-
-import cc.kune.domain.Group;
-
-public class ParticipationData {
- private Set<Group> groupsIsAdmin;
- private Set<Group> groupsIsCollab;
-
- public ParticipationData() {
- this(null, null);
- }
-
- public ParticipationData(final Set<Group> groupsIsAdmin, final Set<Group> groupsIsCollab) {
- this.groupsIsAdmin = groupsIsAdmin;
- this.groupsIsCollab = groupsIsCollab;
- }
-
- public Set<Group> getGroupsIsAdmin() {
- return groupsIsAdmin;
- }
-
- public Set<Group> getGroupsIsCollab() {
- return groupsIsCollab;
- }
-
- public void setGroupsIsAdmin(final Set<Group> groupsIsAdmin) {
- this.groupsIsAdmin = groupsIsAdmin;
- }
-
- public void setGroupsIsCollab(final Set<Group> groupsIsCollab) {
- this.groupsIsCollab = groupsIsCollab;
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/domain/utils/SocialNetworkData.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/utils/SocialNetworkData.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/domain/utils/SocialNetworkData.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,134 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.domain.utils;
-
-import cc.kune.core.shared.domain.SocialNetworkVisibility;
-import cc.kune.core.shared.domain.UserSNetVisibility;
-import cc.kune.core.shared.domain.utils.AccessRights;
-import cc.kune.domain.SocialNetwork;
-
-public class SocialNetworkData {
- private SocialNetworkVisibility socialNetworkVisibility;
- private SocialNetwork groupMembers;
- private ParticipationData userParticipation;
- private UserSNetVisibility userBuddiesVisibility;
- private UserBuddiesData userBuddies;
- private AccessRights groupRights;
- private boolean isBuddiesVisible;
- private boolean isMembersVisible;
-
- public SocialNetworkData() {
- this(null, null, null, null, null, null, false, false);
- }
-
- public SocialNetworkData(SocialNetworkVisibility socialNetworkVisibility, SocialNetwork groupMembers,
- ParticipationData userParticipation, UserSNetVisibility userBuddiesVisibility,
- UserBuddiesData userBuddies, AccessRights groupRights, boolean isBuddiesVisible, boolean isMembersVisible) {
- this.socialNetworkVisibility = socialNetworkVisibility;
- this.groupMembers = groupMembers;
- this.userParticipation = userParticipation;
- this.userBuddiesVisibility = userBuddiesVisibility;
- this.userBuddies = userBuddies;
- this.groupRights = groupRights;
- this.isBuddiesVisible = isBuddiesVisible;
- this.isMembersVisible = isMembersVisible;
- }
-
- public SocialNetwork getGroupMembers() {
- return groupMembers;
- }
-
- public AccessRights getGroupRights() {
- return groupRights;
- }
-
- public boolean getIsBuddiesVisible() {
- return isBuddiesVisible;
- }
-
- public boolean getIsMembersVisible() {
- return isMembersVisible;
- }
-
- public SocialNetworkVisibility getSocialNetworkVisibility() {
- return socialNetworkVisibility;
- }
-
- public UserBuddiesData getUserBuddies() {
- return userBuddies;
- }
-
- public UserSNetVisibility getUserBuddiesVisibility() {
- return userBuddiesVisibility;
- }
-
- public ParticipationData getUserParticipation() {
- return userParticipation;
- }
-
- public boolean isBuddiesVisible() {
- return isBuddiesVisible;
- }
-
- public boolean isMembersVisible() {
- return isMembersVisible;
- }
-
- public void setBuddiesVisible(boolean isBuddiesVisible) {
- this.isBuddiesVisible = isBuddiesVisible;
- }
-
- public void setGroupMembers(SocialNetwork groupMembers) {
- this.groupMembers = groupMembers;
- }
-
- public void setGroupRights(AccessRights groupRights) {
- this.groupRights = groupRights;
- }
-
- public void setIsBuddiesVisible(boolean isBuddiesVisible) {
- setBuddiesVisible(isBuddiesVisible);
- }
-
- public void setIsMembersVisible(boolean isMembersVisible) {
- setMembersVisible(isMembersVisible);
- }
-
- public void setMembersVisible(boolean isMembersVisible) {
- this.isMembersVisible = isMembersVisible;
- }
-
- public void setSocialNetworkVisibility(SocialNetworkVisibility socialNetworkVisibility) {
- this.socialNetworkVisibility = socialNetworkVisibility;
- }
-
- public void setUserBuddies(UserBuddiesData userBuddies) {
- this.userBuddies = userBuddies;
- }
-
- public void setUserBuddiesVisibility(UserSNetVisibility userBuddiesVisibility) {
- this.userBuddiesVisibility = userBuddiesVisibility;
- }
-
- public void setUserParticipation(ParticipationData userParticipation) {
- this.userParticipation = userParticipation;
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/domain/utils/UserBuddiesData.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/utils/UserBuddiesData.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/domain/utils/UserBuddiesData.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -1,68 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.domain.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cc.kune.domain.User;
-
-public class UserBuddiesData {
-
- public static final UserBuddiesData EMPTY = new UserBuddiesData();
-
- private List<User> buddies;
- private int otherExtBuddies;
-
- public UserBuddiesData() {
- otherExtBuddies = 0;
- buddies = new ArrayList<User>();
- }
-
- public boolean contains(final String shortName) {
- for (User buddie : buddies) {
- if (buddie.getShortName().equals(shortName)) {
- return true;
- }
- }
- return false;
- }
-
- public List<User> getBuddies() {
- return buddies;
- }
-
- public int getOtherExtBuddies() {
- return otherExtBuddies;
- }
-
- public void setBuddies(final List<User> buddies) {
- this.buddies = buddies;
- }
-
- public void setOtherExtBuddies(final int otherExtBuddies) {
- this.otherExtBuddies = otherExtBuddies;
- }
-
- @Override
- public String toString() {
- return "UserBuddiesData[ext: " + otherExtBuddies + " / int: " + buddies + "]";
- }
-}
Modified: trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -3,7 +3,7 @@
import java.util.ArrayList;
import java.util.Date;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.dnd.FolderViewerDropController;
import cc.kune.core.client.dnd.KuneDragController;
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -21,7 +21,7 @@
import cc.kune.common.client.actions.ui.ActionExtensibleView;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -22,7 +22,7 @@
import org.waveprotocol.wave.client.common.util.DateUtils;
import cc.kune.common.client.actions.ui.ActionSimplePanel;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -20,8 +20,8 @@
package cc.kune.pspace.client;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
+import cc.kune.common.client.actions.ui.GuiProvider;
import cc.kune.common.client.actions.ui.IsActionExtensible;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.gspace.client.GSpaceArmor;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -27,13 +27,13 @@
import cc.kune.core.client.state.StateChangedEvent;
import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.StateTokenUtils;
import cc.kune.core.shared.domain.ContentStatus;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupListDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.StateContainerDTO;
import cc.kune.core.shared.dto.StateContentDTO;
-import cc.kune.core.shared.dto.StateTokenUtils;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.HasText;
Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -71,6 +71,7 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.errors.DefaultException;
+import cc.kune.core.client.events.StackErrorEvent;
import cc.kune.core.client.sitebar.spaces.Space;
import cc.kune.core.client.sitebar.spaces.SpaceConfEvent;
import cc.kune.core.client.state.SiteTokens;
@@ -278,6 +279,19 @@
this.i18n = i18n;
searchPanel = new SearchPanelWidget(new SearchPanelRenderer(profiles));
ErrorHandler.install();
+ eventBus.addHandler(StackErrorEvent.getType(), new StackErrorEvent.StackErrorHandler() {
+ @Override
+ public void onStackError(final StackErrorEvent event) {
+ getStackTraceAsync(event.getException(), new Accessor<SafeHtml>() {
+ @Override
+ public void use(final SafeHtml stack) {
+ final String stackAsString = stack.asString().replace("<br>", "\n");
+ NotifyUser.logError(stackAsString);
+ cc.kune.common.client.log.Log.error("Stack: " + stackAsString);
+ }
+ });
+ }
+ });
ClientEvents.get().addWaveCreationEventHandler(
new WaveCreationEventHandler() {
Modified: trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java
===================================================================
--- trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -153,7 +153,7 @@
avatar = new Url(FileConstants.AVATARDOWNLOADSERVLET, new UrlParam(FileConstants.USERNAME,
address.split("@")[0])).toString();
} else {
- avatar = FileConstants.PERSON_NO_AVATAR_IMAGE_PATH;
+ avatar = FileConstants.PERSON_NO_AVATAR_IMAGE;
}
return avatar;
}
Modified: trunk/src/main/resources/dozerBeanMapping.xml
===================================================================
--- trunk/src/main/resources/dozerBeanMapping.xml 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/main/resources/dozerBeanMapping.xml 2012-01-02 20:12:42 UTC (rev 1653)
@@ -187,7 +187,7 @@
</mapping>
<mapping>
<class-a> cc.kune.core.shared.dto.ParticipationDataDTO </class-a>
- <class-b> cc.kune.domain.utils.ParticipationData </class-b>
+ <class-b> cc.kune.domain.ParticipationData </class-b>
</mapping>
<mapping>
<class-a> cc.kune.core.shared.dto.I18nLanguageDTO </class-a>
@@ -231,11 +231,11 @@
</mapping>
<mapping>
<class-a> cc.kune.core.shared.dto.UserBuddiesDataDTO </class-a>
- <class-b> cc.kune.domain.utils.UserBuddiesData </class-b>
+ <class-b> cc.kune.domain.UserBuddiesData </class-b>
</mapping>
<mapping>
<class-a> cc.kune.core.shared.dto.SocialNetworkDataDTO </class-a>
- <class-b> cc.kune.domain.utils.SocialNetworkData </class-b>
+ <class-b> cc.kune.domain.SocialNetworkData </class-b>
</mapping>
<mapping>
<class-a> cc.kune.core.shared.dto.HomeStatsDTO </class-a>
Modified: trunk/src/test/java/cc/kune/core/server/manager/impl/SocialNetworkManagerMoreTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/impl/SocialNetworkManagerMoreTest.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/test/java/cc/kune/core/server/manager/impl/SocialNetworkManagerMoreTest.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -33,8 +33,8 @@
import cc.kune.core.shared.domain.GroupListMode;
import cc.kune.core.shared.dto.GroupType;
import cc.kune.core.shared.dto.SocialNetworkRequestResult;
+import cc.kune.domain.ParticipationData;
import cc.kune.domain.User;
-import cc.kune.domain.utils.ParticipationData;
import com.google.inject.Inject;
Modified: trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java 2012-01-01 17:58:40 UTC (rev 1652)
+++ trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java 2012-01-02 20:12:42 UTC (rev 1653)
@@ -61,12 +61,12 @@
import cc.kune.domain.Group;
import cc.kune.domain.GroupList;
import cc.kune.domain.License;
+import cc.kune.domain.ParticipationData;
import cc.kune.domain.Revision;
import cc.kune.domain.SocialNetwork;
+import cc.kune.domain.SocialNetworkData;
import cc.kune.domain.User;
-import cc.kune.domain.utils.ParticipationData;
-import cc.kune.domain.utils.SocialNetworkData;
-import cc.kune.domain.utils.UserBuddiesData;
+import cc.kune.domain.UserBuddiesData;
import com.google.inject.Inject;
1
0
Author: vjrj_
Date: 2012-01-01 18:58:40 +0100 (Sun, 01 Jan 2012)
New Revision: 1652
Added:
trunk/src/main/java/cc/kune/common/shared/utils/
trunk/src/main/java/cc/kune/common/shared/utils/TextUtils.java
trunk/src/main/java/cc/kune/common/shared/utils/Url.java
trunk/src/main/java/cc/kune/common/shared/utils/UrlParam.java
trunk/src/main/java/cc/kune/core/client/services/ClientFileDownloadUtils.java
trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
trunk/src/main/java/cc/kune/core/server/utils/AbsoluteFileDownloadUtils.java
trunk/src/main/java/cc/kune/core/shared/utils/
trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java
trunk/src/test/java/cc/kune/core/server/mail/FormatedStringTest.java
trunk/src/test/java/cc/kune/core/server/notifier/
trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java
Removed:
trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
trunk/src/main/java/cc/kune/common/client/utils/Url.java
trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java
trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java
Modified:
trunk/img/webtemplate/web_template-2011.svg
trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java
trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
trunk/src/main/java/cc/kune/chat/client/KuneChatNotifier.java
trunk/src/main/java/cc/kune/chat/client/KuneHablarSignals.java
trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtSubMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java
trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java
trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java
trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicDialog.java
trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java
trunk/src/main/java/cc/kune/common/shared/i18n/I18nTranslationServiceMocked.java
trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java
trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java
trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java
trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
trunk/src/main/java/cc/kune/core/client/registry/IdGenerator.java
trunk/src/main/java/cc/kune/core/client/services/MediaUtils.java
trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java
trunk/src/main/java/cc/kune/core/client/sub/SubtitlesManager.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/tabbed/TabTitleGenerator.java
trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
trunk/src/main/java/cc/kune/core/server/InitData.java
trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/mail/MailService.java
trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java
trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/properties/KuneBasicProperties.java
trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
trunk/src/main/java/cc/kune/core/server/utils/FilenameUtils.java
trunk/src/main/java/cc/kune/core/server/xmpp/XmppManagerDefault.java
trunk/src/main/java/cc/kune/core/shared/FileConstants.java
trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
trunk/src/main/java/cc/kune/events/client/actions/EventEditMenuItem.java
trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
trunk/src/main/java/cc/kune/gspace/client/licensewizard/pages/LicenseWizardFirstForm.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java
trunk/src/main/java/cc/kune/gspace/client/viewers/PathToolbarUtils.java
trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java
trunk/src/main/java/cc/kune/msgs/client/UserMessageWidget.java
trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java
trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java
trunk/src/main/resources/kune.properties
trunk/src/test/java/cc/kune/core/server/mail/MailServiceDefaultTest.java
trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java
Log:
Notifications and some refactorization
Modified: trunk/img/webtemplate/web_template-2011.svg
===================================================================
--- trunk/img/webtemplate/web_template-2011.svg 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/img/webtemplate/web_template-2011.svg 2012-01-01 17:58:40 UTC (rev 1652)
@@ -14,7 +14,7 @@
height="768"
id="svg3182"
version="1.1"
- inkscape:version="0.48.1 r9760"
+ inkscape:version="0.48.2 r9819"
sodipodi:docname="web_template-2011.svg"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
inkscape:export-xdpi="90"
@@ -78,17 +78,17 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="0.16135477"
- inkscape:cx="512"
+ inkscape:zoom="1.1201172"
+ inkscape:cx="-265.55632"
inkscape:cy="384"
- inkscape:current-layer="g8450"
+ inkscape:current-layer="layer1"
inkscape:document-units="px"
showgrid="false"
- inkscape:window-width="1078"
- inkscape:window-height="897"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
inkscape:window-x="0"
- inkscape:window-y="947"
- inkscape:window-maximized="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
inkscape:snap-bbox="false"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
@@ -258,7 +258,7 @@
id="g5365">
<path
transform="matrix(0.102065,0,0,0.102065,387.7515,-17.05636)"
- d="m 277.35793,332.62314 a 26.82268,26.82268 0 1 1 -53.64536,0 26.82268,26.82268 0 1 1 53.64536,0 z"
+ d="m 277.35793,332.62314 c 0,14.81376 -12.00893,26.82268 -26.82268,26.82268 -14.81376,0 -26.82268,-12.00892 -26.82268,-26.82268 0,-14.81376 12.00892,-26.82268 26.82268,-26.82268 14.81375,0 26.82268,12.00892 26.82268,26.82268 z"
sodipodi:ry="26.82268"
sodipodi:rx="26.82268"
sodipodi:cy="332.62314"
@@ -268,7 +268,7 @@
sodipodi:type="arc" />
<path
transform="matrix(0.05245387,0,0,0.05245387,400.1808,-0.554549)"
- d="m 277.35793,332.62314 a 26.82268,26.82268 0 1 1 -53.64536,0 26.82268,26.82268 0 1 1 53.64536,0 z"
+ d="m 277.35793,332.62314 c 0,14.81376 -12.00893,26.82268 -26.82268,26.82268 -14.81376,0 -26.82268,-12.00892 -26.82268,-26.82268 0,-14.81376 12.00892,-26.82268 26.82268,-26.82268 14.81375,0 26.82268,12.00892 26.82268,26.82268 z"
sodipodi:ry="26.82268"
sodipodi:rx="26.82268"
sodipodi:cy="332.62314"
@@ -546,7 +546,7 @@
transform="translate(-751,-12)">
<path
transform="translate(0,-3)"
- d="m 333,232 a 11,11 0 1 1 -22,0 11,11 0 1 1 22,0 z"
+ d="m 333,232 c 0,6.07513 -4.92487,11 -11,11 -6.07513,0 -11,-4.92487 -11,-11 0,-6.07513 4.92487,-11 11,-11 6.07513,0 11,4.92487 11,11 z"
sodipodi:ry="11"
sodipodi:rx="11"
sodipodi:cy="232"
@@ -2177,7 +2177,7 @@
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(0.475,0,0,0.95,-21.570622,377.21335)"
- d="m 110,32.362183 a 20,10 0 1 1 -40,0 20,10 0 1 1 40,0 z"
+ d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z"
sodipodi:ry="10"
sodipodi:rx="20"
sodipodi:cy="32.362183"
@@ -2190,7 +2190,7 @@
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,8.0842525,364.37023)"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+ d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
sodipodi:ry="1"
sodipodi:rx="1"
sodipodi:cy="16.362183"
@@ -2209,14 +2209,14 @@
sodipodi:cy="16.362183"
sodipodi:rx="1"
sodipodi:ry="1"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+ d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,2.7154875,362.20909)" />
<path
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,7.7663825,370.24449)"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+ d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
sodipodi:ry="1"
sodipodi:rx="1"
sodipodi:cy="16.362183"
@@ -2235,14 +2235,14 @@
sodipodi:cy="16.362183"
sodipodi:rx="1"
sodipodi:ry="1"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+ d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,2.2467045,371.75097)" />
<path
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,-0.8112855,366.96948)"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+ d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
sodipodi:ry="1"
sodipodi:rx="1"
sodipodi:cy="16.362183"
@@ -4035,7 +4035,81 @@
x="-505.18716"
y="159.15428"
ry="3.5237386" />
- </g>
+ <image
+ style="display:inline"
+ width="50"
+ height="50"
+ xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABkAGQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKY7rGpZ2Cj1JxWZqmqfZAYoQDLjknoo9ff6Vzsksksu+RmdiTgk5IH9KuMG9SHNJ2OxS7 t5DtSeJm9A4JqeuAkQFeeTn86bZ67d6VMAXMttnDRk5x9Cen8v5hunbYFPueg0VXtbmK8to7iFw0 bjKkVYrMsKKKKACiiigAooooASmSyLFE8jfdVST9AKkqjqr+Xpk59QB+ZA/rQtxM5WSVppXlc5Zi SeeB7e1M5ySSDx+VAIx1PToKDyTxj6iuowGuODxkkevSsm+HBHBPt2rWkPB4zwayb08Ec/lQxo3v A98xe50+RjgASxg9hnDfqR+tdrXmXhCUp4ngUDiRXQ8+ik/j0Fem1zzWprHYKKKKkoKKKKACiiig AqnqieZps6+ilvy5/pVymSIJI2RujAgj60LRiZw579h/OgnoScDHAFDApIyMCHUkN7GkJGB06+vT /GuowGSnCEDIH0rFvXySMkjPY9K0rqXg9ck81hXMm44BwPek2M2fBsYl8SRt/wA80duvTIx/WvSx XDeAbbMt5dEYAVY1Prnk/wAh+ddzWE3qax2CiiipKCiiigAooooAKKKKAOL8QQGx1IygHy58sMDo 3cf1/Gsh7sADnt0B6V3er2UF9p8sNwwRfvCQn7hHQ15XK7xyFCc4OMjoa3hLQyktSzc3OSew+tZ5 JcjHJz6fp70E5JyMn3NdH4MsbS81NpZ5EMkADRxHALH+97gfzIP1G7K4Ja2Ox8OaadL0aGCQYmb9 5J/vHt+AwPwrXNFJWD1NRaKKKACiiigAoo7VSvr9LKIMRuduFUd6EribLbMEUsxAA6knisu71y3g ysX71/Y4X8+/4ZrBub2e7YtMxIB4UHAH4f1qD19cdMVtGn3Ic+xLfXlxfZEj/KOQo+6P8awbu0yT gcVs4Bzkkk+9RtGrk9CMHv1rSySsiLtnLNAwONpwT370+CGVZQ6MyuDlShIII7gjp9a3mtFJJwMC nR2ip2ANKwGxpPiK4WNYr8GUY/1q8MPqOn+e9dJb3cF2m6CVXHcA4I+o6iuLVAFHtTGDKwdGZWBy GU4I+hFQ6aexam+p6BRXH6X4meKZbfUG3RkgLMeCp/2vUe/866+smmty077C0UUUhiZwMnpXHX10 by6eTtnCj2H8v/r10uqS+Tp0zDqV2/mcVyJOBwCTjsela0l1M5voB4AGMnPbvQAc4GRkY5/zxSYx xwCBSnggDk/yrYzADgdScdh0oPAPTpQc4POKOAcZJP8AKgAI5PA6dqTqAegzwAOv+NL256+nrRwA ACSfYUABxk8frTWAK46nH+fpTiMEdc5/KkY/KcZJx2PSgDKvkwDwM57d66zwhqZvNOa1kJMtsQuT 3U9PywR+ArlrwYUjjIHNS+ErkweJI4x92ZGRvbjI/UD86zmrouL1PSaKKKwNTK14/wCgKPWQA/ka 5odvpRRW9LYxnuIOh/GjFFFaEinv9f6U0nCgiiigBcdKF+YjNFFAAOWx7Udh9KKKAM27+4341U0p jHr9gV4JuIx+bYooqHsyo7nrFFFFc5sf/9k= "
+ id="image15327-2"
+ x="-819.83234"
+ y="352.556"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ y="493.54968"
+ x="-697.43127"
+ id="image4197-7"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAABHNCSVQICAgIfAhkiAAAB71JREFU aIHVml9IXGcah5+j49SZ4zmHOOl0G4Wdtqvp0A6RqknTJt1cJNltWAiFtltKoBakgwy5sA2kF8WL QlZy6V6YSRmUtRZSJA32oliSQiBNyPonmRUJiiSkVNJEE6zOycyoM+fdC3WjiX9mnKNmX/jdfPOd 9/2eec98h/P9RhER7AhFUbyaRpeisK2ggNvJJP95+JB24Gexq8haQkRyFuBXVe7W1zM9OIh0dSGN jaR9PiZVlXtOJyeAMjtqZb02G+CK3W5Gw2HSS03p60Pq6khoGnFd5yKw6/8KUNO4EAqRXG1qIoE0 NZH2eHhoGFwG9jz1gE4nx/x+zKmpzC+bmkLCYSyvF9Mw6Ab2PZWAQJWqEh8eXluKmRmkpQWrpATT MLgOHHhqAIE8TWOotRUr1zWkUkh7O+LzETMMBoBDmw7ocBCqrMS088tOp5GODqSsjJhhMAQcBpQN BwQ8LhexaNT2u0lEEMtCOjuR8nJiuk4UqNhQQE2jLRhcfde0o6PNzViaRryoiAiwZd0BgSrDID4+ vr5wCzU2htTUkHC7mcjPpzbb2zYbOEXXGYhEct9Y1qKeHiQQwNR1BoAq2wHz86kNBDAta+Ph5mVZ SCSCZRjENY02wGMLILDF7Waip2fz4BZqfBwJBkm6XMQcDkJAXk6ARUVEampIbDbY44pGkcpKTE1j aLnbNpPuVWga8bGxzQdaTq2tWKpK3OnkWFaAcxtLtLl5czaWbDQ8jPj9mJrGBaA4U8DD5eXE0unN B8hEU1NIKETS7WYU8K8KaBgMdXZuzOJ++QX57jvkp5+Q33/PLVc4TFpVuQt4V+reobIyYuv1WLAs 5NSpPDl0SBev1yXFxars379Tqqu3S2GhQ8rLNfnwQ1UuXVpb/vp6pjWNayt1b6CjY33gbt5E3nrL La+//qqcOXNGbt68KQtjampKent7pampSZ57TpdPP3VKIpFdjcFBRNe5u1z3Dvh86/Pbi0QU8XgK 5eTJE5JKpWS1GBsbk/ff/5ts3+6W69czr9PVhXg8XF2ue9fb2+2Hu3QJ2bbNkBs3bqwK9ni0trbI iy+qEotlVquxkbSqcnqp7u0rKcFMpeyFM03kpZfccu7cuazh5uOjj/4uwWBhRvV8PiaBvUt1r7ul xf7nXl3dM/LBB4fXDCciMj4+LqWlHvnxx5Vr9fUhqso9QHm8e3u8XsyZGXvhRkcRt7tA7t+/nxOg iMjZs2elulpbsV5dHQmnkxMijz0HDYPL4bD93fvhB+TNNwM5w4mImKYpLpdDpqeXrpVIIJpGfP6g OW/+hFtRlF0OBxUff4xi16n5fPT25lFd/Wdbcqmqygsv/IGBgaU//+orLEWhW0SGgUeAus7JhgYK nU5b1rEoenqKqK7ebVu+qqqdXLv25Pj0NHz5JcnJSY7Pj+UBKIpSJsLOTz55BGxn/PorlJaW2pav pORPjIw8eaO1tiKpFFER+ff8WB6A00nNkSMohYW2rWFR7NgxQzQatS1ff/8VAoHFhlUqBQ0NxCcm HnUPIE9RFKWggNraWtYJD6qrE/T2XrItX19fP6+9tnjs66+RqSluiMjPj8/f6/MxaffOuVBXryIv v1xqyy46MjIixcXPLMqfSiElJZgs4XPkqSpHgkFU277eJWLHDnjw4D5XrlzJOdepU//k4EHHorEz Z8A0GRaRi09c4PFwtatr/bo3r2+/RbZvL5VEIrHm7nV3d4vX65LffnuUN52e9TVYxrxB17k7OLj+ gCLIe++55Nixo2uCSyQS4vf/Ub75ZvG5b0cHYhgMLFcUTeNafT3TGwE4NoY8/3yhfPHFcZmens4Y bmRkRA4e3CvvvONelM+yZs0aVnCkALyqyt3lLGi7dfs2sn+/WyoqyqS/v39VuLa2f8nWrUXy+ecF kkwuztXZiRgGQysVnKf0u92MhkIks3Frc9Hp04ps3eqSd9/9izQ2/kPOnz8vDx48kFu3bklHR4cc P/6ZvPFGQF55RZWlDpzT6VkHCji8KuAcZLGmccHvx1yra5ut7txB2tqQo0edsnu3IS6XQ559tlDe fluXhoY8+f57nujavJqbsebstRXNmCcGnE6OqSpxO9zbbJXpEcnY2P/eGFb1DpcehCpNY6iyEnO9 jM5cVFNDoqiISCaTl/8A8hwOQi4XsWCQ5EZ6giuppwdxu5kgQ0N09Qng0TTaDIN4JIK12fZZIICZ n09tphdlnB2o0nUGAgHMzbLRIhGsOQM0Y5c3qwqAkp9PrdvNRE0NiY10nMbHEcMgThbubtaAC0C3 FBUR0TTizc1YG2HOBIMkNY22rNeaS1WgQteJlpcT6+yc/Y2sB1w0irhcxMjAsrYVcA5SAQ4bBkNl ZcQ6OjJ/nmWqykpMh4PQmtZn50qAQ4bBgM9HrL199kU017StrVhzFvWyPvyGAS4APWAYXC8pwWxp wVrrQfLwMKKq2W8s6w64AHSfYdDt9WKGw1jZ/u3S78dcynd/agAXgO4xDC57PDxsaiKdidcXCpHU NC7kXHsjABeA7tJ1Lmoa8bo6En19S08Nh0nP+ezFOdfcSMAFoGVOJydUlXs+H5ONjaS7umZd2fp6 puf8db8dtZS5gpsSiqIowB5V5UhhITtmZvCJcCcW468iMmpHjf8C6MILrTFT1g8AAAAASUVORK5C YII= "
+ height="50"
+ width="50"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <flowRoot
+ transform="translate(-1742.5553,146.8489)"
+ id="flowRoot22983-8"
+ xml:space="preserve"
+ style="font-size:13px;display:inline"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:transform-center-x="-69.722141"
+ inkscape:transform-center-y="5.0305176"><flowRegion
+ id="flowRegion22985-0"><rect
+ y="337.25836"
+ x="1105.337"
+ height="98.930603"
+ width="725.66296"
+ id="rect22987-4"
+ style="font-size:13px" /></flowRegion><flowPara
+ id="flowPara22989-2"
+ style="font-size:13px;font-weight:bold">Some Group</flowPara></flowRoot> <flowRoot
+ style="display:inline"
+ xml:space="preserve"
+ id="flowRoot17968-64"
+ transform="translate(-1740.9728,166.94552)"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><flowRegion
+ id="flowRegion17970-1"><rect
+ id="rect17972-2"
+ width="725.66296"
+ height="98.930603"
+ x="1105.337"
+ y="337.25836" /></flowRegion><flowPara
+ id="flowPara8076">You are now admin of this group</flowPara><flowPara
+ id="flowPara8078">You are now a collaborator of this group</flowPara><flowPara
+ id="flowPara8105">You are not a member of this group</flowPara><flowPara
+ id="flowPara8101">Your membership to this group where not accepted by the admins</flowPara><flowPara
+ id="flowPara8099">There is a pending member in this group, please accept/deny this petition</flowPara><flowPara
+ id="flowPara8097" /></flowRoot> <flowRoot
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ transform="translate(-1740.9728,246.55145)"
+ id="flowRoot8080"
+ xml:space="preserve"
+ style="fill:#0000ff;display:inline"><flowRegion
+ id="flowRegion8082"><rect
+ y="337.25836"
+ x="1105.337"
+ height="98.930603"
+ width="725.66296"
+ id="rect8084"
+ style="fill:#0000ff" /></flowRegion><flowPara
+ id="flowPara8090">More info</flowPara></flowRoot> </g>
<g
inkscape:groupmode="layer"
id="layer7"
Modified: trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -20,8 +20,8 @@
package cc.kune.chat.client;
import cc.kune.common.client.ui.AbstractDecorator;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.avatar.AvatarDecorator;
import com.calclab.emite.core.client.events.StateChangedEvent;
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -37,15 +37,15 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
import cc.kune.common.client.utils.SimpleResponseCallback;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.WindowUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.events.AvatarChangedEvent;
import cc.kune.core.client.events.NewUserRegisteredEvent;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStopEvent;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sitebar.SitebarActions;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.UserSignInEvent;
@@ -133,7 +133,7 @@
private final ChatOptions chatOptions;
private final ChatResources chatResources;
private Dialog dialog;
- private final FileDownloadUtils downUtils;
+ private final ClientFileDownloadUtils downUtils;
private final I18nTranslationService i18n;
private final EventBus kuneEventBus;
private final CoreResources res;
@@ -149,7 +149,7 @@
@Inject
public ChatClientDefault(final EventBus kuneEventBus, final I18nTranslationService i18n,
final SitebarActions siteActions, final Session session, final CoreResources res,
- final FileDownloadUtils downUtils, final GlobalShortcutRegister shorcutRegister,
+ final ClientFileDownloadUtils downUtils, final GlobalShortcutRegister shorcutRegister,
final ChatOptions chatOptions, final ChatResources chatResources, final ChatInstances chatInstances) {
this.kuneEventBus = kuneEventBus;
this.i18n = i18n;
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -22,7 +22,7 @@
import static cc.kune.chat.shared.ChatConstants.NAME;
import static cc.kune.chat.shared.ChatConstants.TYPE_ROOM;
import cc.kune.chat.client.resources.ChatResources;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.resources.nav.NavResources;
Modified: trunk/src/main/java/cc/kune/chat/client/KuneChatNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/KuneChatNotifier.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/chat/client/KuneChatNotifier.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import com.calclab.hablar.signals.client.notifications.HablarNotifier;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -31,12 +31,12 @@
import com.google.gwt.regexp.shared.RegExp;
public class KuneChatNotifier implements HablarNotifier {
- private final FileDownloadUtils downUtils;
+ private final ClientFileDownloadUtils downUtils;
private final EventBus eventBus;
private final I18nTranslationService i18n;
private final RegExp regExp;
- public KuneChatNotifier(final I18nTranslationService i18n, final FileDownloadUtils downUtils,
+ public KuneChatNotifier(final I18nTranslationService i18n, final ClientFileDownloadUtils downUtils,
final EventBus eventBus) {
this.i18n = i18n;
this.downUtils = downUtils;
Modified: trunk/src/main/java/cc/kune/chat/client/KuneHablarSignals.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/KuneHablarSignals.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/chat/client/KuneHablarSignals.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.chat.client.ChatClientDefault.ChatClientAction;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import com.calclab.emite.core.client.xmpp.session.XmppSession;
import com.calclab.emite.xep.storage.client.PrivateStorageManager;
@@ -72,7 +72,7 @@
@SuppressWarnings("deprecation")
public KuneHablarSignals(final EventBus kuneEventBus, final XmppSession session, final Hablar hablar,
final ChatClientAction action, final ChatInstances chatInstances,
- final I18nTranslationService i18n, final FileDownloadUtils downUtils) {
+ final I18nTranslationService i18n, final ClientFileDownloadUtils downUtils) {
final HablarEventBus hablarEventBus = hablar.getEventBus();
final PrivateStorageManager storageManager = chatInstances.privateStorageManager;
Modified: trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,8 +24,8 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.ui.dialogs.PromptTopDialog;
import cc.kune.common.client.ui.dialogs.PromptTopDialog.Builder;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.actions.RolAction;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.resources.nav.NavResources;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -32,7 +32,7 @@
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
import cc.kune.common.client.errors.NotImplementedException;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -26,7 +26,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.errors.NotImplementedException;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.event.ButtonEvent;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,7 +24,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.errors.NotImplementedException;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.extjs.gxt.ui.client.widget.menu.HeaderMenuItem;
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtSubMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtSubMenuGui.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtSubMenuGui.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -22,7 +22,7 @@
import cc.kune.common.client.actions.ui.AbstractGuiItem;
import cc.kune.common.client.actions.ui.ParentWidget;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -28,7 +28,7 @@
import cc.kune.common.client.actions.ui.descrip.DropTarget;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.errors.NotImplementedException;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.Composite;
Modified: trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -23,8 +23,8 @@
import cc.kune.common.client.events.ProgressShowEvent;
import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.utils.SimpleResponseCallback;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.EventBus;
Modified: trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,9 +19,9 @@
*/
package cc.kune.common.client.tooltip;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.common.client.utils.TimerWrapper.Executer;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
Modified: trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicDialog.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicDialog.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -20,7 +20,7 @@
package cc.kune.common.client.ui.dialogs;
import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.client.ui.PopupTopPanel;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
Deleted: trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -1,254 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.common.client.utils;
-
-import java.util.ArrayList;
-
-import org.apache.commons.lang.WordUtils;
-
-import cc.kune.common.client.errors.NotImplementedException;
-import cc.kune.common.client.errors.UIException;
-
-import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer;
-import com.google.gwt.safehtml.shared.UriUtils;
-
-public class TextUtils {
-
- // Original regexp from http://www.regular-expressions.info/email.html
- public static final String EMAIL_REGEXP = "[-!#$%&\'*+/=?_`{|}~a-z0-9^]+(\\.[-!#$%&\'*+/=?_`{|}~a-z0-9^]+)*@(localhost|([a-z0-9]([-a-z0-9]*[a-z0-9])?\\.)+[a-z0-9]([-a-z0-9]*[a-z0-9]))?";
- public static final String IN_DEVELOPMENT = "In development";
-
- public static final String IN_DEVELOPMENT_P = " (in development)";
-
- public static final String NUM_REGEXP = "^[0-9]+$";
-
- public static final String UNIX_NAME = "^[a-z0-9_\\-]+$";
-
- // Original regexp from http://snippets.dzone.com/posts/show/452
- public static final String URL_REGEXP = "((ftp|http|https|mailto):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?)";
-
- /**
- * @see WordUtils#abbreviate
- */
- public static String abbreviate(final String str, int lower, int upper, final String appendToEnd) {
- // initial parameter checks
- if (str == null) {
- return null;
- }
- if (str.length() == 0) {
- return "";
- }
-
- // if the lower value is greater than the length of the string,
- // set to the length of the string
- if (lower > str.length()) {
- lower = str.length();
- }
- // if the upper value is -1 (i.e. no limit) or is greater
- // than the length of the string, set to the length of the string
- if (upper == -1 || upper > str.length()) {
- upper = str.length();
- }
- // if upper is less than lower, raise it to lower
- if (upper < lower) {
- upper = lower;
- }
-
- final StringBuffer result = new StringBuffer();
- final int index = str.indexOf(" ", lower);
- if (index == -1) {
- result.append(str.substring(0, upper));
- // only if abbreviation has occured do we append the appendToEnd value
- if (upper != str.length()) {
- result.append(defaultString(appendToEnd));
- }
- } else if (index > upper) {
- result.append(str.substring(0, upper));
- result.append(defaultString(appendToEnd));
- } else {
- result.append(str.substring(0, index));
- result.append(defaultString(appendToEnd));
- }
- return result.toString();
- }
-
- public static String br() {
- return "<br/>";
- }
-
- public static String brbr() {
- return "<br/><br/>";
- }
-
- /**
- * @see WordUtils#capitalize(String, char[])
- * @return
- */
- public static String capitalize(final String str, final char[] delimiters) {
- final int delimLen = (delimiters == null ? -1 : delimiters.length);
- if (str == null || str.length() == 0 || delimLen == 0) {
- return str;
- }
- final int strLen = str.length();
- final StringBuffer buffer = new StringBuffer(strLen);
- boolean capitalizeNext = true;
- for (int i = 0; i < strLen; i++) {
- final char ch = str.charAt(i);
-
- if (isDelimiter(ch, delimiters)) {
- buffer.append(ch);
- capitalizeNext = true;
- } else if (capitalizeNext) {
- // Original:in WordUtils buffer.append(Character.toTitleCase(ch));
- buffer.append(String.valueOf(ch).toUpperCase());
- capitalizeNext = false;
- } else {
- buffer.append(ch);
- }
- }
- return buffer.toString();
- }
-
- /**
- * @see WordUtils#capitalizeFully(String)
- */
- public static String capitalizeFully(String str, final char[] delimiters) {
- final int delimLen = (delimiters == null ? -1 : delimiters.length);
- if (str == null || str.length() == 0 || delimLen == 0) {
- return str;
- }
- str = str.toLowerCase();
- return capitalize(str, delimiters);
- }
-
- private static String defaultString(final String str) {
- return str == null ? "" : str;
- }
-
- public static String ellipsis(final String text, final int length) {
- return text == null ? "" : length <= 0 ? text : text.length() > length ? text.substring(0,
- length - 3) + "..." : text;
- }
-
- public static boolean empty(final String string) {
- return !notEmpty(string);
- }
-
- /**
- * This method escape only some dangerous html chars
- *
- * Try to use {@link SimpleHtmlSanitizer} better
- *
- */
- public static String escapeHtmlLight(final String source) {
- String result = source;
- if (source != null) {
- result = result.replaceAll("&", "&");
- result = result.replaceAll("\"", """);
- // text = text.replaceAll("\'", "'");
- result = result.replaceAll("<", "<");
- result = result.replaceAll(">", ">");
- result = result.replaceAll("—", "—");
- }
- return result;
- }
-
- /**
- * Generates a href link (with target="_blank")
- *
- */
- public static String generateHtmlLink(final String href, final String text) {
- return generateHtmlLink(href, text, true);
- }
-
- /**
- * Generates a href link
- *
- */
- public static String generateHtmlLink(final String href, final String text, final boolean targetBlank) {
- if (!UriUtils.isSafeUri(href)) {
- throw new UIException("Unsafe href");
- }
- return "<a href=\"" + UriUtils.sanitizeUri(href) + "\"" + (targetBlank ? "target=\"_blank\"" : "")
- + ">" + text + "</a>";
- }
-
- private static boolean isDelimiter(final char ch, final char[] delimiters) {
- if (delimiters == null) {
- throw new NotImplementedException();
- // return Character.isWhitespace(ch);
- }
- for (final char delimiter : delimiters) {
- if (ch == delimiter) {
- return true;
- }
- }
- return false;
- }
-
- public static boolean notEmpty(final String string) {
- return string != null && string.length() > 0;
- }
-
- public static String removeLastSlash(final String text) {
- return text.replaceFirst("/$", "");
- }
-
- public static ArrayList<String> splitTags(final String tagsString) {
- final ArrayList<String> tagsList = new ArrayList<String>();
- String tagsCopy = tagsString;
- // remove commas and quotes
- if (tagsString == null) {
- return tagsList;
- }
- tagsCopy = tagsCopy.replaceAll(",", " ");
- tagsCopy = tagsCopy.replaceAll("\"", "");
- tagsCopy = tagsCopy.replaceAll("\'", "");
- final String[] splitted = tagsCopy.split("\\s+");
- for (String tag : splitted) {
- tag = tag.replaceAll("\\s$", "");
- if (tag.length() > 0) {
- tagsList.add(tag);
- }
- }
- return tagsList;
- }
-
- /*
- * This method unescape only some dangerous html chars for use in GWT Html
- * widget for instance
- */
- public static String unescape(final String source) {
- if (source == null) {
- return null;
- }
- String result = source;
- result = result.replaceAll("&", "&");
- result = result.replaceAll(""", "\"");
- result = result.replaceAll("'", "\'");
- result = result.replaceAll("<", "<");
- result = result.replaceAll(">", ">");
- result = result.replaceAll("—", "—");
- return result;
- }
-
- public TextUtils() {
- }
-}
Deleted: trunk/src/main/java/cc/kune/common/client/utils/Url.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/Url.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/utils/Url.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -1,63 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.common.client.utils;
-
-import java.util.ArrayList;
-
-public class Url {
- private final String base;
- private final ArrayList<UrlParam> params;
-
- public Url(final String base) {
- this.base = base;
- params = new ArrayList<UrlParam>();
- }
-
- public Url(final String base, final UrlParam... iniParams) {
- this(base);
- for (final UrlParam param : iniParams) {
- addImpl(param);
- }
- }
-
- public void add(final UrlParam param) {
- addImpl(param);
- }
-
- private void addImpl(final UrlParam param) {
- params.add(param);
- }
-
- @Override
- public String toString() {
- String paramPart = "";
- boolean first = true;
- for (final UrlParam param : params) {
- if (first) {
- paramPart = "?" + param;
- first = false;
- } else {
- paramPart += "&" + param;
- }
- }
- return base + paramPart;
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -1,56 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.common.client.utils;
-
-import java.util.Date;
-
-public class UrlParam {
- public static String noCacheStringSuffix() {
- final String noCache = "&nocache=" + new Date().getTime();
- return noCache;
- }
- private final String name;
-
- private final String value;
-
- public UrlParam(final String name, final boolean value) {
- this.name = name;
- this.value = value ? "true" : "false";
- }
-
- public UrlParam(final String name, final String value) {
- this.name = name;
- this.value = value;
- }
-
- public String getName() {
- return name;
- }
-
- public String getValue() {
- return value;
- }
-
- @Override
- public String toString() {
- return name + "=" + value;
- }
-
-}
Modified: trunk/src/main/java/cc/kune/common/shared/i18n/I18nTranslationServiceMocked.java
===================================================================
--- trunk/src/main/java/cc/kune/common/shared/i18n/I18nTranslationServiceMocked.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/common/shared/i18n/I18nTranslationServiceMocked.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,7 +19,7 @@
*/
package cc.kune.common.shared.i18n;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
public class I18nTranslationServiceMocked extends I18nTranslationService {
@Override
Copied: trunk/src/main/java/cc/kune/common/shared/utils/TextUtils.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/shared/utils/TextUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/shared/utils/TextUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,254 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.shared.utils;
+
+import java.util.ArrayList;
+
+import org.apache.commons.lang.WordUtils;
+
+import cc.kune.common.client.errors.NotImplementedException;
+import cc.kune.common.client.errors.UIException;
+
+import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer;
+import com.google.gwt.safehtml.shared.UriUtils;
+
+public class TextUtils {
+
+ // Original regexp from http://www.regular-expressions.info/email.html
+ public static final String EMAIL_REGEXP = "[-!#$%&\'*+/=?_`{|}~a-z0-9^]+(\\.[-!#$%&\'*+/=?_`{|}~a-z0-9^]+)*@(localhost|([a-z0-9]([-a-z0-9]*[a-z0-9])?\\.)+[a-z0-9]([-a-z0-9]*[a-z0-9]))?";
+ public static final String IN_DEVELOPMENT = "In development";
+
+ public static final String IN_DEVELOPMENT_P = " (in development)";
+
+ public static final String NUM_REGEXP = "^[0-9]+$";
+
+ public static final String UNIX_NAME = "^[a-z0-9_\\-]+$";
+
+ // Original regexp from http://snippets.dzone.com/posts/show/452
+ public static final String URL_REGEXP = "((ftp|http|https|mailto):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?)";
+
+ /**
+ * @see WordUtils#abbreviate
+ */
+ public static String abbreviate(final String str, int lower, int upper, final String appendToEnd) {
+ // initial parameter checks
+ if (str == null) {
+ return null;
+ }
+ if (str.length() == 0) {
+ return "";
+ }
+
+ // if the lower value is greater than the length of the string,
+ // set to the length of the string
+ if (lower > str.length()) {
+ lower = str.length();
+ }
+ // if the upper value is -1 (i.e. no limit) or is greater
+ // than the length of the string, set to the length of the string
+ if (upper == -1 || upper > str.length()) {
+ upper = str.length();
+ }
+ // if upper is less than lower, raise it to lower
+ if (upper < lower) {
+ upper = lower;
+ }
+
+ final StringBuffer result = new StringBuffer();
+ final int index = str.indexOf(" ", lower);
+ if (index == -1) {
+ result.append(str.substring(0, upper));
+ // only if abbreviation has occured do we append the appendToEnd value
+ if (upper != str.length()) {
+ result.append(defaultString(appendToEnd));
+ }
+ } else if (index > upper) {
+ result.append(str.substring(0, upper));
+ result.append(defaultString(appendToEnd));
+ } else {
+ result.append(str.substring(0, index));
+ result.append(defaultString(appendToEnd));
+ }
+ return result.toString();
+ }
+
+ public static String br() {
+ return "<br/>";
+ }
+
+ public static String brbr() {
+ return "<br/><br/>";
+ }
+
+ /**
+ * @see WordUtils#capitalize(String, char[])
+ * @return
+ */
+ public static String capitalize(final String str, final char[] delimiters) {
+ final int delimLen = (delimiters == null ? -1 : delimiters.length);
+ if (str == null || str.length() == 0 || delimLen == 0) {
+ return str;
+ }
+ final int strLen = str.length();
+ final StringBuffer buffer = new StringBuffer(strLen);
+ boolean capitalizeNext = true;
+ for (int i = 0; i < strLen; i++) {
+ final char ch = str.charAt(i);
+
+ if (isDelimiter(ch, delimiters)) {
+ buffer.append(ch);
+ capitalizeNext = true;
+ } else if (capitalizeNext) {
+ // Original:in WordUtils buffer.append(Character.toTitleCase(ch));
+ buffer.append(String.valueOf(ch).toUpperCase());
+ capitalizeNext = false;
+ } else {
+ buffer.append(ch);
+ }
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * @see WordUtils#capitalizeFully(String)
+ */
+ public static String capitalizeFully(String str, final char[] delimiters) {
+ final int delimLen = (delimiters == null ? -1 : delimiters.length);
+ if (str == null || str.length() == 0 || delimLen == 0) {
+ return str;
+ }
+ str = str.toLowerCase();
+ return capitalize(str, delimiters);
+ }
+
+ private static String defaultString(final String str) {
+ return str == null ? "" : str;
+ }
+
+ public static String ellipsis(final String text, final int length) {
+ return text == null ? "" : length <= 0 ? text : text.length() > length ? text.substring(0,
+ length - 3) + "..." : text;
+ }
+
+ public static boolean empty(final String string) {
+ return !notEmpty(string);
+ }
+
+ /**
+ * This method escape only some dangerous html chars
+ *
+ * Try to use {@link SimpleHtmlSanitizer} better
+ *
+ */
+ public static String escapeHtmlLight(final String source) {
+ String result = source;
+ if (source != null) {
+ result = result.replaceAll("&", "&");
+ result = result.replaceAll("\"", """);
+ // text = text.replaceAll("\'", "'");
+ result = result.replaceAll("<", "<");
+ result = result.replaceAll(">", ">");
+ result = result.replaceAll("—", "—");
+ }
+ return result;
+ }
+
+ /**
+ * Generates a href link (with target="_blank")
+ *
+ */
+ public static String generateHtmlLink(final String href, final String text) {
+ return generateHtmlLink(href, text, true);
+ }
+
+ /**
+ * Generates a href link
+ *
+ */
+ public static String generateHtmlLink(final String href, final String text, final boolean targetBlank) {
+ if (!UriUtils.isSafeUri(href)) {
+ throw new UIException("Unsafe href");
+ }
+ return "<a href=\"" + UriUtils.sanitizeUri(href) + "\"" + (targetBlank ? "target=\"_blank\"" : "")
+ + ">" + text + "</a>";
+ }
+
+ private static boolean isDelimiter(final char ch, final char[] delimiters) {
+ if (delimiters == null) {
+ throw new NotImplementedException();
+ // return Character.isWhitespace(ch);
+ }
+ for (final char delimiter : delimiters) {
+ if (ch == delimiter) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean notEmpty(final String string) {
+ return string != null && string.length() > 0;
+ }
+
+ public static String removeLastSlash(final String text) {
+ return text.replaceFirst("/$", "");
+ }
+
+ public static ArrayList<String> splitTags(final String tagsString) {
+ final ArrayList<String> tagsList = new ArrayList<String>();
+ String tagsCopy = tagsString;
+ // remove commas and quotes
+ if (tagsString == null) {
+ return tagsList;
+ }
+ tagsCopy = tagsCopy.replaceAll(",", " ");
+ tagsCopy = tagsCopy.replaceAll("\"", "");
+ tagsCopy = tagsCopy.replaceAll("\'", "");
+ final String[] splitted = tagsCopy.split("\\s+");
+ for (String tag : splitted) {
+ tag = tag.replaceAll("\\s$", "");
+ if (tag.length() > 0) {
+ tagsList.add(tag);
+ }
+ }
+ return tagsList;
+ }
+
+ /*
+ * This method unescape only some dangerous html chars for use in GWT Html
+ * widget for instance
+ */
+ public static String unescape(final String source) {
+ if (source == null) {
+ return null;
+ }
+ String result = source;
+ result = result.replaceAll("&", "&");
+ result = result.replaceAll(""", "\"");
+ result = result.replaceAll("'", "\'");
+ result = result.replaceAll("<", "<");
+ result = result.replaceAll(">", ">");
+ result = result.replaceAll("—", "—");
+ return result;
+ }
+
+ public TextUtils() {
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/shared/utils/Url.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/utils/Url.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/shared/utils/Url.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/shared/utils/Url.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.shared.utils;
+
+import java.util.ArrayList;
+
+public class Url {
+ private final String base;
+ private final ArrayList<UrlParam> params;
+
+ public Url(final String base) {
+ this.base = base;
+ params = new ArrayList<UrlParam>();
+ }
+
+ public Url(final String base, final UrlParam... iniParams) {
+ this(base);
+ for (final UrlParam param : iniParams) {
+ addImpl(param);
+ }
+ }
+
+ public void add(final UrlParam param) {
+ addImpl(param);
+ }
+
+ private void addImpl(final UrlParam param) {
+ params.add(param);
+ }
+
+ @Override
+ public String toString() {
+ String paramPart = "";
+ boolean first = true;
+ for (final UrlParam param : params) {
+ if (first) {
+ paramPart = "?" + param;
+ first = false;
+ } else {
+ paramPart += "&" + param;
+ }
+ }
+ return base + paramPart;
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/common/shared/utils/UrlParam.java (from rev 1647, trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/shared/utils/UrlParam.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/shared/utils/UrlParam.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.common.shared.utils;
+
+import java.util.Date;
+
+public class UrlParam {
+ public static String noCacheStringSuffix() {
+ final String noCache = "&nocache=" + new Date().getTime();
+ return noCache;
+ }
+ private final String name;
+
+ private final String value;
+
+ public UrlParam(final String name, final boolean value) {
+ this.name = name;
+ this.value = value ? "true" : "false";
+ }
+
+ public UrlParam(final String name, final String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return name + "=" + value;
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -27,8 +27,8 @@
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.actions.ActionRegistryByType;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.registry.NewMenusForTypeIdsRegistry;
Modified: trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.events.UserNotifyEvent;
import cc.kune.common.client.notify.NotifyLevel;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.init.AppStartEvent;
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,9 +24,9 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyLevel;
import cc.kune.common.client.utils.OnAcceptCallback;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.common.client.utils.TimerWrapper.Executer;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.auth.SignInPresenter.SignInView;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.errors.UserAuthException;
Modified: trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,8 +19,8 @@
*/
package cc.kune.core.client.auth;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.ui.DefaultForm;
Modified: trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -22,7 +22,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.services.ImageSize;
import cc.kune.core.client.services.MediaUtils;
import cc.kune.core.client.state.Session;
@@ -41,7 +41,7 @@
FoldableContent {
private final GuiActionDescCollection actionRegistry;
- private final Provider<FileDownloadUtils> downloadProvider;
+ private final Provider<ClientFileDownloadUtils> downloadProvider;
private final I18nTranslationService i18n;
private final Provider<MediaUtils> mediaUtils;
protected final Session session;
@@ -52,7 +52,7 @@
public FoldableContentPresenter(final String toolName, final StateManager stateManager,
final Session session, final ActionContentToolbar toolbar,
- final GuiActionDescCollection actionRegistry, final Provider<FileDownloadUtils> downloadProvider,
+ final GuiActionDescCollection actionRegistry, final Provider<ClientFileDownloadUtils> downloadProvider,
final I18nTranslationService i18n, final Provider<MediaUtils> mediaUtils) {
this.toolName = toolName;
this.session = session;
@@ -154,7 +154,7 @@
final StateToken token = state.getStateToken();
final BasicMimeTypeDTO mimeType = state.getMimeType();
if (mimeType != null) {
- final FileDownloadUtils fileDownloadUtils = downloadProvider.get();
+ final ClientFileDownloadUtils fileDownloadUtils = downloadProvider.get();
if (mimeType.isImage()) {
view.showImage(fileDownloadUtils.getImageUrl(token),
fileDownloadUtils.getImageResizedUrl(token, ImageSize.sized), false);
Modified: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,8 +21,8 @@
import cc.kune.common.client.actions.ui.descrip.DropTarget;
import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
import cc.kune.core.client.state.ContentCache;
Modified: trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -20,8 +20,8 @@
package cc.kune.core.client.dnd;
import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import com.allen_sauer.gwt.dnd.client.DragContext;
import com.allen_sauer.gwt.dnd.client.VetoDragException;
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -27,8 +27,8 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyLevel;
import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.wave.client.WaveClientProvider;
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -32,9 +32,9 @@
import cc.kune.common.client.utils.MetaUtils;
import cc.kune.common.client.utils.Pair;
import cc.kune.common.client.utils.SimpleResponseCallback;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.WindowUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.rpcservices.I18nServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.UserSignInEvent;
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,9 +19,9 @@
*/
package cc.kune.core.client.i18n;
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.common.client.utils.Url;
-import cc.kune.common.client.utils.UrlParam;
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.common.shared.utils.Url;
+import cc.kune.common.shared.utils.UrlParam;
public class I18nUrlUtils {
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.errors.UIException;
import cc.kune.common.client.log.Log;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
/**
* Copied some methods from org.apache.commons.lang.WordUtils
Modified: trunk/src/main/java/cc/kune/core/client/registry/IdGenerator.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/registry/IdGenerator.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/registry/IdGenerator.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,7 +19,7 @@
*/
package cc.kune.core.client.registry;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gxp.com.google.common.base.Nullable;
Copied: trunk/src/main/java/cc/kune/core/client/services/ClientFileDownloadUtils.java (from rev 1647, trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/ClientFileDownloadUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/services/ClientFileDownloadUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,99 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * 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 cc.kune.core.client.services;
+
+import cc.kune.common.shared.utils.Url;
+import cc.kune.common.shared.utils.UrlParam;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.FileConstants;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.utils.SharedFileDownloadUtils;
+
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.inject.Inject;
+
+public class ClientFileDownloadUtils extends SharedFileDownloadUtils {
+
+ private final ImageUtils imageUtils;
+ private final Session session;
+
+ @Inject
+ public ClientFileDownloadUtils(final Session session, final ImageUtils imageUtils) {
+ this.session = session;
+ this.imageUtils = imageUtils;
+ }
+
+ private String calculateUrl(final StateToken token, final boolean download, final boolean useHash) {
+ final Url url = new Url(FileConstants.DOWNLOADSERVLET, new UrlParam(FileConstants.TOKEN,
+ token.toString()));
+ if (download) {
+ url.add(new UrlParam(FileConstants.DOWNLOAD, download));
+ }
+ if (useHash) {
+ final String hash = session.getUserHash();
+ if (hash != null) {
+ url.add(new UrlParam(FileConstants.HASH, hash));
+ }
+ }
+ return url.toString();
+ }
+
+ public void downloadFile(final StateToken token) {
+ final String url = calculateUrl(token, true, true);
+ DOM.setElementAttribute(RootPanel.get("__download").getElement(), "src", url);
+ }
+
+ public String getBackgroundImageUrl(final StateToken token) {
+ return new Url(FileConstants.BACKDOWNLOADSERVLET,
+ new UrlParam(FileConstants.TOKEN, token.toString())).toString();
+ }
+
+ public String getBackgroundResizedUrl(final StateToken token, final ImageSize imageSize) {
+ return new Url(FileConstants.BACKDOWNLOADSERVLET,
+ new UrlParam(FileConstants.TOKEN, token.toString()), new UrlParam(FileConstants.IMGSIZE,
+ imageSize.toString())).toString();
+ }
+
+ public String getImageResizedUrl(final StateToken token, final ImageSize imageSize) {
+ return calculateUrl(token, false, true) + "&"
+ + new UrlParam(FileConstants.IMGSIZE, imageSize.toString());
+ }
+
+ public String getImageUrl(final StateToken token) {
+ return calculateUrl(token, false, true);
+ }
+
+ public String getLogoAvatarHtml(final StateToken groupToken, final boolean groupHasLogo,
+ final boolean isPersonal, final int size, final int hvspace) {
+ if (groupHasLogo) {
+ return "<img hspace='" + hvspace + "' vspace='" + hvspace + "' align='left' style='width: " + size
+ + "px; height: " + size + "px;' src='" + getLogoImageUrl(groupToken.getGroup()) + "'>";
+ } else {
+ return isPersonal ? imageUtils.getImageHtml(ImageDescriptor.personDef)
+ : imageUtils.getImageHtml(ImageDescriptor.groupDefIcon);
+ }
+ }
+
+ public String getUrl(final StateToken token) {
+ return calculateUrl(token, false, false);
+ }
+
+}
Deleted: trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -1,118 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * 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 cc.kune.core.client.services;
-
-import cc.kune.common.client.utils.Url;
-import cc.kune.common.client.utils.UrlParam;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.FileConstants;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.core.shared.dto.UserSimpleDTO;
-
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.ui.RootPanel;
-import com.google.inject.Inject;
-
-public class FileDownloadUtils {
-
- private final ImageUtils imageUtils;
- private final Session session;
-
- @Inject
- public FileDownloadUtils(final Session session, final ImageUtils imageUtils) {
- this.session = session;
- this.imageUtils = imageUtils;
- }
-
- private String calculateUrl(final StateToken token, final boolean download, final boolean useHash) {
- final Url url = new Url(FileConstants.DOWNLOADSERVLET, new UrlParam(FileConstants.TOKEN,
- token.toString()));
- if (download) {
- url.add(new UrlParam(FileConstants.DOWNLOAD, download));
- }
- if (useHash) {
- final String hash = session.getUserHash();
- if (hash != null) {
- url.add(new UrlParam(FileConstants.HASH, hash));
- }
- }
- return url.toString();
- }
-
- public void downloadFile(final StateToken token) {
- final String url = calculateUrl(token, true, true);
- DOM.setElementAttribute(RootPanel.get("__download").getElement(), "src", url);
- }
-
- public String getBackgroundImageUrl(final StateToken token) {
- return new Url(FileConstants.BACKDOWNLOADSERVLET,
- new UrlParam(FileConstants.TOKEN, token.toString())).toString();
- }
-
- public String getBackgroundResizedUrl(final StateToken token, final ImageSize imageSize) {
- return new Url(FileConstants.BACKDOWNLOADSERVLET,
- new UrlParam(FileConstants.TOKEN, token.toString()), new UrlParam(FileConstants.IMGSIZE,
- imageSize.toString())).toString();
- }
-
- public String getGroupLogo(final GroupDTO group) {
- return group.hasLogo() ? getLogoImageUrl(group.getStateToken())
- : group.isPersonal() ? FileConstants.PERSON_NO_AVATAR_IMAGE
- : FileConstants.GROUP_NO_AVATAR_IMAGE;
- }
-
- public String getImageResizedUrl(final StateToken token, final ImageSize imageSize) {
- return calculateUrl(token, false, true) + "&"
- + new UrlParam(FileConstants.IMGSIZE, imageSize.toString());
- }
-
- public String getImageUrl(final StateToken token) {
- return calculateUrl(token, false, true);
- }
-
- public String getLogoAvatarHtml(final StateToken groupToken, final boolean groupHasLogo,
- final boolean isPersonal, final int size, final int hvspace) {
- if (groupHasLogo) {
- return "<img hspace='" + hvspace + "' vspace='" + hvspace + "' align='left' style='width: " + size
- + "px; height: " + size + "px;' src='" + getLogoImageUrl(groupToken) + "'>";
- } else {
- return isPersonal ? imageUtils.getImageHtml(ImageDescriptor.personDef)
- : imageUtils.getImageHtml(ImageDescriptor.groupDefIcon);
- }
- }
-
- public String getLogoImageUrl(final StateToken token) {
- return new Url(FileConstants.LOGODOWNLOADSERVLET,
- new UrlParam(FileConstants.TOKEN, token.toString())).toString();
- }
-
- public String getUrl(final StateToken token) {
- return calculateUrl(token, false, false);
- }
-
- public String getUserAvatar(final String username) {
- return new Url(FileConstants.AVATARDOWNLOADSERVLET, new UrlParam(FileConstants.USERNAME, username)).toString();
- }
-
- public String getUserAvatar(final UserSimpleDTO user) {
- return user.hasLogo() ? getLogoImageUrl(user.getStateToken()) : FileConstants.PERSON_NO_AVATAR_IMAGE;
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/services/MediaUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/MediaUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/services/MediaUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -30,9 +30,9 @@
private final Session session;
- private final FileDownloadUtils downloadUtils;
+ private final ClientFileDownloadUtils downloadUtils;
- public MediaUtils(final Session session, final FileDownloadUtils downloadUtils) {
+ public MediaUtils(final Session session, final ClientFileDownloadUtils downloadUtils) {
this.session = session;
this.downloadUtils = downloadUtils;
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -33,7 +33,7 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.actions.GotoGroupAction;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -53,7 +53,7 @@
public static final MenuDescriptor LOGGED_USER_MENU = new MenuDescriptor();
public static final String LOGGED_USER_MENU_ID = "kune-sump-lum";
- private final Provider<FileDownloadUtils> downloadProvider;
+ private final Provider<ClientFileDownloadUtils> downloadProvider;
private final GotoGroupAction gotoGroupAction;
private final I18nTranslationService i18n;
private SubMenuDescriptor partiMenu;
@@ -65,7 +65,7 @@
@Inject
public SiteUserOptionsPresenter(final Session session, final StateManager stateManager,
- final Provider<FileDownloadUtils> downloadProvider, final I18nTranslationService i18n,
+ final Provider<ClientFileDownloadUtils> downloadProvider, final I18nTranslationService i18n,
final CoreResources img, final SitebarActions siteOptions, final GotoGroupAction gotoGroupAction) {
super();
this.session = session;
Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -22,7 +22,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuTitleItemDescriptor;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.actions.registry.AbstractSNMembersActionsRegistry;
import cc.kune.core.shared.dto.GroupDTO;
@@ -37,10 +37,10 @@
private static final int MAX_NUM_AVATAR_IN_A_ROW = 6;
- protected final Provider<FileDownloadUtils> downloadProvider;
+ protected final Provider<ClientFileDownloadUtils> downloadProvider;
public AbstractSNPresenter(final EventBus eventBus, final View view, final Proxy<?> proxy,
- final Provider<FileDownloadUtils> downloadProvider) {
+ final Provider<ClientFileDownloadUtils> downloadProvider) {
super(eventBus, view, proxy);
this.downloadProvider = downloadProvider;
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -23,7 +23,7 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.actions.registry.GroupSNAdminsMenuItemsRegistry;
import cc.kune.core.client.sn.actions.registry.GroupSNCollabsMenuItemsRegistry;
import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
@@ -101,7 +101,7 @@
@Inject
public GroupSNPresenter(final EventBus eventBus, final GroupSNView view, final GroupSNProxy proxy,
final StateManager stateManager, final Session session,
- final Provider<FileDownloadUtils> downloadProvider,
+ final Provider<ClientFileDownloadUtils> downloadProvider,
final GroupSNAdminsMenuItemsRegistry adminsMenuItemsRegistry,
final GroupSNCollabsMenuItemsRegistry collabsMenuItemsRegistry,
final GroupSNPendingsMenuItemsRegistry pendingsMenuItemsRegistry,
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,7 +24,7 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.sn.UserSNPresenter.UserSNProxy;
import cc.kune.core.client.sn.UserSNPresenter.UserSNView;
import cc.kune.core.client.sn.actions.registry.UserSNConfActions;
@@ -95,7 +95,7 @@
@Inject
public UserSNPresenter(final EventBus eventBus, final UserSNView view, final UserSNProxy proxy,
final I18nTranslationService i18n, final StateManager stateManager, final Session session,
- final Provider<FileDownloadUtils> downloadProvider,
+ final Provider<ClientFileDownloadUtils> downloadProvider,
final UserSNMenuItemsRegistry userMenuItemsRegistry, final UserSNConfActions confActionsRegistry) {
super(eventBus, view, proxy, downloadProvider);
this.i18n = i18n;
Modified: trunk/src/main/java/cc/kune/core/client/sub/SubtitlesManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sub/SubtitlesManager.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/sub/SubtitlesManager.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.utils.Base64Utils;
import cc.kune.common.client.utils.SimpleCallback;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.state.StateManager;
import com.google.gwt.event.shared.EventBus;
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/tabbed/TabTitleGenerator.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/tabbed/TabTitleGenerator.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/tabbed/TabTitleGenerator.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import com.google.gwt.i18n.client.HasDirection.Direction;
import com.google.gwt.resources.client.ImageResource;
Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -22,10 +22,10 @@
import cc.kune.common.client.actions.ui.ActionFlowPanel;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.common.client.utils.UrlParam;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.UrlParam;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView;
import cc.kune.core.shared.FileConstants;
import cc.kune.core.shared.domain.utils.StateToken;
@@ -44,7 +44,7 @@
public class EntityHeaderPanel extends ViewImpl implements EntityHeaderView {
- private final Provider<FileDownloadUtils> downloadProvider;
+ private final Provider<ClientFileDownloadUtils> downloadProvider;
private final EntityTextLogo entityTextLogo;
private final CoreResources images;
private final HorizontalPanel mainPanel;
@@ -52,7 +52,7 @@
private final VerticalPanel vpanel;
@Inject
- public EntityHeaderPanel(final Provider<FileDownloadUtils> downloadProvider,
+ public EntityHeaderPanel(final Provider<ClientFileDownloadUtils> downloadProvider,
final CoreResources images, final GuiProvider bindings, final GSpaceArmor armor,
final EntityTextLogo entityTextLogo, final I18nTranslationService i18n) {
this.entityTextLogo = entityTextLogo;
@@ -108,7 +108,7 @@
@Override
public void setLogoImage(final GroupDTO group, final boolean noCache) {
- entityTextLogo.setLogoImage(downloadProvider.get().getLogoImageUrl(group.getStateToken())
+ entityTextLogo.setLogoImage(downloadProvider.get().getLogoImageUrl(group.getShortName())
+ (noCache ? UrlParam.noCacheStringSuffix() : ""));
}
Modified: trunk/src/main/java/cc/kune/core/server/InitData.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/InitData.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/InitData.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -165,11 +165,6 @@
return siteCommonName;
}
- @Deprecated
- public String getSiteDomain() {
- return siteDomain;
- }
-
public String getSiteLogoUrl() {
return siteLogoUrl;
}
@@ -306,11 +301,6 @@
this.siteCommonName = siteCommonName;
}
- @Deprecated
- public void setSiteDomain(final String siteDomain) {
- this.siteDomain = siteDomain;
- }
-
public void setSiteLogoUrl(final String siteLogoUrl) {
this.siteLogoUrl = siteLogoUrl;
}
Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -86,8 +86,8 @@
import cc.kune.core.server.manager.impl.UserManagerDefault;
import cc.kune.core.server.mapper.DozerMapper;
import cc.kune.core.server.mapper.Mapper;
-import cc.kune.core.server.notifier.NotifyService;
-import cc.kune.core.server.notifier.NotifyServiceDefault;
+import cc.kune.core.server.notifier.NotifySender;
+import cc.kune.core.server.notifier.NotifySenderDefault;
import cc.kune.core.server.notifier.UsersOnline;
import cc.kune.core.server.rpc.ContentRPC;
import cc.kune.core.server.rpc.GroupRPC;
@@ -195,7 +195,7 @@
bind(UsersOnline.class).to(UserSessionManager.class).in(Singleton.class);
requestStaticInjection(AccessRightsUtils.class);
bind(CronServerTasksManager.class).in(Singleton.class);
- bind(NotifyService.class).to(NotifyServiceDefault.class).in(Singleton.class);
+ bind(NotifySender.class).to(NotifySenderDefault.class).in(Singleton.class);
bind(WaveEmailNotifier.class).in(Singleton.class);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authenticated.class),
outermostCall(new AuthenticatedMethodInterceptor()));
Modified: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,8 +19,8 @@
*/
package cc.kune.core.server.i18n;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.server.UserSessionManager;
import cc.kune.core.server.manager.I18nTranslationManager;
import cc.kune.domain.I18nTranslation;
Added: trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/mail/FormatedString.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,141 @@
+package cc.kune.core.server.mail;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * The Class FormatedString is used to separate, String templates (usually html)
+ * from args (indicated with %s) and also to allow the translation of this
+ * templates.
+ */
+public class FormatedString {
+
+ public static FormatedString build(final boolean shouldBeTranslated, final String template,
+ final Object... args) {
+ return new FormatedString(shouldBeTranslated, template, args);
+ }
+
+ /**
+ * Builds with only a message without args.
+ *
+ * @param plainMsg
+ * the plain msg
+ * @return the formated string
+ */
+ public static FormatedString build(final String plainMsg) {
+ return new FormatedString(plainMsg);
+ }
+
+ /**
+ * Builds the.
+ *
+ * @param template
+ * the template
+ * @param args
+ * the args
+ * @return the formated string
+ */
+ public static FormatedString build(final String template, final Object... args) {
+ return new FormatedString(template, args);
+ }
+
+ /** The args. */
+ private final Object[] args;
+
+ /** The should be translated. */
+ private boolean shouldBeTranslated;
+
+ /** The template. */
+ private String template;
+
+ /**
+ * Instantiates a new formated string.
+ *
+ * @param template
+ * the template
+ * @param shouldBeTranslated
+ * the should be translated
+ * @param args
+ * the args that will be formatted inside the template (%s, etc)
+ */
+ public FormatedString(final boolean shouldBeTranslated, final String template, final Object... args) {
+ this.template = template;
+ this.shouldBeTranslated = shouldBeTranslated;
+ this.args = args;
+ }
+
+ /**
+ * Instantiates a new formated string.
+ *
+ * @param plainMsg
+ * the plain msg
+ */
+ public FormatedString(final String plainMsg) {
+ template = plainMsg;
+ args = null;
+ shouldBeTranslated = true;
+ }
+
+ /**
+ * Instantiates a new formated string.
+ *
+ * @param template
+ * the template
+ * @param args
+ * the args that will be formatted inside the template (%s, etc)
+ */
+ public FormatedString(final String template, final Object... args) {
+ this.template = template;
+ this.args = args;
+ this.shouldBeTranslated = true;
+ }
+
+ /**
+ * Gets the string.
+ *
+ * @return the string
+ */
+ public String getString() {
+ Preconditions.checkNotNull(template, "Template of FormatedString cannot be null");
+ return args == null ? template : String.format(template, args);
+ }
+
+ /**
+ * Gets the template.
+ *
+ * @return the template
+ */
+ public String getTemplate() {
+ return template;
+ }
+
+ /**
+ * Sets the should be translated.
+ *
+ * @param shouldBeTranslated
+ * the new should be translated
+ */
+ public void setShouldBeTranslated(final boolean shouldBeTranslated) {
+ this.shouldBeTranslated = shouldBeTranslated;
+ }
+
+ /**
+ * Sets the template. Used to translate the template to the user language
+ * (when you don't know already the language of the user)
+ *
+ * @param template
+ * the new template
+ */
+ public void setTemplate(final String template) {
+ this.template = template;
+ }
+
+ /**
+ * If should be translated (sometimes the template is only html and should not
+ * be translated)
+ *
+ * @return true, if should be
+ */
+ public boolean shouldBeTranslated() {
+ return shouldBeTranslated;
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/server/mail/MailService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/MailService.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/mail/MailService.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,8 +19,6 @@
*/
package cc.kune.core.server.mail;
-import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
-
public interface MailService {
/**
Modified: trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -35,7 +35,6 @@
import cc.kune.core.server.LogThis;
import cc.kune.core.server.properties.KuneProperties;
-import com.google.common.base.Preconditions;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -43,46 +42,6 @@
@LogThis
public class MailServiceDefault implements MailService {
- public static class FormatedString {
- public static FormatedString build(final String plainMsg) {
- return new FormatedString(plainMsg);
- }
-
- public static FormatedString build(final String template, final Object... args) {
- return new FormatedString(template, args);
- }
-
- private final Object[] args;
- private String template;
-
- public FormatedString(final String plainMsg) {
- template = plainMsg;
- args = null;
- }
-
- public FormatedString(final String template, final Object... args) {
- this.template = template;
- this.args = args;
- }
-
- public String getString() {
- Preconditions.checkNotNull(template, "Template of FormatedString cannot be null");
- return args == null ? template : String.format(template, args);
- }
-
- public String getTemplate() {
- return template;
- }
-
- /*
- * Used to translate the template to the user language (when you don't know
- * already the language of the user)
- */
- public void setTemplate(final String template) {
- this.template = template;
- }
- }
-
Log log = LogFactory.getLog(MailServiceDefault.class);
private final Properties props;
private final String smtpDefaultFrom;
Modified: trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -26,7 +26,7 @@
import javax.persistence.NoResultException;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.server.manager.impl.DefaultManager;
import cc.kune.core.shared.domain.TagCloudResult;
import cc.kune.core.shared.domain.TagCount;
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -55,8 +55,9 @@
}
if (!group.hasLogo()) {
- FileDownloadManagerUtils.returnFile("src/main/webapp/others/defgroup.gif",
- resp.getOutputStream());
+ FileDownloadManagerUtils.returnFile("src/main/webapp/"
+ + (group.isPersonal() ? FileConstants.PERSON_NO_AVATAR_IMAGE
+ : FileConstants.GROUP_NO_AVATAR_IMAGE), resp.getOutputStream());
} else {
// Has logo
final byte[] logo = group.getLogo();
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -25,7 +25,7 @@
import javax.persistence.EntityManager;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.I18nLanguageManager;
import cc.kune.core.server.manager.I18nTranslationManager;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -43,8 +43,8 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.EmailAddressInUseException;
import cc.kune.core.client.errors.GroupLongNameInUseException;
@@ -52,8 +52,8 @@
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.client.errors.UserRegistrationException;
import cc.kune.core.client.errors.WrongCurrentPasswordException;
+import cc.kune.core.server.mail.FormatedString;
import cc.kune.core.server.mail.MailService;
-import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.I18nCountryManager;
import cc.kune.core.server.manager.I18nLanguageManager;
Added: trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyHtmlHelper.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,59 @@
+package cc.kune.core.server.notifier;
+
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.utils.AbsoluteFileDownloadUtils;
+import cc.kune.core.shared.utils.SharedFileDownloadUtils;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * The Class NotifyHtmlHelper is used to get html snippets for email
+ * notifications.
+ */
+@Singleton
+public class NotifyHtmlHelper {
+
+ /** The template used from messages snippets from a group */
+ private static String GROUP_TEMPLATE = "<table style=\"FIXME\" border=\"0\" cellpadding=\"2\" cellspacing=\"2\" width=\"100%%\">"
+ + "<tbody><tr>"
+ + "<td style=\"\" valign=\"top\"><a href=\"%s\">%s</a></td>"
+ + "<td style=\"\" valign=\"top\" width=\"100%%\">"
+ + "<a href=\"%s\">%s</a><br>"
+ + "%s"
+ + "</td></tr></tbody></table>";
+
+ private final SharedFileDownloadUtils fileDownloadUtils;
+
+ /**
+ * Instantiates a new notify html helper.
+ *
+ * @param fileDownloadUtils
+ * the file download utils
+ */
+ @Inject
+ public NotifyHtmlHelper(final AbsoluteFileDownloadUtils fileDownloadUtils) {
+ this.fileDownloadUtils = fileDownloadUtils;
+ }
+
+ /**
+ * Generates a group notification in html like [logo|message]
+ *
+ * @param groupName
+ * the group name you want to get the notification
+ * @param hasLogo
+ * the has logo?
+ * @param message
+ * the message to show close to the logo
+ * @param readMoreMsg
+ * the read more msg
+ * @return the html string
+ */
+ public FormatedString groupNotification(final String groupName, final boolean hasLogo,
+ final String message) {
+ final String groupUrl = fileDownloadUtils.getPrefix() + "#" + groupName;
+ return FormatedString.build(false, GROUP_TEMPLATE, groupUrl,
+ fileDownloadUtils.getLogoAvatarHtml(groupName, hasLogo, false, 50, 50), groupUrl, groupName,
+ message);
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java (from rev 1648, trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySender.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,45 @@
+package cc.kune.core.server.notifier;
+
+import cc.kune.core.server.mail.FormatedString;
+
+/**
+ * The Interface NotifySender.
+ */
+public interface NotifySender {
+
+ /**
+ * Send a message to the recipients (also translate the subject/body using the
+ * user language)
+ *
+ * @param notifyType
+ * the notify type (email, etc)
+ * @param subject
+ * the subject of the message (not translated)
+ * @param body
+ * the body of the message (not translated) but with %s
+ * {@link String.format} args
+ * @param isHtml
+ * if the body is html
+ * @param recipients
+ * the recipients shortnames (without domain)
+ */
+ void send(NotifyType notifyType, FormatedString subject, FormatedString body, boolean isHtml,
+ String... recipients);
+
+ /**
+ * Send a message to the recipients (also translate the subject/body using the
+ * user language)
+ *
+ * @param notifyType
+ * the notify type (email, etc)
+ * @param subject
+ * the subject of the message
+ * @param body
+ * the body of the message (no translated) but with some %s
+ * {@link String.format} args
+ * @param recipients
+ * the recipients shortnames (without domain)
+ */
+ void send(NotifyType notifyType, FormatedString subject, FormatedString body, String... recipients);
+
+}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java (from rev 1649, trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,109 @@
+package cc.kune.core.server.notifier;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.persistence.NoResultException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.mail.MailService;
+import cc.kune.core.server.manager.I18nTranslationManager;
+import cc.kune.core.server.manager.UserManager;
+import cc.kune.core.server.properties.KuneProperties;
+import cc.kune.core.server.xmpp.XmppManager;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
+import cc.kune.domain.User;
+import cc.kune.wave.server.KuneWaveService;
+
+import com.google.common.base.Preconditions;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class NotifySenderDefault implements NotifySender {
+ public static final Log LOG = LogFactory.getLog(NotifySenderDefault.class);
+ private final String emailTemplate;
+ private final I18nTranslationManager i18n;
+ private final MailService mailService;
+ private final UserManager userManager;
+ private final KuneWaveService waveService;
+ private final XmppManager xmppManager;
+
+ @Inject
+ public NotifySenderDefault(final MailService mailService, final KuneWaveService waveService,
+ final XmppManager xmppManager, final UserManager userManager, final I18nTranslationManager i18n,
+ final KuneProperties kuneProperties) throws IOException {
+ this.mailService = mailService;
+ this.waveService = waveService;
+ this.xmppManager = xmppManager;
+ this.userManager = userManager;
+ this.i18n = i18n;
+ emailTemplate = FileUtils.readFileToString(new File(
+ kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
+ Preconditions.checkNotNull(emailTemplate);
+ Preconditions.checkArgument(TextUtils.notEmpty(emailTemplate));
+ }
+
+ @Override
+ public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
+ final boolean isHtml, final String... recipients) {
+ for (final String recipient : recipients) {
+ User user;
+ try {
+ user = userManager.findByShortname(recipient);
+ } catch (final NoResultException e) {
+ LOG.info(String.format("The recipient %s is not a local user, don't notify", recipient));
+ continue;
+ }
+ if (subject.shouldBeTranslated()) {
+ // Translate per recipient language
+ final String subjectTranslation = i18n.getTranslation(user.getLanguage().getCode(),
+ subject.getTemplate(), "");
+ if (subjectTranslation != null) {
+ // Right now commented because we are only testing
+ // subject.setTemplate(subjectTranslation);
+ }
+ }
+ if (body.shouldBeTranslated()) {
+ final String bodyTranslation = i18n.getTranslation(user.getLanguage().getCode(),
+ body.getTemplate(), "");
+ if (bodyTranslation != null) {
+ // Right now commented because we are only testing
+ // body.setTemplate(bodyTranslation);
+ }
+ }
+ switch (notifyType) {
+ case chat:
+ xmppManager.sendMessage(recipient,
+ String.format("<b>%s</b>%s", subject.getString(), body.getString()));
+ break;
+ case email:
+ if (user.getEmailNotifFreq().equals(EmailNotificationFrequency.immediately)) {
+ mailService.send(subject, FormatedString.build(emailTemplate.replace("%s", body.getString())),
+ isHtml, user.getEmail());
+ } else {
+ // TODO: handle other types of notifications frequencies
+ }
+ break;
+ case wave:
+ if (isHtml) {
+ LOG.error("Wave html messages not supported yet");
+ }
+ waveService.createWave(subject.getString(), body.getString(), recipient);
+ break;
+ }
+ }
+ }
+
+ @Override
+ public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
+ final String... dests) {
+ send(notifyType, subject, body, false, dests);
+ }
+
+}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -1,45 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
-
-/**
- * The Interface NotifyService.
- */
-public interface NotifyService {
-
- /**
- * Send a message to the recipients (also translate the subject/body using the
- * user language)
- *
- * @param notifyType
- * the notify type (email, etc)
- * @param subject
- * the subject of the message (not translated)
- * @param body
- * the body of the message (not translated) but with %s
- * {@link String.format} args
- * @param isHtml
- * if the body is html
- * @param recipients
- * the recipients shortnames (without domain)
- */
- void send(NotifyType notifyType, FormatedString subject, FormatedString body, boolean isHtml,
- String... recipients);
-
- /**
- * Send a message to the recipients (also translate the subject/body using the
- * user language)
- *
- * @param notifyType
- * the notify type (email, etc)
- * @param subject
- * the subject of the message
- * @param body
- * the body of the message (no translated) but with some %s
- * {@link String.format} args
- * @param recipients
- * the recipients shortnames (without domain)
- */
- void send(NotifyType notifyType, FormatedString subject, FormatedString body, String... recipients);
-
-}
Copied: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java (from rev 1649, trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,55 @@
+package cc.kune.core.server.notifier;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.domain.Group;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class NotifyService {
+
+ private final NotifyHtmlHelper helper;
+ private final NotifySender sender;
+
+ @Inject
+ NotifyService(final NotifySender sender, final NotifyHtmlHelper helper) {
+ this.sender = sender;
+ this.helper = helper;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void notifyGroup(final Group groupToNotify, final Group groupSender, final String subject,
+ final String message) {
+ final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
+ final Set<Group> collabs = groupToNotify.getSocialNetwork().getAccessLists().getEditors().getList();
+ final List<Group> groups = (List<Group>) CollectionUtils.union(admins, collabs);
+ notifyToAll(groupSender, subject, message, groups);
+ }
+
+ public void notifyGroupAdmins(final Group groupToNotify, final Group groupSender,
+ final String subject, final String message) {
+ final Set<Group> admins = groupToNotify.getSocialNetwork().getAccessLists().getAdmins().getList();
+ notifyToAll(groupSender, subject, message, admins);
+ }
+
+ private void notifyToAll(final Group groupSender, final String subject, final String message,
+ final Collection<Group> groups) {
+ for (final Group to : groups) {
+ sender.send(NotifyType.email, FormatedString.build(subject),
+ helper.groupNotification(groupSender.getShortName(), groupSender.hasLogo(), message),
+ to.getShortName());
+ }
+ }
+
+ public void notifyUser(final String to, final Group group, final String subject, final String message) {
+ sender.send(NotifyType.email, FormatedString.build(subject),
+ helper.groupNotification(group.getShortName(), group.hasLogo(), message), to);
+ }
+}
Deleted: trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -1,105 +0,0 @@
-package cc.kune.core.server.notifier;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.persistence.NoResultException;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.server.mail.MailService;
-import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
-import cc.kune.core.server.manager.I18nTranslationManager;
-import cc.kune.core.server.manager.UserManager;
-import cc.kune.core.server.properties.KuneProperties;
-import cc.kune.core.server.xmpp.XmppManager;
-import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
-import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveService;
-
-import com.google.common.base.Preconditions;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-public class NotifyServiceDefault implements NotifyService {
- public static final Log LOG = LogFactory.getLog(NotifyServiceDefault.class);
- private final String emailTemplate;
- private final I18nTranslationManager i18n;
- private final MailService mailService;
- private final UserManager userManager;
- private final KuneWaveService waveService;
- private final XmppManager xmppManager;
-
- @Inject
- public NotifyServiceDefault(final MailService mailService, final KuneWaveService waveService,
- final XmppManager xmppManager, final UserManager userManager, final I18nTranslationManager i18n,
- final KuneProperties kuneProperties) throws IOException {
- this.mailService = mailService;
- this.waveService = waveService;
- this.xmppManager = xmppManager;
- this.userManager = userManager;
- this.i18n = i18n;
- emailTemplate = FileUtils.readFileToString(new File(
- kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
- Preconditions.checkNotNull(emailTemplate);
- Preconditions.checkArgument(TextUtils.notEmpty(emailTemplate));
- }
-
- @Override
- public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final boolean isHtml, final String... recipients) {
- for (final String recipient : recipients) {
- User user;
- try {
- user = userManager.findByShortname(recipient);
- } catch (final NoResultException e) {
- LOG.info(String.format("The recipient %s is not a local user, don't notify", recipient));
- continue;
- }
- // Translate per recipient language
- final String subjectTranslation = i18n.getTranslation(user.getLanguage().getCode(),
- subject.getTemplate(), "");
- if (subjectTranslation != null) {
- // Right now commented because we are only testing
- // subject.setTemplate(subjectTranslation);
- }
- final String bodyTranslation = i18n.getTranslation(user.getLanguage().getCode(),
- body.getTemplate(), "");
- if (bodyTranslation != null) {
- // Right now commented because we are only testing
- // body.setTemplate(bodyTranslation);
- }
- switch (notifyType) {
- case chat:
- xmppManager.sendMessage(recipient,
- String.format("<b>%s</b>%s", subject.getString(), body.getString()));
- break;
- case email:
- if (user.getEmailNotifFreq().equals(EmailNotificationFrequency.immediately)) {
- mailService.send(subject, FormatedString.build(emailTemplate.replace("%s", body.getString())),
- isHtml, user.getEmail());
- } else {
- // TODO: handle other types of notifications frequencies
- }
- break;
- case wave:
- if (isHtml) {
- LOG.error("Wave html messages not supported yet");
- }
- waveService.createWave(subject.getString(), body.getString(), recipient);
- break;
- }
- }
- }
-
- @Override
- public void send(final NotifyType notifyType, final FormatedString subject, final FormatedString body,
- final String... dests) {
- send(notifyType, subject, body, false, dests);
- }
-
-}
Modified: trunk/src/main/java/cc/kune/core/server/properties/KuneBasicProperties.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/properties/KuneBasicProperties.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/properties/KuneBasicProperties.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -72,13 +72,8 @@
return properties.get(KuneProperties.SITE_COMMON_NAME);
}
- /**
- * Gets the site domain (something like example.org)
- *
- * @return the site domain
- */
- public String getSiteDomain() {
- return properties.get(KuneProperties.SITE_DOMAIN);
+ public String getSiteUrl() {
+ return properties.get(KuneProperties.SITE_URL);
}
public String getWelcomewave() {
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -127,7 +127,6 @@
data.setTimezones(TimeZone.getAvailableIDs());
data.setChatHttpBase(chatProperties.getHttpBase());
data.setChatDomain(chatProperties.getDomain());
- data.setSiteDomain(kuneProperties.get(KuneProperties.SITE_DOMAIN));
data.setChatRoomHost(chatProperties.getRoomHost());
data.setDefaultLicense(licenseManager.getDefLicense());
data.setCurrentCCversion(this.kuneProperties.get(KuneProperties.CURRENT_CC_VERSION));
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -28,6 +28,7 @@
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.SocialNetworkManager;
import cc.kune.core.server.mapper.Mapper;
+import cc.kune.core.server.notifier.NotifyService;
import cc.kune.core.shared.domain.AccessRol;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
@@ -42,16 +43,19 @@
private final GroupManager groupManager;
private final Mapper mapper;
+ private final NotifyService notifyService;
private final SocialNetworkManager socialNetworkManager;
private final UserSessionManager userSessionManager;
@Inject
public SocialNetworkRPC(final UserSessionManager userSessionManager, final GroupManager groupManager,
- final SocialNetworkManager socialNetworkManager, final Mapper mapper) {
+ final SocialNetworkManager socialNetworkManager, final Mapper mapper,
+ final NotifyService notifyService) {
this.userSessionManager = userSessionManager;
this.groupManager = groupManager;
this.socialNetworkManager = socialNetworkManager;
this.mapper = mapper;
+ this.notifyService = notifyService;
}
@Override
@@ -65,6 +69,8 @@
checkIsNotPersonalGroup(group);
final Group groupToAccept = groupManager.findByShortName(groupToAcceptShortName);
socialNetworkManager.acceptJoinGroup(userLogged, groupToAccept, group);
+ notifyService.notifyGroup(groupToAccept, group, "Accepted as member",
+ "You are now member of this group");
return generateResponse(userLogged, group);
}
@@ -79,6 +85,7 @@
checkIsNotPersonalGroup(group);
final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
socialNetworkManager.addGroupToAdmins(userLogged, groupToAdd, group);
+ notifyService.notifyGroup(groupToAdd, group, "Accepted as admin", "You are now admin of this group");
return generateResponse(userLogged, group);
}
@@ -93,6 +100,8 @@
checkIsNotPersonalGroup(group);
final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
socialNetworkManager.addGroupToCollabs(userLogged, groupToAdd, group);
+ notifyService.notifyGroup(groupToAdd, group, "Accepted as collaborator",
+ "You are now a collaborator of this group");
return generateResponse(userLogged, group);
}
@@ -128,6 +137,8 @@
checkIsNotPersonalGroup(group);
final Group groupToDelete = groupManager.findByShortName(groupToDeleleShortName);
socialNetworkManager.deleteMember(userLogged, groupToDelete, group);
+ notifyService.notifyGroup(groupToDelete, group, "Removed as collaborator",
+ "You have been remove as collaborator of this group");
return generateResponse(userLogged, group);
}
@@ -142,6 +153,8 @@
checkIsNotPersonalGroup(group);
final Group groupToDenyJoin = groupManager.findByShortName(groupToDenyShortName);
socialNetworkManager.denyJoinGroup(userLogged, groupToDenyJoin, group);
+ notifyService.notifyGroup(groupToDenyJoin, group, "Membership denied",
+ "Your membership to this group has been rejected");
return generateResponse(userLogged, group);
}
@@ -170,6 +183,8 @@
final User user = userSessionManager.getUser();
final Group group = groupManager.findByShortName(groupToken.getGroup());
checkIsNotPersonalGroup(group);
+ notifyService.notifyGroupAdmins(group, group, "Pending collaborator",
+ "There is a pending collaborator in this group. Please accept or deny him/her");
return socialNetworkManager.requestToJoin(user, group);
}
@@ -184,6 +199,8 @@
checkIsNotPersonalGroup(group);
final Group groupToSetCollab = groupManager.findByShortName(groupToSetCollabShortName);
socialNetworkManager.setAdminAsCollab(userLogged, groupToSetCollab, group);
+ notifyService.notifyGroup(groupToSetCollab, group, "Membership changed",
+ "Your membership to this group have changed. You are now a collaborator of this group");
return generateResponse(userLogged, group);
}
@@ -198,6 +215,8 @@
checkIsNotPersonalGroup(group);
final Group groupToSetAdmin = groupManager.findByShortName(groupToSetAdminShortName);
socialNetworkManager.setCollabAsAdmin(userLogged, groupToSetAdmin, group);
+ notifyService.notifyGroup(groupToSetAdmin, group, "Membership changed",
+ "Your membership to this group have changed. You are now an admin of this group");
return generateResponse(userLogged, group);
}
@@ -209,6 +228,8 @@
final Group group = groupManager.findByShortName(groupToken.getGroup());
checkIsNotPersonalGroup(group);
socialNetworkManager.unJoinGroup(userLogged.getUserGroup(), group);
+ notifyService.notifyGroupAdmins(group, userLogged.getUserGroup(), "Some member left this group",
+ "Some member have left this group");
}
}
Added: trunk/src/main/java/cc/kune/core/server/utils/AbsoluteFileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/utils/AbsoluteFileDownloadUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/utils/AbsoluteFileDownloadUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,20 @@
+package cc.kune.core.server.utils;
+
+import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.core.shared.utils.SharedFileDownloadUtils;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * The Class AbsoluteFileDownloadUtils get url of avatars etc, with absolute
+ * urls (with domain, etc).
+ */
+@Singleton
+public class AbsoluteFileDownloadUtils extends SharedFileDownloadUtils {
+
+ @Inject
+ public AbsoluteFileDownloadUtils(final KuneBasicProperties properties) {
+ super(properties.getSiteUrl());
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/server/utils/FilenameUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/utils/FilenameUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/utils/FilenameUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import org.apache.commons.lang.StringUtils;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.errors.NameNotPermittedException;
public class FilenameUtils {
Modified: trunk/src/main/java/cc/kune/core/server/xmpp/XmppManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/xmpp/XmppManagerDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/server/xmpp/XmppManagerDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -39,7 +39,7 @@
import org.jivesoftware.smackx.FormField;
import org.jivesoftware.smackx.muc.MultiUserChat;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.server.properties.ChatProperties;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/shared/FileConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/FileConstants.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/shared/FileConstants.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -29,7 +29,11 @@
public static final String DOWNLOADSERVLET = ASITE_PREFIX + "servlets/FileDownloadManager";
public final static String FILENAME = "filename";
public final static String GROUP_LOGO_FIELD = "k-glogov-ff";
- public static final String GROUP_NO_AVATAR_IMAGE = ASITE_PREFIX + "images/group-def-icon.png";
+ // public static final String GROUP_NO_AVATAR_IMAGE = ASITE_PREFIX +
+ // "images/group-def-icon.png";
+ public static final String GROUP_NO_AVATAR_IMAGE = "others/defgroup.gif";
+ public static final String GROUP_NO_AVATAR_IMAGE_PATH = ASITE_PREFIX + GROUP_NO_AVATAR_IMAGE;
+
public final static String HASH = "hash";
public final static String IMGSIZE = "imgsize";
public final static int LOGO_DEF_HEIGHT = 60;
@@ -37,7 +41,8 @@
public final static int LOGO_MIN_HEIGHT = 28;
public final static int LOGO_MIN_WIDTH = 468;
public static final String LOGODOWNLOADSERVLET = ASITE_PREFIX + "servlets/EntityLogoDownloadManager";
- public final static String PERSON_NO_AVATAR_IMAGE = ASITE_PREFIX + "images/unknown.jpg";
+ public final static String PERSON_NO_AVATAR_IMAGE = "images/unknown.jpg";
+ public final static String PERSON_NO_AVATAR_IMAGE_PATH = ASITE_PREFIX + PERSON_NO_AVATAR_IMAGE;
public final static String TOKEN = "token";
public final static String TYPE_ID = "typeid";
public final static String USER_LOGO_FIELD = "k-ulogov-ff";
Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -50,7 +50,6 @@
private String mp3EmbedObject;
private String oggEmbedObject;
private ReservedWordsRegistryDTO reservedWords;
- private String siteDomain;
private String siteLogoUrl;
private String siteLogoUrlOnOver;
private String siteShortName;
@@ -157,10 +156,6 @@
}
@Deprecated
- public String getSiteDomain() {
- return siteDomain;
- }
-
public String getSiteLogoUrl() {
return siteLogoUrl;
}
@@ -297,11 +292,6 @@
this.reservedWords = reservedWords;
}
- @Deprecated
- public void setSiteDomain(final String siteDomain) {
- this.siteDomain = siteDomain;
- }
-
public void setSiteLogoUrl(final String siteLogoUrl) {
this.siteLogoUrl = siteLogoUrl;
}
Added: trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,56 @@
+package cc.kune.core.shared.utils;
+
+import cc.kune.common.shared.utils.Url;
+import cc.kune.common.shared.utils.UrlParam;
+import cc.kune.core.shared.FileConstants;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.dto.UserSimpleDTO;
+
+public class SharedFileDownloadUtils {
+
+ private final String prefix;
+
+ public SharedFileDownloadUtils() {
+ this.prefix = "";
+ }
+
+ public SharedFileDownloadUtils(final String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getGroupLogo(final GroupDTO group) {
+ return prefix
+ + (group.hasLogo() ? getLogoImageUrl(group.getShortName())
+ : group.isPersonal() ? FileConstants.PERSON_NO_AVATAR_IMAGE_PATH
+ : FileConstants.GROUP_NO_AVATAR_IMAGE_PATH);
+ }
+
+ public String getLogoAvatarHtml(final String groupName, final boolean groupHasLogo,
+ final boolean isPersonal, final int size, final int hvspace) {
+ final String imgUrl = groupHasLogo ? getLogoImageUrl(groupName)
+ : isPersonal ? FileConstants.PERSON_NO_AVATAR_IMAGE : FileConstants.GROUP_NO_AVATAR_IMAGE;
+ return "<img hspace='" + hvspace + "' vspace='" + hvspace + "' align='left' style='width: " + size
+ + "px; height: " + size + "px;' src='" + prefix + imgUrl + "'>";
+ }
+
+ public String getLogoImageUrl(final String groupName) {
+ return prefix
+ + new Url(FileConstants.LOGODOWNLOADSERVLET, new UrlParam(FileConstants.TOKEN, groupName)).toString();
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public String getUserAvatar(final String username) {
+ return prefix
+ + new Url(FileConstants.AVATARDOWNLOADSERVLET, new UrlParam(FileConstants.USERNAME, username)).toString();
+ }
+
+ public String getUserAvatar(final UserSimpleDTO user) {
+ return prefix
+ + (user.hasLogo() ? getLogoImageUrl(user.getShortName())
+ : FileConstants.PERSON_NO_AVATAR_IMAGE_PATH);
+ }
+
+}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/events/client/actions/EventEditMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/actions/EventEditMenuItem.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/events/client/actions/EventEditMenuItem.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -4,8 +4,8 @@
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.ui.dialogs.PromptTopDialog;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.actions.RolAction;
import cc.kune.core.client.resources.nav.NavResources;
import cc.kune.core.shared.dto.AccessRolDTO;
Modified: trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -4,8 +4,8 @@
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.ui.dialogs.PromptTopDialog;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.actions.RolAction;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.shared.dto.AccessRolDTO;
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -16,8 +16,8 @@
package cc.kune.gspace.client.i18n;
import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.I18nTranslationDTO;
Modified: trunk/src/main/java/cc/kune/gspace/client/licensewizard/pages/LicenseWizardFirstForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/licensewizard/pages/LicenseWizardFirstForm.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/licensewizard/pages/LicenseWizardFirstForm.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -20,8 +20,8 @@
package cc.kune.gspace.client.licensewizard.pages;
import cc.kune.common.client.utils.SimpleCallback;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.ui.DefaultForm;
import cc.kune.core.client.ui.DefaultFormUtils;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,11 +24,11 @@
import gwtupload.client.IUploader.OnFinishUploaderHandler;
import gwtupload.client.IUploader.OnStartUploaderHandler;
import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.services.ImageSize;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateChangedEvent;
@@ -53,7 +53,7 @@
private final GSpaceBackManager backManager;
private final EntityOptions entityOptions;
private final EventBus eventBus;
- private final FileDownloadUtils fileDownloadUtils;
+ private final ClientFileDownloadUtils fileDownloadUtils;
private final Provider<GroupServiceAsync> groupService;
private final I18nTranslationService i18n;
private final Session session;
@@ -64,7 +64,7 @@
final StateManager stateManager, final EntityOptions entityOptions,
final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
final GSpaceThemeSelectorPresenter styleSelector, final I18nTranslationService i18n,
- final FileDownloadUtils fileDownloadUtils) {
+ final ClientFileDownloadUtils fileDownloadUtils) {
this.eventBus = eventBus;
this.session = session;
this.stateManager = stateManager;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.gspace.client.options.GroupOptions;
@@ -40,7 +40,7 @@
final StateManager stateManager, final GroupOptions entityOptions,
final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
final GroupOptStyleView view, final GSpaceThemeSelectorPresenter styleSelector,
- final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
+ final I18nTranslationService i18n, final ClientFileDownloadUtils fileDownUtils) {
super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
i18n, fileDownUtils);
init(view);
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.gspace.client.options.UserOptions;
@@ -42,7 +42,7 @@
final StateManager stateManager, final UserOptions entityOptions,
final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
final UserOptStyleView view, final GSpaceThemeSelectorPresenter styleSelector,
- final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
+ final I18nTranslationService i18n, final ClientFileDownloadUtils fileDownUtils) {
super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
i18n, fileDownUtils);
init(view);
Modified: trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,7 +21,7 @@
import javax.annotation.Nonnull;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.gspace.client.GSpaceArmor;
@@ -31,13 +31,13 @@
public class GSpaceBackManagerImpl implements GSpaceBackManager {
private static final StateToken NO_TOKEN = new StateToken("none.none.0.0");
- private final FileDownloadUtils downloadUtils;
+ private final ClientFileDownloadUtils downloadUtils;
private final GSpaceArmor gSpaceArmor;
private StateToken lastToken;
private final StateManager stateManager;
@Inject
- public GSpaceBackManagerImpl(final FileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor,
+ public GSpaceBackManagerImpl(final ClientFileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor,
final StateManager stateManager) {
this.downloadUtils = downloadUtils;
this.gSpaceArmor = gSpaceArmor;
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,7 +24,7 @@
import cc.kune.common.client.errors.UIException;
import cc.kune.common.client.log.Log;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.state.GroupChangedEvent;
import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.StateChangedEvent;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -3,12 +3,12 @@
import javax.annotation.Nonnull;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.actions.ActionRegistryByType;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.registry.IconsRegistry;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.services.ImageSize;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -36,7 +36,7 @@
private final ActionRegistryByType actionsRegistry;
private final ContentCapabilitiesRegistry capabilitiesRegistry;
- private final Provider<FileDownloadUtils> downloadUtilsProvider;
+ private final Provider<ClientFileDownloadUtils> downloadUtilsProvider;
private final I18nTranslationService i18n;
private final IconsRegistry iconsRegistry;
private final PathToolbarUtils pathToolbarUtils;
@@ -46,7 +46,7 @@
@Inject
public FolderViewerUtils(final ContentCapabilitiesRegistry capabilitiesRegistry,
- final Session session, final Provider<FileDownloadUtils> downloadUtilsProvider,
+ final Session session, final Provider<ClientFileDownloadUtils> downloadUtilsProvider,
final I18nTranslationService i18n, final ActionRegistryByType actionsRegistry,
final StateManager stateManager, final PathToolbarUtils pathToolbarUtils) {
this.capabilitiesRegistry = capabilitiesRegistry;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/PathToolbarUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/PathToolbarUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/PathToolbarUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -21,8 +21,8 @@
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.dnd.FolderViewerDropController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.registry.IconsRegistry;
Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -25,11 +25,11 @@
import cc.kune.common.client.ui.DottedTabPanel;
import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.ContentSimpleDTO;
import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.utils.SharedFileDownloadUtils;
import cc.kune.gspace.client.GSpaceArmor;
import cc.kune.hspace.client.HSpacePresenter.HSpaceView;
@@ -58,7 +58,7 @@
private static HSpacePanelUiBinder uiBinder = GWT.create(HSpacePanelUiBinder.class);
- private final FileDownloadUtils downUtils;
+ private final SharedFileDownloadUtils downUtils;
@UiField
FlowPanel globalStats;
private final RootPanel globalStatsParent;
@@ -103,7 +103,7 @@
@Inject
public HSpacePanel(final I18nTranslationService i18n, final GSpaceArmor armor,
- final Provider<GroupContentHomeLink> linkProv, final FileDownloadUtils downUtils) {
+ final Provider<GroupContentHomeLink> linkProv, final SharedFileDownloadUtils downUtils) {
this.linkProv = linkProv;
this.downUtils = downUtils;
widget = uiBinder.createAndBindUi(this);
@@ -165,7 +165,7 @@
for (final ContentSimpleDTO content : lastContentsOfMyGroupsList) {
final GroupContentHomeLink link = linkProv.get();
final StateToken token = content.getStateToken();
- link.setValues(downUtils.getLogoImageUrl(token.copy().clearDocument().clearFolder()),
+ link.setValues(downUtils.getLogoImageUrl(token.getGroup()),
format(content.getModifiedOn(), content.getName()), token.toString());
lastActivityInYourGroup.add(link);
}
@@ -176,7 +176,7 @@
lastGroups.clear();
for (final GroupDTO group : lastGroupsList) {
final GroupContentHomeLink link = linkProv.get();
- link.setValues(downUtils.getLogoImageUrl(group.getStateToken()),
+ link.setValues(downUtils.getLogoImageUrl(group.getShortName()),
format(group.getCreatedOn(), group.getLongName()), group.getShortName());
lastGroups.add(link);
}
@@ -189,7 +189,7 @@
final GroupContentHomeLink link = linkProv.get();
final StateToken token = content.getStateToken();
link.setValues(
- downUtils.getLogoImageUrl(token.copy().clearDocument().clearFolder()),
+ downUtils.getLogoImageUrl(token.getGroup()),
format(content.getModifiedOn(),
"(" + content.getStateToken().getGroup() + ") " + content.getName()), token.toString());
lastPublishedContents.add(link);
Modified: trunk/src/main/java/cc/kune/msgs/client/UserMessageWidget.java
===================================================================
--- trunk/src/main/java/cc/kune/msgs/client/UserMessageWidget.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/msgs/client/UserMessageWidget.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -25,7 +25,7 @@
import org.adamtacy.client.ui.effects.examples.Show;
import cc.kune.common.client.notify.NotifyLevel;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.msgs.client.resources.UserMessageImagesUtil;
import com.google.gwt.core.client.GWT;
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -19,11 +19,11 @@
*/
package cc.kune.pspace.client;
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.common.client.utils.UrlParam;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
+import cc.kune.common.shared.utils.UrlParam;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.client.state.GroupChangedEvent;
import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
@@ -57,7 +57,7 @@
FlowPanel container;
@UiField
FlowPanel contentPanel;
- private final Provider<FileDownloadUtils> downloadProvider;
+ private final Provider<ClientFileDownloadUtils> downloadProvider;
@UiField
Image entityLogo;
@UiField
@@ -76,7 +76,7 @@
@Inject
public PSpaceInDevelopment(final StateManager stateManager, final CoreResources images,
- final Session session, final Provider<FileDownloadUtils> downloadProvider,
+ final Session session, final Provider<ClientFileDownloadUtils> downloadProvider,
final I18nTranslationService i18n, final EventBus eventBus) {
this.images = images;
this.downloadProvider = downloadProvider;
@@ -116,7 +116,7 @@
}
private void setLogoImage(final StateToken stateToken, final boolean noCache) {
- entityLogo.setUrl(downloadProvider.get().getLogoImageUrl(stateToken)
+ entityLogo.setUrl(downloadProvider.get().getLogoImageUrl(stateToken.getGroup())
+ (noCache ? UrlParam.noCacheStringSuffix() : ""));
}
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -20,8 +20,8 @@
package cc.kune.pspace.client;
import cc.kune.common.client.actions.ui.IsActionExtensible;
-import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateChangedEvent;
Modified: trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -25,7 +25,7 @@
import org.waveprotocol.wave.client.account.impl.ProfileImpl;
import org.waveprotocol.wave.model.wave.ParticipantId;
-import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ClientFileDownloadUtils;
import cc.kune.core.shared.FileConstants;
import com.google.inject.Inject;
@@ -39,11 +39,11 @@
public class KuneWaveProfileManager extends AbstractProfileManager<ProfileImpl> implements
ProfileManager {
- private final FileDownloadUtils downloadUtils;
+ private final ClientFileDownloadUtils downloadUtils;
private String localDomain;
@Inject
- public KuneWaveProfileManager(final FileDownloadUtils downloadUtils) {
+ public KuneWaveProfileManager(final ClientFileDownloadUtils downloadUtils) {
this.downloadUtils = downloadUtils;
}
Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -48,7 +48,7 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.client.errors.DefaultException;
import com.google.common.collect.ImmutableMap;
Modified: trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -18,8 +18,8 @@
import org.waveprotocol.wave.model.waveref.WaveRef;
import cc.kune.core.server.LogThis;
-import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
-import cc.kune.core.server.notifier.NotifyService;
+import cc.kune.core.server.mail.FormatedString;
+import cc.kune.core.server.notifier.NotifySender;
import cc.kune.core.server.notifier.NotifyType;
import cc.kune.core.server.notifier.UsersOnline;
import cc.kune.core.server.properties.KuneBasicProperties;
@@ -31,7 +31,7 @@
public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class);
@Inject
- public WaveEmailNotifier(final WaveBus waveBus, final NotifyService notifyService,
+ public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService,
final UsersOnline usersOnline, final KuneBasicProperties basicProperties,
final ParticipantUtils partUtils) {
waveBus.subscribe(new Subscriber() {
@@ -51,12 +51,12 @@
final ParticipantId user = ((AddParticipant) op).getParticipantId();
final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId));
final FormatedString body = FormatedString.build(
- // FIXME when SSL/ssl support
- "Hi there,<br><br>You have a new message in %s. <a href=\"http://%s/#%s\">Read more</a>.<br>",
- basicProperties.getSiteCommonName(), basicProperties.getSiteDomain(), url);
+ "Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>",
+ basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url);
final String address = user.getAddress();
if (partUtils.isLocal(address)) {
final String userName = partUtils.getAddressName(address);
+ // FIXME only for testing
if (true || !usersOnline.isLogged(userName)) {
notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
body, true, userName);
Modified: trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java
===================================================================
--- trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/java/com/google/wave/splash/web/template/ThreadedWaveRenderer.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -24,8 +24,8 @@
import org.waveprotocol.box.server.CoreSettings;
-import cc.kune.common.client.utils.Url;
-import cc.kune.common.client.utils.UrlParam;
+import cc.kune.common.shared.utils.Url;
+import cc.kune.common.shared.utils.UrlParam;
import cc.kune.core.shared.FileConstants;
import com.google.common.base.Preconditions;
@@ -153,7 +153,7 @@
avatar = new Url(FileConstants.AVATARDOWNLOADSERVLET, new UrlParam(FileConstants.USERNAME,
address.split("@")[0])).toString();
} else {
- avatar = FileConstants.PERSON_NO_AVATAR_IMAGE;
+ avatar = FileConstants.PERSON_NO_AVATAR_IMAGE_PATH;
}
return avatar;
}
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/main/resources/kune.properties 2012-01-01 17:58:40 UTC (rev 1652)
@@ -2,7 +2,8 @@
### general site config
-kune.siteurl = http://localhost:8080
+# Your site url. Please end with a slash
+kune.siteurl = http://localhost:8080/
kune.sitelogourl = ws/images/kune-logo-16px.png
kune.sitelogourl.onover = ws/images/kune-logo-onover-16px.png
@@ -14,7 +15,6 @@
kune.default.site.name = Site Administration
kune.default.site.shortName = site
-kune.site.domain = localhost
# In the server side we will use this string for mention this site in messages
# like: "Thanks for joining this site"
Added: trunk/src/test/java/cc/kune/core/server/mail/FormatedStringTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/mail/FormatedStringTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/mail/FormatedStringTest.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,15 @@
+package cc.kune.core.server.mail;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class FormatedStringTest {
+
+ @Test
+ public void testQuotes() {
+ assertNotNull(FormatedString.build("'%s''''\"%s\"", "test", "test2kl").getString());
+ assertEquals("test 100%", FormatedString.build("%s 100%%", "test").getString());
+ }
+}
Modified: trunk/src/test/java/cc/kune/core/server/mail/MailServiceDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/mail/MailServiceDefaultTest.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/test/java/cc/kune/core/server/mail/MailServiceDefaultTest.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -5,7 +5,6 @@
import org.junit.Before;
import org.junit.Test;
-import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
import cc.kune.core.server.properties.KunePropertiesDefault;
public class MailServiceDefaultTest {
Added: trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/notifier/NotifyHtmlHelperTest.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -0,0 +1,30 @@
+package cc.kune.core.server.notifier;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.core.server.properties.KunePropertiesDefault;
+import cc.kune.core.server.utils.AbsoluteFileDownloadUtils;
+
+public class NotifyHtmlHelperTest {
+ private static final String GROUP_NAME = "groupShortName";
+ private static final String MESSAGE = "some message";
+
+ NotifyHtmlHelper helper;
+
+ @Test
+ public void basicTest() {
+ assertNotNull(helper.groupNotification(GROUP_NAME, false, MESSAGE).getString());
+ assertNotNull(helper.groupNotification(GROUP_NAME, true, MESSAGE).getString());
+ }
+
+ @Before
+ public void before() {
+ helper = new NotifyHtmlHelper(new AbsoluteFileDownloadUtils(new KuneBasicProperties(
+ new KunePropertiesDefault("kune.properties"))));
+ }
+
+}
Modified: trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java 2011-12-29 22:15:28 UTC (rev 1651)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java 2012-01-01 17:58:40 UTC (rev 1652)
@@ -34,7 +34,7 @@
import org.openqa.selenium.interactions.Actions;
import org.testng.Assert;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.shared.utils.TextUtils;
public class SeleniumUtils {
1
0
Author: vjrj_
Date: 2011-12-29 23:15:28 +0100 (Thu, 29 Dec 2011)
New Revision: 1651
Modified:
kune-sandbox/.classpath
Log:
Modified: kune-sandbox/.classpath
===================================================================
--- kune-sandbox/.classpath 2011-12-28 03:24:40 UTC (rev 1650)
+++ kune-sandbox/.classpath 2011-12-29 22:15:28 UTC (rev 1651)
@@ -11,6 +11,5 @@
<classpathentry kind="lib" path="lib/gin-r137.jar"/>
<classpathentry kind="lib" path="lib/guice-3.0-rc2.jar"/>
<classpathentry kind="lib" path="lib/gwtp-all-0.5.jar"/>
- <classpathentry kind="lib" path="lib/gwt-plupload-1.1.jar"/>
<classpathentry kind="output" path="war/WEB-INF/classes"/>
</classpath>
1
0
Author: vjrj_
Date: 2011-12-28 04:24:40 +0100 (Wed, 28 Dec 2011)
New Revision: 1650
Modified:
trunk/src/main/resources/mail-notif-template.html
Log:
NEW - # 164: NotificationManager in server side
http://kune.ourproject.org/issues/ticket/164
Modified: trunk/src/main/resources/mail-notif-template.html
===================================================================
--- trunk/src/main/resources/mail-notif-template.html 2011-12-27 18:32:08 UTC (rev 1649)
+++ trunk/src/main/resources/mail-notif-template.html 2011-12-28 03:24:40 UTC (rev 1650)
@@ -5,117 +5,117 @@
<td align="center" valign="top">
<div style="text-align: justify;"> </div>
<table border="0" cellpadding="0" cellspacing="0"
- width="751">
- <tbody>
- <tr>
- <td style="padding: 10px 0pt 10px 10px; font-family:
- Arial,Helvetica,sans-serif; font-size: 11px; color:
- rgb(136, 136, 136);" align="left">
- <div style="text-align: center;"> Images not
- displaying
- properly? Add <a
- href="mailto:[email protected]"
- style="color: rgb(64, 137, 187);">noreply-FIXME(a)example.org</a>
- to your
- address book. </div>
- </td>
- </tr>
- <tr>
- <td style="border: 1px solid rgb(156, 156, 156);
- padding: 5px; -moz-border-radius-topleft: 5px !
- important; -moz-border-radius-topright: 5px !
- important; -moz-border-radius-bottomright: 5px !
- important; -moz-border-radius-bottomleft: 5px !
- important;" align="left" bgcolor="#ffffff">
- <div style="border: 7px solid rgb(198, 168, 141);
- -moz-border-radius-topleft: 5px ! important;
- -moz-border-radius-topright: 5px ! important;
- -moz-border-radius-bottomright: 5px ! important;
- -moz-border-radius-bottomleft: 5px ! important;">
- <table style="border-radius: 3px 3px 3px 3px !
- important;" border="0" cellpadding="0"
- cellspacing="0" width="725">
- <tbody>
- <tr>
- <td style="padding: 0pt 0pt 20px;">
- <div style="text-align: justify;"> </div>
- <table border="0" cellpadding="0"
- cellspacing="0" height="50" width="725">
- <tbody>
- <tr>
- <td style="font-family:
- Arial,Helvetica,sans-serif;
- font-size: 14px; color: rgb(51,
- 51, 51); padding: 0px 0px 20px
- 20px;" align="left" valign="top"
- width="297"><br>
- <a
- href="http://FIXME-yoursite-url/"
- target="_blank"><img
- style="border-top: 0px solid;
- border-bottom: 0px solid;
- -moz-border-top-colors: none;
- -moz-border-right-colors:
- none;
- -moz-border-bottom-colors:
- none; -moz-border-left-colors:
- none; -moz-border-image:
- none;" moz-do-not-send="true"
- src="ws/logo-big-home.png#FIXME-logo" alt="your
- site name FIXME" align="top"
- border="0" height="41"
- width="287"></a></td>
- <td
- style="border-bottom-left-radius: 10px; font-family:
- Arial,Helvetica,sans-serif; background-color: rgb(244, 214, 188);
- font-size: 12px; color: rgb(102,
- 102, 102); line-height: 17px;
- padding: 20px;" align="left"
- valign="top"
- width="143">
- <p style="margin: 0pt 0pt 8px;
- font-size: 15px; color: rgb(85,
- 85, 85);"> <b>Some Info FIXME:</b></p>
- <br>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td style="padding: 20px; font-family: Arial,Helvetica,sans-serif;" valign="top"><br>
- <br>
- %s<br>
- <br>
- <br>
- </td>
- </tr>
- <tr>
- <td style="border-top-width: 1px;
- border-top-style: solid; border-top-color:
- rgb(214, 214, 214); background-color:
- rgb(255, 245, 237); font-family:
- Arial,Helvetica,sans-serif; font-size:
- 11px; color: rgb(102, 102, 102);
- line-height: 17px; padding: 5px 10px;"
- bgcolor="#ffb380"> To ensure this email
- always reaches your inbox, please add <a
- href="mailto:[email protected]">noreply(a)example.orgFIXME</a>
- to your address book. If you prefer not to
- receive this emails in the future, please
- update your
- preferences in <a href="http://FIXME">this
- link</a>.</td>
- </tr>
- </tbody>
- </table>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
+ width="751">
+ <tbody>
+ <tr>
+ <td style="padding: 10px 0pt 10px 10px; font-family:
+ Arial,Helvetica,sans-serif; font-size: 11px; color:
+ rgb(136, 136, 136);" align="left">
+ <div style="text-align: center;"> Images not
+ displaying
+ properly? Add <a
+ href="mailto:[email protected]"
+ style="color: rgb(64, 137, 187);">noreply-FIXME(a)example.org</a>
+ to your
+ address book. </div>
+ </td>
</tr>
+ <tr>
+ <td style="border: 1px solid rgb(156, 156, 156);
+ padding: 5px; -moz-border-radius-topleft: 5px !
+ important; -moz-border-radius-topright: 5px !
+ important; -moz-border-radius-bottomright: 5px !
+ important; -moz-border-radius-bottomleft: 5px !
+ important;" align="left" bgcolor="#ffffff">
+ <div style="border: 7px solid rgb(198, 168, 141);
+ -moz-border-radius-topleft: 5px ! important;
+ -moz-border-radius-topright: 5px ! important;
+ -moz-border-radius-bottomright: 5px ! important;
+ -moz-border-radius-bottomleft: 5px ! important;">
+ <table style="border-radius: 3px 3px 3px 3px !
+ important;" border="0" cellpadding="0"
+ cellspacing="0" width="725">
+ <tbody>
+ <tr>
+ <td style="padding: 0pt 0pt 20px;">
+ <div style="text-align: justify;"> </div>
+ <table border="0" cellpadding="0"
+ cellspacing="0" height="50" width="725">
+ <tbody>
+ <tr>
+ <td style="font-family:
+ Arial,Helvetica,sans-serif;
+ font-size: 14px; color: rgb(51,
+ 51, 51); padding: 0px 0px 20px
+ 20px;" align="left" valign="top"
+ width="271"><br>
+ <a
+ href="http://FIXME-yoursite-url/"
+ target="_blank"><img
+ style="border-top: 0px solid;
+ border-bottom: 0px solid;
+ -moz-border-top-colors: none;
+ -moz-border-right-colors:
+ none;
+ -moz-border-bottom-colors:
+ none; -moz-border-left-colors:
+ none; -moz-border-image:
+ none;" moz-do-not-send="true"
+ src="http://kune.beta.iepala.es/ws/logo-big-home.png#FIXME-logo" alt="your
+ site name FIXME" align="top"
+ border="0" height="50"
+ width="271"></a></td>
+ <td
+ style="border-bottom-left-radius: 10px; font-family:
+ Arial,Helvetica,sans-serif; background-color: rgb(244, 214, 188);
+ font-size: 12px; color: rgb(102,
+ 102, 102); line-height: 17px;
+ padding: 20px;" align="left"
+ valign="top"
+ width="143">
+ <p style="margin: 0pt 0pt 8px;
+ font-size: 15px; color: rgb(85,
+ 85, 85);"> <b>Some Info FIXME:</b></p>
+ <br>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding: 20px; font-family: Arial,Helvetica,sans-serif;" valign="top"><br>
+ <br>
+ %s<br>
+ <br>
+ <br>
+ </td>
+ </tr>
+ <tr>
+ <td style="border-top-width: 1px;
+ border-top-style: solid; border-top-color:
+ rgb(214, 214, 214); background-color:
+ rgb(255, 245, 237); font-family:
+ Arial,Helvetica,sans-serif; font-size:
+ 11px; color: rgb(102, 102, 102);
+ line-height: 17px; padding: 5px 10px;"
+ bgcolor="#ffb380"> To ensure this email
+ always reaches your inbox, please add <a
+ href="mailto:[email protected]">noreply(a)example.orgFIXME</a>
+ to your address book. If you prefer not to
+ receive this emails in the future, please
+ update your
+ preferences in <a href="http://FIXME">this
+ link</a>.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
</tbody>
</table>
\ No newline at end of file
1
0
r1649 - in trunk/src/main: java/cc/kune/core/server/mail java/cc/kune/core/server/manager/impl java/cc/kune/core/server/notifier java/cc/kune/core/server/properties java/cc/kune/core/shared/dto java/cc/kune/gspace/client/options/general java/cc/kune/wave/server resources
by Vicente J. Ruiz Jurado 27 Dec '11
by Vicente J. Ruiz Jurado 27 Dec '11
27 Dec '11
Author: vjrj_
Date: 2011-12-27 19:32:08 +0100 (Tue, 27 Dec 2011)
New Revision: 1649
Added:
trunk/src/main/resources/mail-notif-template.html
Modified:
trunk/src/main/java/cc/kune/core/server/mail/MailService.java
trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java
trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java
trunk/src/main/java/cc/kune/core/shared/dto/UserSimpleDTO.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java
trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
trunk/src/main/resources/kune.properties
Log:
NEW - # 164: NotificationManager in server side
http://kune.ourproject.org/issues/ticket/164
Modified: trunk/src/main/java/cc/kune/core/server/mail/MailService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/MailService.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/core/server/mail/MailService.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -24,6 +24,34 @@
public interface MailService {
/**
+ * Sends email
+ *
+ * @param subject
+ * the email subject
+ * @param body
+ * the body of the email in text or html format
+ * @param from
+ * the sender
+ * @param tos
+ * the recipients
+ */
+ void send(FormatedString subject, FormatedString body, boolean isHtml, String... tos);
+
+ /**
+ * Sends email
+ *
+ * @param subject
+ * the email subject
+ * @param body
+ * the body of the email in text or html format
+ * @param from
+ * the sender
+ * @param tos
+ * the recipients
+ */
+ void send(String from, FormatedString subject, FormatedString body, boolean isHtml, String... tos);
+
+ /**
* Sends html email with default site "from"
*
* @param subject
Modified: trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/core/server/mail/MailServiceDefault.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -97,7 +97,14 @@
props.put("mail.smtp.host", smtpServer);
}
- private void send(final String from, final FormatedString subject, final FormatedString body,
+ @Override
+ public void send(final FormatedString subject, final FormatedString body, final boolean isHtml,
+ final String... tos) {
+ send(smtpDefaultFrom, subject, body, isHtml, tos);
+ }
+
+ @Override
+ public void send(final String from, final FormatedString subject, final FormatedString body,
final boolean isHtml, final String... tos) {
if (smtpSkip) {
return;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -371,6 +371,7 @@
final String longName = userDTO.getName();
final String email = userDTO.getEmail();
final Group userGroup = user.getUserGroup();
+ user.setEmailNotifFreq(userDTO.getEmailNotifFreq());
// We don't allow to change shortName because we cannot change shotNames in
// wave accounts
// if (!shortName.equals(user.getShortName())) {
Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyServiceDefault.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -1,24 +1,33 @@
package cc.kune.core.server.notifier;
+import java.io.File;
+import java.io.IOException;
+
import javax.persistence.NoResultException;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.server.mail.MailService;
import cc.kune.core.server.mail.MailServiceDefault.FormatedString;
import cc.kune.core.server.manager.I18nTranslationManager;
import cc.kune.core.server.manager.UserManager;
+import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.xmpp.XmppManager;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.domain.User;
import cc.kune.wave.server.KuneWaveService;
+import com.google.common.base.Preconditions;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class NotifyServiceDefault implements NotifyService {
public static final Log LOG = LogFactory.getLog(NotifyServiceDefault.class);
+ private final String emailTemplate;
private final I18nTranslationManager i18n;
private final MailService mailService;
private final UserManager userManager;
@@ -27,12 +36,17 @@
@Inject
public NotifyServiceDefault(final MailService mailService, final KuneWaveService waveService,
- final XmppManager xmppManager, final UserManager userManager, final I18nTranslationManager i18n) {
+ final XmppManager xmppManager, final UserManager userManager, final I18nTranslationManager i18n,
+ final KuneProperties kuneProperties) throws IOException {
this.mailService = mailService;
this.waveService = waveService;
this.xmppManager = xmppManager;
this.userManager = userManager;
this.i18n = i18n;
+ emailTemplate = FileUtils.readFileToString(new File(
+ kuneProperties.get(KuneProperties.SITE_EMAIL_TEMPLATE)));
+ Preconditions.checkNotNull(emailTemplate);
+ Preconditions.checkArgument(TextUtils.notEmpty(emailTemplate));
}
@Override
@@ -50,12 +64,14 @@
final String subjectTranslation = i18n.getTranslation(user.getLanguage().getCode(),
subject.getTemplate(), "");
if (subjectTranslation != null) {
- subject.setTemplate(subjectTranslation);
+ // Right now commented because we are only testing
+ // subject.setTemplate(subjectTranslation);
}
final String bodyTranslation = i18n.getTranslation(user.getLanguage().getCode(),
body.getTemplate(), "");
if (bodyTranslation != null) {
- body.setTemplate(bodyTranslation);
+ // Right now commented because we are only testing
+ // body.setTemplate(bodyTranslation);
}
switch (notifyType) {
case chat:
@@ -63,11 +79,11 @@
String.format("<b>%s</b>%s", subject.getString(), body.getString()));
break;
case email:
- final String email = user.getEmail();
- if (isHtml) {
- mailService.sendHtml(subject, body, email);
+ if (user.getEmailNotifFreq().equals(EmailNotificationFrequency.immediately)) {
+ mailService.send(subject, FormatedString.build(emailTemplate.replace("%s", body.getString())),
+ isHtml, user.getEmail());
} else {
- mailService.sendPlain(subject, body, email);
+ // TODO: handle other types of notifications frequencies
}
break;
case wave:
Modified: trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -49,6 +49,7 @@
String SITE_DB_USER = "kune.db.user";
String SITE_DEF_LICENSE = "kune.default.license";
String SITE_DOMAIN = "kune.site.domain";
+ String SITE_EMAIL_TEMPLATE = "kune.site.email.template";
String SITE_GROUP_AVAILABLE_TOOLS = "kune.tools.groupSiteAvailableTools";
String SITE_GROUP_REGIST_ENABLED_TOOLS = "kune.tools.groupRegisEnabledTools";
String SITE_LOGO_URL = "kune.sitelogourl";
Modified: trunk/src/main/java/cc/kune/core/shared/dto/UserSimpleDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/UserSimpleDTO.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/core/shared/dto/UserSimpleDTO.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -19,6 +19,7 @@
*/
package cc.kune.core.shared.dto;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.core.shared.domain.utils.StateToken;
import com.google.gwt.user.client.rpc.IsSerializable;
@@ -32,6 +33,7 @@
private String shortName;
private StateToken stateToken;
private TimeZoneDTO timezone;
+ private EmailNotificationFrequency emailNotifFreq;
public UserSimpleDTO() {
this(null, null, null, null, null);
@@ -157,4 +159,12 @@
return "UserSimpleDTO(" + shortName + ")";
}
+ public EmailNotificationFrequency getEmailNotifFreq() {
+ return emailNotifFreq;
+ }
+
+ public void setEmailNotifFreq(EmailNotificationFrequency emailNotifFreq) {
+ this.emailNotifFreq = emailNotifFreq;
+ }
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -26,6 +26,7 @@
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.gspace.client.i18n.LanguageSelectorPanel;
+import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.inject.Inject;
@@ -33,6 +34,7 @@
public class UserOptGeneralPanel extends EntityOptGeneralPanel implements UserOptGeneralView {
private static final String LONG_NAME_FIELD = "k-uogp-lname";
+ private final CheckBox emailNotifField;
private final LanguageSelectorPanel langSelector;
private final TextField<String> longName;
@@ -48,6 +50,9 @@
langSelector.setLabelAlign(LabelAlign.LEFT);
langSelector.setLangSeparator(":");
add(langSelector);
+ emailNotifField = new CheckBox();
+ emailNotifField.setFieldLabel(i18n.t("Email notifications"));
+ add(emailNotifField);
}
@Override
@@ -60,6 +65,14 @@
return longName.getValue();
}
+ public boolean isEmailNofifField() {
+ return emailNotifField.getValue();
+ }
+
+ public void setEmailNofifField(final boolean value) {
+ emailNotifField.setValue(value);
+ }
+
@Override
public void setLanguage(final I18nLanguageSimpleDTO language) {
langSelector.setLanguage(language);
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -28,6 +28,7 @@
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.UserSignInEvent;
import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.UserDTO;
@@ -74,6 +75,8 @@
final UserSimpleDTO currentUser = session.getCurrentUser();
userView.setLongName(currentUser.getName());
userView.setLanguage(I18nLanguageSimpleDTO.create(currentUser.getLanguage()));
+ userView.setEmailNofifField(currentUser.getEmailNotifFreq().equals(
+ EmailNotificationFrequency.immediately));
}
@Override
@@ -86,6 +89,8 @@
final String longName = userView.getLongName();
user.setName(longName);
final I18nLanguageSimpleDTO lang = userView.getLanguage();
+ user.setEmailNotifFreq(userView.isEmailNofifField() ? EmailNotificationFrequency.immediately
+ : EmailNotificationFrequency.no);
userService.get().updateUser(session.getUserHash(), user, userView.getLanguage(),
new AsyncCallbackSimple<StateAbstractDTO>() {
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -27,6 +27,10 @@
String getLongName();
+ boolean isEmailNofifField();
+
+ void setEmailNofifField(boolean value);
+
void setLanguage(I18nLanguageSimpleDTO language);
void setLongName(String longName);
Modified: trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2011-12-27 18:32:08 UTC (rev 1649)
@@ -57,7 +57,7 @@
final String address = user.getAddress();
if (partUtils.isLocal(address)) {
final String userName = partUtils.getAddressName(address);
- if (!usersOnline.isLogged(userName)) {
+ if (true || !usersOnline.isLogged(userName)) {
notifyService.send(NotifyType.email, FormatedString.build("You have a new message"),
body, true, userName);
notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true,
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-12-27 01:32:05 UTC (rev 1648)
+++ trunk/src/main/resources/kune.properties 2011-12-27 18:32:08 UTC (rev 1649)
@@ -28,7 +28,12 @@
kune.site.smtp.defaultfrom = noreply@localhost
# If we should avoid the use of smtp (use only for avoid emails during development)
kune.site.smtp.skip = false
+# This file will we the html used to send emails to users.
+# We'll substitute the first %s by the body of the notification.
+# You can put this file in /etc/kune
+kune.site.email.template = src/main/resources/mail-notif-template.html
+
### Database
# Persistence name, choose between:
Added: trunk/src/main/resources/mail-notif-template.html
===================================================================
--- trunk/src/main/resources/mail-notif-template.html (rev 0)
+++ trunk/src/main/resources/mail-notif-template.html 2011-12-27 18:32:08 UTC (rev 1649)
@@ -0,0 +1,121 @@
+<table bgcolor="#f1f1f1" border="0" cellpadding="0" cellspacing="0"
+ height="100%" width="100%">
+ <tbody>
+ <tr>
+ <td align="center" valign="top">
+ <div style="text-align: justify;"> </div>
+ <table border="0" cellpadding="0" cellspacing="0"
+ width="751">
+ <tbody>
+ <tr>
+ <td style="padding: 10px 0pt 10px 10px; font-family:
+ Arial,Helvetica,sans-serif; font-size: 11px; color:
+ rgb(136, 136, 136);" align="left">
+ <div style="text-align: center;"> Images not
+ displaying
+ properly? Add <a
+ href="mailto:[email protected]"
+ style="color: rgb(64, 137, 187);">noreply-FIXME(a)example.org</a>
+ to your
+ address book. </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(156, 156, 156);
+ padding: 5px; -moz-border-radius-topleft: 5px !
+ important; -moz-border-radius-topright: 5px !
+ important; -moz-border-radius-bottomright: 5px !
+ important; -moz-border-radius-bottomleft: 5px !
+ important;" align="left" bgcolor="#ffffff">
+ <div style="border: 7px solid rgb(198, 168, 141);
+ -moz-border-radius-topleft: 5px ! important;
+ -moz-border-radius-topright: 5px ! important;
+ -moz-border-radius-bottomright: 5px ! important;
+ -moz-border-radius-bottomleft: 5px ! important;">
+ <table style="border-radius: 3px 3px 3px 3px !
+ important;" border="0" cellpadding="0"
+ cellspacing="0" width="725">
+ <tbody>
+ <tr>
+ <td style="padding: 0pt 0pt 20px;">
+ <div style="text-align: justify;"> </div>
+ <table border="0" cellpadding="0"
+ cellspacing="0" height="50" width="725">
+ <tbody>
+ <tr>
+ <td style="font-family:
+ Arial,Helvetica,sans-serif;
+ font-size: 14px; color: rgb(51,
+ 51, 51); padding: 0px 0px 20px
+ 20px;" align="left" valign="top"
+ width="297"><br>
+ <a
+ href="http://FIXME-yoursite-url/"
+ target="_blank"><img
+ style="border-top: 0px solid;
+ border-bottom: 0px solid;
+ -moz-border-top-colors: none;
+ -moz-border-right-colors:
+ none;
+ -moz-border-bottom-colors:
+ none; -moz-border-left-colors:
+ none; -moz-border-image:
+ none;" moz-do-not-send="true"
+ src="ws/logo-big-home.png#FIXME-logo" alt="your
+ site name FIXME" align="top"
+ border="0" height="41"
+ width="287"></a></td>
+ <td
+ style="border-bottom-left-radius: 10px; font-family:
+ Arial,Helvetica,sans-serif; background-color: rgb(244, 214, 188);
+ font-size: 12px; color: rgb(102,
+ 102, 102); line-height: 17px;
+ padding: 20px;" align="left"
+ valign="top"
+ width="143">
+ <p style="margin: 0pt 0pt 8px;
+ font-size: 15px; color: rgb(85,
+ 85, 85);"> <b>Some Info FIXME:</b></p>
+ <br>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding: 20px; font-family: Arial,Helvetica,sans-serif;" valign="top"><br>
+ <br>
+ %s<br>
+ <br>
+ <br>
+ </td>
+ </tr>
+ <tr>
+ <td style="border-top-width: 1px;
+ border-top-style: solid; border-top-color:
+ rgb(214, 214, 214); background-color:
+ rgb(255, 245, 237); font-family:
+ Arial,Helvetica,sans-serif; font-size:
+ 11px; color: rgb(102, 102, 102);
+ line-height: 17px; padding: 5px 10px;"
+ bgcolor="#ffb380"> To ensure this email
+ always reaches your inbox, please add <a
+ href="mailto:[email protected]">noreply(a)example.orgFIXME</a>
+ to your address book. If you prefer not to
+ receive this emails in the future, please
+ update your
+ preferences in <a href="http://FIXME">this
+ link</a>.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
\ No newline at end of file
1
0