[kune-commits] r1424 - in trunk: . src/main/java/cc/kune/core/client/services src/main/java/cc/kune/core/server src/main/java/cc/kune/core/server/manager/file src/main/java/cc/kune/wave src/main/java/cc/kune/wave/client src/main/webapp/others

Vicente J. Ruiz Jurado vjrj_ at ourproject.org
Mon Jun 27 00:30:13 CEST 2011


Author: vjrj_
Date: 2011-06-27 00:30:12 +0200 (Mon, 27 Jun 2011)
New Revision: 1424

Added:
   trunk/src/main/java/cc/kune/core/server/manager/file/UserLogoDownloadManager.java
   trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
   trunk/src/main/webapp/others/unknown.jpg
Modified:
   trunk/pom.xml
   trunk/src/main/java/cc/kune/core/client/services/FileConstants.java
   trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
   trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
   trunk/src/main/java/cc/kune/wave/KuneWave.gwt.xml
   trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java
   trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java
   trunk/src/main/java/cc/kune/wave/client/WebClient.java
Log:
Wave client avatar workaround

Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/pom.xml	2011-06-26 22:30:12 UTC (rev 1424)
@@ -979,7 +979,7 @@
             <module>${project.groupId}.Kune</module>
           </modules>
           <copyWebapp>true</copyWebapp>
-          <soyc>false</soyc>
+          <compileReport>false</compileReport>
           <extraJvmArgs>-Xmx1024m -Xss1024k</extraJvmArgs>
         </configuration>
         <executions>

Modified: trunk/src/main/java/cc/kune/core/client/services/FileConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/FileConstants.java	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/core/client/services/FileConstants.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -21,19 +21,20 @@
 
 public final class FileConstants {
 
-    public final static String HASH = "hash";
-    public final static String TOKEN = "token";
-    public final static String DOWNLOAD = "download";
-    public final static String IMGSIZE = "imgsize";
-    public final static String FILENAME = "filename";
-    public final static String TYPE_ID = "typeid";
-    public final static String USER_LOGO_FIELD = "k-ulogov-ff";
-    public final static String GROUP_LOGO_FIELD = "k-glogov-ff";
-    public final static int LOGO_DEF_HEIGHT = 60;
-    public final static int LOGO_DEF_WIDTH = 468;
-    public final static int LOGO_MIN_HEIGHT = 28;
-    public final static int LOGO_MIN_WIDTH = 468;
+  public final static String DOWNLOAD = "download";
+  public final static String FILENAME = "filename";
+  public final static String GROUP_LOGO_FIELD = "k-glogov-ff";
+  public final static String HASH = "hash";
+  public final static String IMGSIZE = "imgsize";
+  public final static int LOGO_DEF_HEIGHT = 60;
+  public final static int LOGO_DEF_WIDTH = 468;
+  public final static int LOGO_MIN_HEIGHT = 28;
+  public final static int LOGO_MIN_WIDTH = 468;
+  public final static String TOKEN = "token";
+  public final static String TYPE_ID = "typeid";
+  public final static String USER_LOGO_FIELD = "k-ulogov-ff";
+  public final static String USERNAME = "username";
 
-    private FileConstants() {
-    }
+  private FileConstants() {
+  }
 }

Modified: trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -33,6 +33,7 @@
 
 public class FileDownloadUtils {
 
+  private static final String AVATARDOWNLOADSERVLET = "servlets/UserLogoDownloadManager";
   private static final String BACKDOWNLOADSERVLET = "servlets/EntityBackgroundDownloadManager";
   private static final String DOWNLOADSERVLET = "servlets/FileDownloadManager";
   protected static final String GROUP_NO_AVATAR_IMAGE = "images/group-def-icon.png";
@@ -112,6 +113,11 @@
     return calculateUrl(token, false, false);
   }
 
+  public String getUserAvatar(final String username) {
+    return new Url(GWT.getModuleBaseURL() + AVATARDOWNLOADSERVLET, new UrlParam(FileConstants.USERNAME,
+        username)).toString();
+  }
+
   public String getUserAvatar(final UserSimpleDTO user) {
     return user.hasLogo() ? getLogoImageUrl(user.getStateToken()) : PERSON_NO_AVATAR_IMAGE;
   }

Modified: trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneRackModule.java	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/core/server/KuneRackModule.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -40,6 +40,7 @@
 import cc.kune.core.server.manager.file.FileDownloadManager;
 import cc.kune.core.server.manager.file.FileGwtUploadServlet;
 import cc.kune.core.server.manager.file.FileUploadManager;
