r1470 - in trunk: . src/main/java/cc/kune/core/client/dnd src/main/java/cc/kune/core/client/errors src/main/java/cc/kune/core/client/sn/actions src/main/java/cc/kune/core/client/state src/main/java/cc/kune/core/server/content src/main/java/cc/kune/core/server/rpc src/main/java/cc/kune/gspace/client/actions src/main/java/cc/kune/gspace/client/licensewizard src/main/java/cc/kune/gspace/client/options/tools src/main/java/cc/kune/wave/server src/main/java/com/google/wave/splash/web/template src/m
Author: vjrj_ Date: 2011-07-29 00:46:26 +0200 (Fri, 29 Jul 2011) New Revision: 1470 Added: trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java Modified: trunk/pom.xml trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java trunk/src/main/java/cc/kune/core/client/state/StateManager.java trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.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/rpc/ContentRPC.java trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java trunk/src/main/java/com/google/wave/splash/web/template/Templates.java trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java trunk/src/main/webapp/WEB-INF/web.xml trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java Log: NEW - # 71: D-and-D folder into folder fails http://kune.ourproject.org/issues/ticket/71 CLOSED - # 73: (Edit) button in my Group don't open Wiab editor http://kune.ourproject.org/issues/ticket/73 NEW - # 75: Remove memory leaks in server memory usage http://kune.ourproject.org/issues/ticket/75 Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/pom.xml 2011-07-28 22:46:26 UTC (rev 1470) @@ -778,7 +778,7 @@ <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> - <version>1.1.1</version> + <version>1.2</version> <executions> <execution> <phase>exec</phase> Modified: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -60,12 +60,12 @@ @Override public void onFailure(final Throwable caught) { erroHandler.process(caught); - stateManager.reload(); + stateManager.refreshCurrentState(); } @Override public void onSuccess(final StateContainerDTO result) { - stateManager.reload(); + stateManager.refreshCurrentState(); } }); } else { Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -25,6 +25,7 @@ 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.core.client.notify.msgs.UserNotifyEvent; import cc.kune.core.client.notify.spiner.ProgressHideEvent; import cc.kune.core.client.state.Session; @@ -131,6 +132,9 @@ logException(caught); eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error, i18n.t("This user is already a group member"))); + } else if (caught instanceof UnderDevelopmentException) { + logException(caught); + eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info, i18n.t(TextUtils.IN_DEVELOPMENT))); } else { logException(caught, true); eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error, Added: trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -0,0 +1,24 @@ +/* + * + * 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.errors; + +public class UnderDevelopmentException extends DefaultException { + private static final long serialVersionUID = 7207715062129253927L; +} Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -60,7 +60,7 @@ switch ((result)) { case accepted: NotifyUser.info(i18n.t("You are now member of this group")); - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); break; case denied: NotifyUser.important(i18n.t("Sorry this is a closed group")); Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -62,7 +62,7 @@ public void onSuccess(final SocialNetworkDataDTO result) { NotifyUser.hideProgress(); NotifyUser.info(i18n.t("Member removed")); - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); } }); } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -63,7 +63,7 @@ public void onSuccess(final Void result) { NotifyUser.hideProgress(); NotifyUser.info(i18n.t("Removed as member")); - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); } }); } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -73,7 +73,7 @@ public void onSuccess(final Void result) { NotifyUser.hideProgress(); NotifyUser.info(i18n.t("Removed as member")); - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); } }); } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -57,7 +57,7 @@ // NotifyUser.info(i18n.t("Visibility of your network changed to " // + visibility.toString())); NotifyUser.info(i18n.t("Visibility of your network changed")); - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); } }); Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -68,9 +68,9 @@ void redirectOrRestorePreviousToken(); - void refreshCurrentGroupState(); + void refreshCurrentStateWithoutCache(); - void reload(); + void refreshCurrentState(); void removeBeforeStateChangeListener(BeforeActionListener listener); Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -90,7 +90,7 @@ session.onUserSignOut(false, new UserSignOutEvent.UserSignOutHandler() { @Override public void onUserSignOut(final UserSignOutEvent event) { - refreshCurrentGroupState(); + refreshCurrentStateWithoutCache(); } }); processCurrentHistoryToken(); @@ -333,11 +333,21 @@ /** * <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 refreshCurrentGroupState() { + public void refreshCurrentStateWithoutCache() { final StateToken currentStateToken = session.getCurrentStateToken(); if (currentStateToken == null) { processCurrentHistoryToken(); @@ -347,17 +357,7 @@ } } - /** - * <p> - * Reload current state (using client cache if available) - * </p> - */ @Override - public void reload() { - processHistoryToken(history.getToken()); - } - - @Override public void removeBeforeStateChangeListener(final BeforeActionListener listener) { beforeStateChangeCollection.remove(listener); } @@ -378,7 +378,7 @@ public void resumeTokenChange() { if (resumedHistoryToken != null) { // Is this reload redundant? - reload(); + refreshCurrentState(); gotoHistoryToken(resumedHistoryToken); resumedHistoryToken = null; } Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -19,7 +19,6 @@ */ package cc.kune.core.server.content; - import cc.kune.core.client.errors.DefaultException; import cc.kune.core.server.manager.Manager; import cc.kune.core.server.manager.impl.SearchResult; @@ -30,19 +29,22 @@ public interface ContainerManager extends Manager<Container, Long> { - Container createFolder(Group group, Container parent, String name, I18nLanguage language, String typeId); + Container createFolder(Group group, Container parent, String name, I18nLanguage language, String typeId); - Container createRootFolder(Group group, String toolName, String name, String type); + Container createRootFolder(Group group, String toolName, String name, String type); - Container find(Long id); + @Override + Container find(Long id); - boolean findIfExistsTitle(Container container, String title); + boolean findIfExistsTitle(Container container, String title); - Container renameFolder(Group group, Container container, String newName) throws DefaultException; + void moveContainer(Container container, Container newContainer); - SearchResult<Container> search(String search); + Container renameFolder(Group group, Container container, String newName) throws DefaultException; - SearchResult<Container> search(String search, Integer firstResult, Integer maxResults); + SearchResult<Container> search(String search); - void setAccessList(Container container, AccessLists accessList); + SearchResult<Container> search(String search, Integer firstResult, Integer maxResults); + + void setAccessList(Container container, AccessLists accessList); } Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -31,6 +31,7 @@ import cc.kune.core.client.errors.DefaultException; import cc.kune.core.client.errors.NameInUseException; +import cc.kune.core.client.errors.UnderDevelopmentException; import cc.kune.core.server.manager.file.FileUtils; import cc.kune.core.server.manager.impl.DefaultManager; import cc.kune.core.server.manager.impl.SearchResult; @@ -50,103 +51,110 @@ @Singleton public class ContainerManagerDefault extends DefaultManager<Container, Long> implements ContainerManager { - private final ContainerFinder containerFinder; - private final ContentFinder contentFinder; + private final ContainerFinder containerFinder; + private final ContentFinder contentFinder; - @Inject - public ContainerManagerDefault(final ContentFinder contentFinder, final ContainerFinder containerFinder, - final Provider<EntityManager> provider) { - super(provider, Container.class); - this.contentFinder = contentFinder; - this.containerFinder = containerFinder; - } + @Inject + public ContainerManagerDefault(final ContentFinder contentFinder, + final ContainerFinder containerFinder, final Provider<EntityManager> provider) { + super(provider, Container.class); + this.contentFinder = contentFinder; + this.containerFinder = containerFinder; + } - @Override - public Container createFolder(final Group group, final Container parent, final String name, - final I18nLanguage language, final String typeId) { - FilenameUtils.checkBasicFilename(name); - final String newtitle = findInexistentName(parent, name); - final List<Container> parentAbsolutePath = parent.getAbsolutePath(); - final List<Container> childAbsolutePath = new ArrayList<Container>(); + @Override + public Container createFolder(final Group group, final Container parent, final String name, + final I18nLanguage language, final String typeId) { + FilenameUtils.checkBasicFilename(name); + final String newtitle = findInexistentName(parent, name); + final List<Container> parentAbsolutePath = parent.getAbsolutePath(); + final List<Container> childAbsolutePath = new ArrayList<Container>(); - for (final Container parentRef : parentAbsolutePath) { - childAbsolutePath.add(parentRef); - } - // FIXME: use - // childAbsolutePath.addAll(parentAbsolutePath); - final Container child = new Container(newtitle, group, parent.getToolName()); - childAbsolutePath.add(child); - child.setLanguage(language); - child.setAbsolutePath(childAbsolutePath); - child.setTypeId(typeId); - parent.addChild(child); - persist(child); - return child; + for (final Container parentRef : parentAbsolutePath) { + childAbsolutePath.add(parentRef); } + // FIXME: use + // childAbsolutePath.addAll(parentAbsolutePath); + final Container child = new Container(newtitle, group, parent.getToolName()); + childAbsolutePath.add(child); + child.setLanguage(language); + child.setAbsolutePath(childAbsolutePath); + child.setTypeId(typeId); + parent.addChild(child); + persist(child); + return child; + } - @Override - public Container createRootFolder(final Group group, final String toolName, final String name, final String type) { - final Container container = new Container(name, group, toolName); - container.setTypeId(type); - final List<Container> absolutePath = new ArrayList<Container>(); - absolutePath.add(container); - container.setAbsolutePath(absolutePath); - return persist(container); - } + @Override + public Container createRootFolder(final Group group, final String toolName, final String name, + final String type) { + final Container container = new Container(name, group, toolName); + container.setTypeId(type); + final List<Container> absolutePath = new ArrayList<Container>(); + absolutePath.add(container); + container.setAbsolutePath(absolutePath); + return persist(container); + } - /** Duplicate code in ContentMD **/ - @Override - public boolean findIfExistsTitle(final Container container, final String title) { - return (contentFinder.findIfExistsTitle(container, title) > 0) - || (containerFinder.findIfExistsTitle(container, title) > 0); - } + /** Duplicate code in ContentMD **/ + @Override + public boolean findIfExistsTitle(final Container container, final String title) { + return (contentFinder.findIfExistsTitle(container, title) > 0) + || (containerFinder.findIfExistsTitle(container, title) > 0); + } - /** Duplicate code in ContentMD **/ - private String findInexistentName(final Container container, final String title) { - String initialTitle = String.valueOf(title); - while (findIfExistsTitle(container, initialTitle)) { - initialTitle = FileUtils.getNextSequentialFileName(initialTitle); - } - return initialTitle; + /** Duplicate code in ContentMD **/ + private String findInexistentName(final Container container, final String title) { + String initialTitle = String.valueOf(title); + while (findIfExistsTitle(container, initialTitle)) { + initialTitle = FileUtils.getNextSequentialFileName(initialTitle); } + return initialTitle; + } - @Override - public Container renameFolder(final Group group, final Container container, final String newName) - throws DefaultException { - FilenameUtils.checkBasicFilename(newName); - final String newNameWithoutNT = FilenameUtils.chomp(newName); - if (container.isRoot()) { - throw new DefaultException("Root folder cannot be renamed"); - } - if (findIfExistsTitle(container.getParent(), newNameWithoutNT)) { - throw new NameInUseException(); - } - container.setName(newNameWithoutNT); - persist(container); - return container; - } + @Override + public void moveContainer(final Container container, final Container newContainer) { + throw new UnderDevelopmentException(); + } - @Override - public SearchResult<Container> search(final String search) { - return this.search(search, null, null); + @Override + public Container renameFolder(final Group group, final Container container, final String newName) + throws DefaultException { + FilenameUtils.checkBasicFilename(newName); + final String newNameWithoutNT = FilenameUtils.chomp(newName); + if (container.isRoot()) { + throw new DefaultException("Root folder cannot be renamed"); } - - @Override - public SearchResult<Container> search(final String search, final Integer firstResult, final Integer maxResults) { - final MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "name" }, new StandardAnalyzer()); - Query query; - try { - query = parser.parse(search); - } catch (final ParseException e) { - throw new ServerManagerException("Error parsing search"); - } - return super.search(query, firstResult, maxResults); + if (findIfExistsTitle(container.getParent(), newNameWithoutNT)) { + throw new NameInUseException(); } + container.setName(newNameWithoutNT); + persist(container); + return container; + } - @Override - public void setAccessList(final Container container, final AccessLists accessList) { - container.setAccessLists(accessList); - persist(container); + @Override + public SearchResult<Container> search(final String search) { + return this.search(search, null, null); + } + + @Override + public SearchResult<Container> search(final String search, final Integer firstResult, + final Integer maxResults) { + final MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "name" }, + new StandardAnalyzer()); + Query query; + try { + query = parser.parse(search); + } catch (final ParseException e) { + throw new ServerManagerException("Error parsing search"); } + return super.search(query, firstResult, maxResults); + } + @Override + public void setAccessList(final Container container, final AccessLists accessList) { + container.setAccessLists(accessList); + persist(container); + } } Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -26,6 +26,7 @@ import cc.kune.chat.server.ChatManager; import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.ContentNotFoundException; +import cc.kune.core.client.errors.ContentNotPermittedException; import cc.kune.core.client.errors.DefaultException; import cc.kune.core.client.errors.NoDefaultContentException; import cc.kune.core.client.errors.ToolNotFoundException; @@ -318,17 +319,30 @@ @Authenticated @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) @Transactional - public StateContainerDTO moveContent(final String userHash, final StateToken contentToken, + public StateContainerDTO moveContent(final String userHash, final StateToken movedToken, final StateToken newContainerToken) throws DefaultException { final User user = getCurrentUser(); try { - final Content content = accessService.accessToContent( - ContentUtils.parseId(contentToken.getDocument()), user, AccessRol.Editor); - final Container newContainer = accessService.accessToContainer( - ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor); - final Container oldContainer = content.getContainer(); - contentManager.moveContent(content, newContainer); - return getState(user, oldContainer); + if (movedToken.isComplete()) { + final Content content = accessService.accessToContent( + ContentUtils.parseId(movedToken.getDocument()), user, AccessRol.Editor); + final Container newContainer = accessService.accessToContainer( + ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor); + final Container oldContainer = content.getContainer(); + contentManager.moveContent(content, newContainer); + return getState(user, oldContainer); + } else if (movedToken.hasGroupToolAndFolder()) { + // Folder to folder + final Container container = accessService.accessToContainer( + ContentUtils.parseId(movedToken.getFolder()), user, AccessRol.Editor); + final Container newContainer = accessService.accessToContainer( + ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor); + final Container oldParent = container.getParent(); + containerManager.moveContainer(container, newContainer); + return getState(user, oldParent); + } else { + throw new ContentNotPermittedException(); + } } catch (final NoResultException e) { throw new AccessViolationException(); } Modified: trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -81,7 +81,7 @@ // session.setCurrentState(state); final StateToken parent = token.copy().clearDocument(); if (session.getCurrentStateToken().equals(parent)) { - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); // Warning: the previous action // is asynchronous (it gets a // content) Modified: trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -62,7 +62,9 @@ @Override public void onSuccess(final Void arg) { NotifyUser.hideProgress(); - stateManager.gotoStateToken(session.getCurrentStateToken()); + stateManager.refreshCurrentStateWithoutCache(); + // issue #73 + // stateManager.gotoStateToken(session.getCurrentStateToken()); } }); } Modified: trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -41,7 +41,7 @@ @Override public void actionPerformed(final ActionEvent event) { - stateManager.refreshCurrentGroupState(); + stateManager.refreshCurrentStateWithoutCache(); } } Modified: trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -66,7 +66,7 @@ @Override public void onSuccess(final Void result) { - stateManager.reload(); + stateManager.refreshCurrentState(); callback.onSuccess(); LicenseChangedEvent.fire(eventBus); } Modified: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -139,7 +139,7 @@ @Override public void onSuccess(final Void result) { - stateManager.reload(); + stateManager.refreshCurrentState(); // view.unmask(); } }); Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -187,12 +187,19 @@ @Override public void addParticipant(final WaveRef waveName, final String author, final String userWhoAdds, - final String participant) { + final String newLocalParticipant) { final Wavelet wavelet = fetchWave(waveName, author); + final String newPartWithDomain = participantUtils.of(newLocalParticipant).toString(); + for (final String current : wavelet.getParticipants()) { + if (current.equals(newPartWithDomain)) { + // Current user is a participant already (issue #73) + return; + } + } final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds : author; final OperationQueue opQueue = new OperationQueue(); - opQueue.addParticipantToWavelet(wavelet, participantUtils.of(participant).toString()); + opQueue.addParticipantToWavelet(wavelet, newPartWithDomain); doOperation(whoAdd, opQueue, "add participant"); } @@ -390,7 +397,8 @@ @Override public String render(final Wavelet wavelet) { final ClientAction clientPage = waveRenderer.render(wavelet, 0); - return clientPage.getHtml(); + final String html = clientPage.getHtml(); + return html; } @Override Modified: trunk/src/main/java/com/google/wave/splash/web/template/Templates.java =================================================================== --- trunk/src/main/java/com/google/wave/splash/web/template/Templates.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/com/google/wave/splash/web/template/Templates.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -60,7 +60,7 @@ private final Markup markup; - private final boolean productionMode = false; + private final boolean productionMode = true; /** * file name of template -> compiled template lazy cache. Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -415,7 +415,7 @@ AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() { @Override public void onEvent(final StateToken stateToken) { - stateManager.reload(); + stateManager.refreshCurrentState(); contextNavigator.selectItem(stateToken); } }); @@ -433,7 +433,7 @@ AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() { @Override public void onEvent(final StateToken stateToken) { - stateManager.reload(); + stateManager.refreshCurrentState(); contextNavigator.selectItem(stateToken); } }); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -98,7 +98,7 @@ @Override public void onEvent(final StateToken currentUploadStateToken) { if (currentUploadStateToken.hasSameContainer(session.getCurrentStateToken())) { - stateManager.reload(); + stateManager.refreshCurrentState(); } } }); Modified: trunk/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/src/main/webapp/WEB-INF/web.xml 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/main/webapp/WEB-INF/web.xml 2011-07-28 22:46:26 UTC (rev 1470) @@ -5,12 +5,12 @@ http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> - <!-- NOTE: if you modify this, cp for rapid testing: cp src/main/webapp/WEB-INF/web.xml + <!-- NOTE: if you modify this, cp for rapid testing: cp src/main/webapp/WEB-INF/web.xml target/kune-PUT_HERE_VERSION/WEB-INF/web.xml --> <!-- TODO: Add <servlet> tags for each servlet here. --> <!-- TODO: Add <servlet-mapping> tags for each <servlet> here. --> - <!-- TODO: Optionally add a <welcome-file-list> tag to display a welcome + <!-- TODO: Optionally add a <welcome-file-list> tag to display a welcome file. --> <display-name>ws</display-name> <description>kune workspace</description> @@ -69,12 +69,12 @@ </context-param> <context-param> <param-name>rails.root</param-name> - <param-value>/WEB-INF/publicspace/ + <param-value>/WEB-INF/publicspace/ </param-value> </context-param> <context-param> <param-name>files.prefix</param-name> - <param-value>/WEB-INF/publicspace/public + <param-value>/WEB-INF/publicspace/public </param-value> </context-param> <context-param> @@ -89,6 +89,7 @@ <param-name>public.root</param-name> <param-value>/public/</param-value> </context-param> + <!-- Disabled while not used <filter> <filter-name>RackFilter</filter-name> <filter-class>org.jruby.rack.RackFilter</filter-class> @@ -100,6 +101,7 @@ <listener> <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class> </listener> + --> <!-- Emite xmpp proxy ======================================================================================= --> <!-- <servlet> --> <!-- <servlet-name>HttpBind</servlet-name> --> Modified: trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -202,7 +202,7 @@ // When a user enter reload state, also if the application is starting // (and the user was logged) Mockito.when(history.getToken()).thenReturn(""); - stateManager.reload(); + stateManager.refreshCurrentState(); verifyGetServerContent(); } Modified: trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java 2011-07-28 16:01:40 UTC (rev 1469) +++ trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java 2011-07-28 22:46:26 UTC (rev 1470) @@ -71,6 +71,22 @@ } @Test + public void addParticipantTwice() throws IOException { + doLogin(); + final WaveRef waveletName = createTestWave(); + assertNotNull(waveletName); + manager.addParticipant(waveletName, getSiteAdminShortName(), getSiteAdminShortName(), + NEW_PARTICIPANT); + manager.addParticipant(waveletName, getSiteAdminShortName(), getSiteAdminShortName(), + NEW_PARTICIPANT); + final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName()); + assertNotNull(fetchWavelet); + assertEquals(2, fetchWavelet.getParticipants().size()); + manager.isParticipant(fetchWavelet, NEW_PARTICIPANT); + manager.isParticipant(fetchWavelet, "newparti"); + } + + @Test public void authorAddParticipant() throws DefaultException, IOException { final String whoAdds = getSiteAdminShortName(); addParticipant(whoAdds);
participants (1)
-
Vicente J. Ruiz Jurado