+import cc.kune.core.server.manager.file.UserLogoDownloadManager;
 import cc.kune.core.server.properties.PropertiesFileName;
 import cc.kune.core.server.rack.RackBuilder;
 import cc.kune.core.server.rack.RackModule;
@@ -142,7 +143,8 @@
         UserJSONService.class, I18nTranslationJSONService.class, ContentJSONService.class);
     builder.installServlet("^/ws/servlets/", FileUploadManager.class, FileDownloadManager.class,
         EntityLogoUploadManager.class, EntityLogoDownloadManager.class, FileGwtUploadServlet.class,
-        EntityBackgroundDownloadManager.class, EntityBackgroundUploadManager.class);
+        EntityBackgroundDownloadManager.class, EntityBackgroundUploadManager.class,
+        UserLogoDownloadManager.class);
 
     builder.at("^/ws/(.*)$").install(new ForwardFilter("^/ws/(.*)$", "/ws/{0}"));
   }

Added: trunk/src/main/java/cc/kune/core/server/manager/file/UserLogoDownloadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/UserLogoDownloadManager.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/UserLogoDownloadManager.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -0,0 +1,86 @@
+/*
+ *
+ * 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.file;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import javax.persistence.NoResultException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import cc.kune.core.client.services.FileConstants;
+import cc.kune.core.server.manager.GroupManager;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.domain.Group;
+
+import com.google.inject.Inject;
+
+/**
+ * The Class UserLogoDownloadManager the difference with
+ * {@link EntityLogoDownloadManager} it that this class download an avatar using
+ * the username and if the user doesn't exits then returns the default avatar.
+ * 
+ * This works only for users (right now).
+ */
+public class UserLogoDownloadManager extends HttpServlet {
+
+  private static final long serialVersionUID = -1958945058088446881L;
+  @Inject
+  GroupManager groupManager;
+
+  @Override
+  protected void doGet(final HttpServletRequest req, final HttpServletResponse resp)
+      throws ServletException, IOException {
+
+    final StateToken stateToken = new StateToken(req.getParameter(FileConstants.USERNAME));
+
+    Group group = Group.NO_GROUP;
+    try {
+      group = groupManager.findByShortName(stateToken.getGroup());
+      if (group == Group.NO_GROUP) {
+        noResult(resp);
+      } else if (!group.hasLogo()) {
+        replyDefAvatar(resp);
+      } else {
+        // Has logo!
+        final byte[] logo = group.getLogo();
+        resp.setContentLength(logo.length);
+        resp.setContentType(group.getLogoMime().toString());
+        resp.setHeader("Content-Disposition", "attachment; filename=\"" + group.getShortName()
+            + "-logo\"");
+        resp.getOutputStream().write(logo);
+      }
+    } catch (final NoResultException e) {
+      noResult(resp);
+      return;
+    }
+  }
+
+  private void noResult(final HttpServletResponse resp) throws IOException {
+    FileDownloadManagerUtils.returnNotFound(resp);
+  }
+
+  private void replyDefAvatar(final HttpServletResponse resp) throws FileNotFoundException, IOException {
+    FileDownloadManagerUtils.returnFile("src/main/webapp/others/unknown.jpg", resp.getOutputStream());
+  }
+}


Property changes on: trunk/src/main/java/cc/kune/core/server/manager/file/UserLogoDownloadManager.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/src/main/java/cc/kune/wave/KuneWave.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/wave/KuneWave.gwt.xml	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/wave/KuneWave.gwt.xml	2011-06-26 22:30:12 UTC (rev 1424)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module>
   <inherits name='org.waveprotocol.box.webclient.WebClient' />
+  <inherits name="cc.kune.core.KuneCore" />
   <!-- Stack emulation is too slow to use in production. -->
   <set-property name="compiler.emulatedStack" value="false" />
 

Added: trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -0,0 +1,48 @@
+package cc.kune.wave.client;
+
+import org.waveprotocol.box.webclient.client.Session;
+import org.waveprotocol.wave.client.account.ProfileManager;
+import org.waveprotocol.wave.client.account.impl.AbstractProfileManager;
+import org.waveprotocol.wave.client.account.impl.ProfileImpl;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+
+import cc.kune.core.client.services.FileDownloadUtils;
+
+import com.google.inject.Inject;
+
+/**
+ * The Class KuneWaveProfileManager is a workaround to show avatars in kune
+ * while the Wave part is more mature
+ * 
+ */
+public class KuneWaveProfileManager extends AbstractProfileManager<ProfileImpl> implements
+    ProfileManager {
+
+  private final FileDownloadUtils downloadUtils;
+
+  @Inject
+  public KuneWaveProfileManager(final FileDownloadUtils downloadUtils) {
+    this.downloadUtils = downloadUtils;
+  }
+
+  private void checkAvatar(final ProfileImpl profile) {
+    final String address = profile.getAddress();
+    if (address.contains(Session.get().getDomain())) {
+      profile.update(profile.getFirstName(), profile.getFullName(),
+          downloadUtils.getUserAvatar(address.split("@")[0]));
+    }
+  }
+
+  @Override
+  public ProfileImpl getProfile(final ParticipantId participantId) {
+    ProfileImpl profile = profiles.get(participantId.getAddress());
+
+    if (profile == null) {
+      profile = new ProfileImpl(this, participantId);
+      checkAvatar(profile);
+      profiles.put(participantId.getAddress(), profile);
+    }
+    return profile;
+  }
+
+}
\ No newline at end of file


Property changes on: trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -41,7 +41,8 @@
 
   @Inject
   public WaveClientManager(final Session session, final StateManager stateManager,
-      final EventBus eventBus, final UserServiceAsync userService, final GSpaceArmor wsArmor) {
+      final EventBus eventBus, final UserServiceAsync userService, final GSpaceArmor wsArmor,
+      final KuneWaveProfileManager profiles) {
     session.onUserSignIn(true, new UserSignInHandler() {
       @Override
       public void onUserSignIn(final UserSignInEvent event) {
@@ -59,7 +60,7 @@
                   if (userSpace.getWidgetCount() > 0) {
                     userSpace.remove(0);
                   }
-                  webClient = new WebClient(eventBus);
+                  webClient = new WebClient(eventBus, profiles);
                   userSpace.add(webClient);
                 } else {
                   webClient.login();

Modified: trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -19,19 +19,19 @@
  */
 package cc.kune.wave.client;
 
-import com.google.inject.Singleton;
-import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+import cc.kune.common.client.ExtendedGinModule;
 
-public class WaveGinModule extends AbstractPresenterModule {
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.google.gwt.inject.client.AbstractGinModule#configure()
-     */
-    @Override
-    protected void configure() {
-        bind(WaveClientManager.class).in(Singleton.class);
-        bind(WaveStatusIndicator.class).in(Singleton.class);
-        bind(WaveParts.class).asEagerSingleton();
-    }
+public class WaveGinModule extends ExtendedGinModule {
+  /*
+   * (non-Javadoc)
+   * 
+   * @see com.google.gwt.inject.client.AbstractGinModule#configure()
+   */
+  @Override
+  protected void configure() {
+    s(WaveClientManager.class);
+    s(WaveStatusIndicator.class);
+    eagle(WaveParts.class);
+    s(KuneWaveProfileManager.class);
+  }
 }

Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java	2011-06-26 10:50:56 UTC (rev 1423)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java	2011-06-26 22:30:12 UTC (rev 1424)
@@ -198,7 +198,7 @@
 
   // TODO (Yuri Z.) Change the implementation to RemoteProfileManagerImpl when
   // it will be ready.
-  private final ProfileManager profiles = new ProfileManagerImpl();
+  private final ProfileManager profiles;
 
   @UiField
   SplitLayoutPanel splitPanel;
@@ -216,7 +216,7 @@
   private final Element loading = new LoadingIndicator().getElement();
 
   @UiField(provided = true)
-  final SearchPanelWidget searchPanel = new SearchPanelWidget(new SearchPanelRenderer(profiles));
+  final SearchPanelWidget searchPanel;
 
   @UiField
   DebugMessagePanel logPanel;
@@ -241,9 +241,11 @@
    * This is the entry point method.
    */
   @Inject
-  public WebClient(final EventBus eventBus) {
+  public WebClient(final EventBus eventBus, KuneWaveProfileManager profiles) {
 
     this.eventBus = eventBus;
+    this.profiles = profiles;
+    searchPanel = new SearchPanelWidget(new SearchPanelRenderer(profiles));
     ErrorHandler.install();
 
     ClientEvents.get().addWaveCreationEventHandler(

Added: trunk/src/main/webapp/others/unknown.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/src/main/webapp/others/unknown.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the kune-commits mailing list