[kune-commits] r1241 - in trunk: . src/main/java/cc/kune/core/client/auth src/main/java/cc/kune/core/client/groups/newgroup src/main/java/cc/kune/core/client/ui src/main/java/cc/kune/core/client/ui/dialogs src/main/java/cc/kune/core/public src/main/java/cc/kune/wave/client src/main/java/cc/kune/wave/server src/main/java/org/ourproject/kune/app/server src/main/java/org/ourproject/kune/rack src/main/webapp/WEB-INF
Vicente J. Ruiz Jurado
vjrj_ at ourproject.org
Tue Feb 8 15:17:51 CET 2011
Author: vjrj_
Date: 2011-02-08 15:17:50 +0100 (Tue, 08 Feb 2011)
New Revision: 1241
Added:
trunk/src/main/java/cc/kune/wave/client/WaveClientTester.java
trunk/src/main/java/cc/kune/wave/server/CustomWaveClientServlet.java
Modified:
trunk/TODO
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java
trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java
trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/public/ws.html
trunk/src/main/java/cc/kune/wave/server/WaveStarter.java
trunk/src/main/java/org/ourproject/kune/app/server/AbstractExtendedModule.java
trunk/src/main/java/org/ourproject/kune/app/server/KuneApplicationListener.java
trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java
trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
trunk/src/main/java/org/ourproject/kune/app/server/NotInObject.java
trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java
trunk/src/main/webapp/WEB-INF/web.xml
Log:
WIAB integration updated
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/TODO 2011-02-08 14:17:50 UTC (rev 1241)
@@ -11,6 +11,8 @@
Use org-mode in emacs to easy manage this file
* SHORT-TERM (URGENT)
+** TODO WIAB under proxies
+https://groups.google.com/group/wave-protocol/browse_thread/thread/202dee4bfdbdeee6
** TODO StateManager #signin while already signed in NPE
** TODO Testing Presenters via juckito:
https://code.google.com/p/gwt-platform/wiki/UnitTesting
@@ -255,6 +257,9 @@
** vjrj <v> IconHyperlink.java and IconLabel.java to gwt1.5
* MID-TERM
+** TODO start/stop init scripts
+https://groups.google.com/group/wave-protocol/browse_thread/thread/d9cdcea0d5393eda
+./platforms/ubuntu/server-wrapper.sh
** TODO registration/general mask
** TODO sigin forms to uibinder (intro sing-in)
** TODO Use google-guice guicepersist (in 3.0) instead of warp-persist
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -36,6 +36,7 @@
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
+import cc.kune.wave.client.WaveClientTester;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -59,18 +60,20 @@
private final Provider<Register> registerProvider;
private final TimerWrapper timer;
private final UserServiceAsync userService;
+ private final WaveClientTester waveClientTester;
@Inject
public SignInPresenter(final EventBus eventBus, final SignInView view, final SignInProxy proxy,
final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
final UserServiceAsync userService, final Provider<Register> registerProvider,
final CookiesManager cookiesManager, final UserPassAutocompleteManager autocomplete,
- final TimerWrapper timeWrapper) {
+ final TimerWrapper timeWrapper, final WaveClientTester waveClientTester) {
super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager, autocomplete);
this.eventBus = eventBus;
this.userService = userService;
this.registerProvider = registerProvider;
this.timer = timeWrapper;
+ this.waveClientTester = waveClientTester;
}
@Override
@@ -175,8 +178,10 @@
public void onSuccess(final UserInfoDTO userInfoDTO) {
onSignIn(userInfoDTO);
stateManager.restorePreviousToken();
+ // waveClientTester.doLogin(nickOrEmail, passwd);
getView().hide();
getView().unMask();
+
}
};
userService.login(user.getShortName(), user.getPassword(), callback);
Modified: trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -41,7 +41,7 @@
@Override
public String getNickOrEmail() {
- return getElementValue("username");
+ return getElementValue("address");
}
@Override
@@ -51,7 +51,7 @@
@Override
public void setNickOrEmail(final String username) {
- DOM.getElementById("username").setAttribute(VALUE, username);
+ DOM.getElementById("address").setAttribute(VALUE, username);
}
@Override
Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -77,8 +77,8 @@
@Inject
public NewGroupPanel(final I18nTranslationService i18n, final NotifyLevelImages img, final MaskWidgetView mask) {
- dialog = new BasicTopDialog(NEWGROUP_WIZARD, CoreMessages.REGISTER_A_NEW_GROUP_TITLE, true, true, false, 450,
- 430, "k-newgroup-icon", i18n.t("Register"), REGISTER_BUTTON, i18n.t("Cancel"), CANCEL_BUTTON, 9);
+ dialog = new BasicTopDialog(NEWGROUP_WIZARD, CoreMessages.REGISTER_A_NEW_GROUP_TITLE, true, true, true, 450,
+ 420, "k-newgroup-icon", i18n.t("Register"), REGISTER_BUTTON, i18n.t("Cancel"), CANCEL_BUTTON, 9);
this.i18n = i18n;
this.mask = mask;
// Field.setMsgTarget("side");
@@ -91,7 +91,6 @@
@Override
public Widget asWidget() {
- // TODO Auto-generated method stub
return null;
}
@@ -106,14 +105,15 @@
form.setFrame(true);
form.setPadding(10);
form.setBorders(false);
- form.setWidth(420);
+ form.setWidth(360);
form.setLabelWidth(LABEL_WIDTH);
form.setLabelAlign(LabelAlign.RIGHT);
form.setButtonAlign(HorizontalAlignment.RIGHT);
+ form.setHeaderVisible(false);
final Label intro = new Label();
- intro.setText(i18n.t("Please fill this form to register a new group:")); // +
- // DefaultFormUtils.brbr());
+ intro.setText(i18n.t("Please fill this form to register a new group:"));
+ intro.setStyleName("k-form-intro");
form.add(intro);
shortNameField = new TextField<String>();
@@ -167,11 +167,9 @@
final FieldSet groupTypeFieldSet = new FieldSet();
groupTypeFieldSet.setHeading(i18n.t("Group type"));
- groupTypeFieldSet.setCollapsible(false);
- groupTypeFieldSet.setStyleName(MARGIN_LEFT_105PX);
- groupTypeFieldSet.setWidth(BIG_FIELD_WIDTH);
- // groupTypeFieldSet.setFrame(false);
- groupTypeFieldSet.setCollapsible(false);
+ groupTypeFieldSet.addStyleName("k-form-fieldset");
+ groupTypeFieldSet.setCollapsible(true);
+ groupTypeFieldSet.setWidth("210px");
groupTypeFieldSet.setAutoHeight(true);
form.add(groupTypeFieldSet);
@@ -200,6 +198,11 @@
}
@Override
+ public void focusOnShorName() {
+ shortNameField.focus();
+ }
+
+ @Override
public HasClickHandlers getFirstBtn() {
return dialog.getFirstBtn();
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 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -91,6 +91,7 @@
if (session.isLogged()) {
NotifyUser.showProgressProcessing();
getView().show();
+ getView().focusOnShorName();
NotifyUser.hideProgress();
} else {
// stateManager.restorePreviousToken();
Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -28,6 +28,8 @@
void clearData();
+ void focusOnShorName();
+
HasClickHandlers getFirstBtn();
String getLongName();
Modified: trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
@@ -44,7 +44,7 @@
private final FormPanel form;
public DefaultForm() {
- this(HorizontalAlignment.RIGHT);
+ this(HorizontalAlignment.LEFT);
}
public DefaultForm(final HorizontalAlignment buttonAlign) {
@@ -53,13 +53,13 @@
form.setPadding(10);
form.setBorders(false);
form.setLabelWidth(DEF_FIELD_LABEL_WITH);
- form.setLabelAlign(LabelAlign.RIGHT);
+ form.setLabelAlign(LabelAlign.LEFT);
form.setButtonAlign(buttonAlign);
form.setHeaderVisible(false);
}
public DefaultForm(final String title) {
- this(title, HorizontalAlignment.RIGHT);
+ this(title, HorizontalAlignment.LEFT);
}
public DefaultForm(final String title, final HorizontalAlignment buttonAlign) {
Modified: trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -35,6 +35,7 @@
if (radioTip != null) {
radio.setTitle(radioTip);
+ radio.setBoxLabel(radioLabel);
// radio.setBoxLabel(KuneUiUtils.genQuickTipLabel(radioLabel, null,
// radioTip));
// ToolTip tooltip = new ToolTip();
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,726 +1,741 @@
@CHARSET "UTF-8";
body {
- background-color: white;
- color: black;
- font-family: 'Ubuntu', Arial;
- font-size: small;
- margin: 5px;
- overflow: hidden;
+ background-color: white;
+ color: black;
+ font-family: 'Ubuntu', Arial;
+ font-size: small;
+ margin: 5px;
+ overflow: hidden;
}
* {
- font-family: 'Ubuntu', Arial;
+ font-family: 'Ubuntu', Arial;
}
body.fontface {
- font: 'Ubuntu', Arial;
+ font: 'Ubuntu', Arial;
}
a {
- color: darkblue;
+ color: darkblue;
}
a:visited {
- color: darkblue;
+ color: darkblue;
}
.gwt-DialogBox {
- border: 2px solid #AAAAAA;
- background-color: white;
+ border: 2px solid #AAAAAA;
+ background-color: white;
}
.gwt-DialogBox .Caption {
- background-image: url(gray_gradient.gif);
- background-repeat: repeat-x;
- padding: 4px;
- padding-bottom: 8px;
- font-weight: bold;
- cursor: default;
+ background-image: url(gray_gradient.gif);
+ background-repeat: repeat-x;
+ padding: 4px;
+ padding-bottom: 8px;
+ font-weight: bold;
+ cursor: default;
}
.gwt-MenuBar {
- background-color: #C3D9FF;
- cursor: default;
+ background-color: #C3D9FF;
+ cursor: default;
}
.gwt-MenuItem {
- font-size: 80%;
- margin: 1px;
- cursor: default;
+ font-size: 80%;
+ margin: 1px;
+ cursor: default;
}
.gwt-MenuItem-selected {
- background-color: #E8EEF7;
+ background-color: #E8EEF7;
}
.gwt-Tree {
-
+
}
.gwt-Tree .gwt-TreeItem {
- font-size: 80%;
- cursor: default;
+ font-size: 80%;
+ cursor: default;
}
.gwt-Tree .gwt-TreeItem-selected {
- background-color: #C3D9FF;
+ background-color: #C3D9FF;
}
.gwt-StackPanel {
- background-color: white;
- border: 1px solid #AAAAAA;
- width: 15em;
+ background-color: white;
+ border: 1px solid #AAAAAA;
+ width: 15em;
}
.gwt-StackPanel .gwt-StackPanelItem {
- background-image: url(blue_gradient.gif);
- background-repeat: repeat-x;
- background-color: #EEEEEE;
- cursor: pointer;
- cursor: hand;
+ background-image: url(blue_gradient.gif);
+ background-repeat: repeat-x;
+ background-color: #EEEEEE;
+ cursor: pointer;
+ cursor: hand;
}
.gwt-StackPanel .gwt-StackPanelItem-selected {
-
+
}
.gwt-TabPanel {
-
+
}
.gwt-TabPanelBottom {
- border-left: 1px solid #87b3ff;
- border-right: 1px solid #87b3ff;
- border-bottom: 1px solid #87b3ff;
+ border-left: 1px solid #87b3ff;
+ border-right: 1px solid #87b3ff;
+ border-bottom: 1px solid #87b3ff;
}
.gwt-TabBar {
- font-size: smaller;
+ font-size: smaller;
}
.gwt-TabBar .gwt-TabBarFirst {
- height: 100%;
- border-bottom: 1px solid #87b3ff;
- border-right: 1px solid #87b3ff;
- padding-left: 3px;
+ height: 100%;
+ border-bottom: 1px solid #87b3ff;
+ border-right: 1px solid #87b3ff;
+ padding-left: 3px;
}
.gwt-TabBar .gwt-TabBarRest {
- border-bottom: 1px solid #87b3ff;
- padding-right: 3px;
+ border-bottom: 1px solid #87b3ff;
+ padding-right: 3px;
}
.gwt-TabBar .gwt-TabBarItem {
- border-top: 1px solid #87b3ff;
- border-bottom: 1px solid #87b3ff;
- padding: 2px;
- cursor: hand;
- white-space: nowrap;
- border-right: 1px solid #87b3ff;
+ border-top: 1px solid #87b3ff;
+ border-bottom: 1px solid #87b3ff;
+ padding: 2px;
+ cursor: hand;
+ white-space: nowrap;
+ border-right: 1px solid #87b3ff;
}
.gwt-TabBar .gwt-TabBarItem-selected {
- font-weight: bold;
- background-color: #e8eef7;
- border-top: 1px solid #87b3ff;
- border-right: 1px solid #87b3ff;
- border-bottom: 1px solid #e8eef7;
- padding: 2px;
- cursor: default;
- white-space: nowrap;
+ font-weight: bold;
+ background-color: #e8eef7;
+ border-top: 1px solid #87b3ff;
+ border-right: 1px solid #87b3ff;
+ border-bottom: 1px solid #e8eef7;
+ padding: 2px;
+ cursor: default;
+ white-space: nowrap;
}
.gwt-PushButton-up {
- background-color: #C3D9FF;
- padding: 2px;
- border: 2px solid transparent;
- border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
- rgb(232, 241, 255);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ border: 2px solid transparent;
+ border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
+ rgb(232, 241, 255);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-PushButton-up-hovering {
- background-color: #C3D9FF;
- padding: 2px;
- border: 2px solid transparent;
- border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
- rgb(232, 241, 255);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ border: 2px solid transparent;
+ border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
+ rgb(232, 241, 255);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-PushButton-down {
- background-color: #C3D9FF;
- padding: 2px;
- border: 2px solid transparent;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ border: 2px solid transparent;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-PushButton-down-hovering {
- background-color: #C3D9FF;
- padding: 2px;
- border: 2px solid transparent;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ border: 2px solid transparent;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-ToggleButton-up {
- background-color: #C3D9FF;
- padding: 2px;
- border: 2px solid transparent;
- border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
- rgb(232, 241, 255);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ border: 2px solid transparent;
+ border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
+ rgb(232, 241, 255);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-ToggleButton-up-hovering {
- background-color: #C3D9FF;
- padding: 2px;
- border: 2px solid transparent;
- border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
- rgb(232, 241, 255);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ border: 2px solid transparent;
+ border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
+ rgb(232, 241, 255);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-ToggleButton-down {
- background-color: #C3D9FF;
- padding: 2px;
- background-color: #E8F1FF;
- border: 2px solid transparent;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ background-color: #E8F1FF;
+ border: 2px solid transparent;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-ToggleButton-down-hovering {
- background-color: #C3D9FF;
- padding: 2px;
- background-color: #E8F1FF;
- border: 2px solid transparent;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
- cursor: pointer;
- cursor: hand;
+ background-color: #C3D9FF;
+ padding: 2px;
+ background-color: #E8F1FF;
+ border: 2px solid transparent;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
+ cursor: pointer;
+ cursor: hand;
}
.gwt-RichTextArea {
- border: 1px solid black;
- background-color: white;
+ border: 1px solid black;
+ background-color: white;
}
.gwt-RichTextToolbar {
- background-color: #C3D9FF;
- padding: 2px;
+ background-color: #C3D9FF;
+ padding: 2px;
}
.gwt-RichTextToolbar .gwt-PushButton-up {
- margin-right: 2px;
- border: 1px solid #C3D9FF;
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
}
.gwt-RichTextToolbar .gwt-PushButton-up-hovering {
- margin-right: 2px;
- border: 1px solid #C3D9FF;
- border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
- rgb(232, 241, 255);
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
+ rgb(232, 241, 255);
}
.gwt-RichTextToolbar .gwt-PushButton-down {
- margin-right: 2px;
- border: 1px solid #C3D9FF;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
}
.gwt-RichTextToolbar .gwt-PushButton-down-hovering {
- margin-right: 2px;
- border: 1px solid #C3D9FF;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
}
.gwt-RichTextToolbar .gwt-ToggleButton-up {
- margin-right: 2px;
- border: 1px solid #C3D9FF;
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
}
.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering {
- margin-right: 2px;
- border: 1px solid #C3D9FF;
- border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
- rgb(232, 241, 255);
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #E8F1FF rgb(157, 174, 205) rgb(157, 174, 205)
+ rgb(232, 241, 255);
}
.gwt-RichTextToolbar .gwt-ToggleButton-down {
- margin-right: 2px;
- background-color: #E8F1FF;
- border: 1px solid #C3D9FF;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
+ margin-right: 2px;
+ background-color: #E8F1FF;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
}
.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering {
- margin-right: 2px;
- background-color: #E8F1FF;
- border: 1px solid #C3D9FF;
- border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
- rgb(157, 174, 205);
+ margin-right: 2px;
+ background-color: #E8F1FF;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD rgb(232, 241, 255) rgb(232, 241, 255)
+ rgb(157, 174, 205);
}
.gwt-HorizontalSplitPanel {
- border: 8px solid #C3D9FF;
+ border: 8px solid #C3D9FF;
}
.gwt-HorizontalSplitPanel .splitter {
- background-color: #C3D9FF;
- cursor: move;
+ background-color: #C3D9FF;
+ cursor: move;
}
.gwt-HorizontalSplitPanel .left {
- background-color: #E8EEF7;
+ background-color: #E8EEF7;
}
.gwt-VerticalSplitPanel {
- border: 8px solid #C3D9FF;
+ border: 8px solid #C3D9FF;
}
.gwt-VerticalSplitPanel .splitter {
- background-color: #C3D9FF;
- height: 8px;
- cursor: move;
+ background-color: #C3D9FF;
+ height: 8px;
+ cursor: move;
}
.gwt-SuggestBoxPopup {
- border: 2px solid #C3D9FF;
+ border: 2px solid #C3D9FF;
}
.gwt-SuggestBoxPopup .item {
- padding: 2px;
+ padding: 2px;
}
.gwt-SuggestBoxPopup .item-selected {
- background-color: #C3D9FF;
- padding: 2px;
+ background-color: #C3D9FF;
+ padding: 2px;
}
.gwt-DisclosurePanel {
- border: 2px solid #C3D9FF;
+ border: 2px solid #C3D9FF;
}
.gwt-DisclosurePanel .header {
- background-color: #e8eef7;
- cursor: hand;
+ background-color: #e8eef7;
+ cursor: hand;
}
.gwt-SplitLayoutPanel {
-
+
}
.gwt-SplitLayoutPanel .gwt-SplitLayoutPanel-HDragger {
- background-color: white;
- background: none;
- cursor: col-resize;
+ background-color: white;
+ background: none;
+ cursor: col-resize;
}
.gwt-SplitLayoutPanel .gwt-SplitLayoutPanel-VDragger {
- background-color: white;
- background: none;
- cursor: row-resize;
+ background-color: white;
+ background: none;
+ cursor: row-resize;
}
.kLoadingPanel {
- background-color: #FF9999;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
- border-bottom-right-radius: 4px;
- padding: 0 1px 0 3px;
- border-collapse: separate;
- border-spacing: 2px;
+ background-color: #FF9999;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
+ padding: 0 1px 0 3px;
+ border-collapse: separate;
+ border-spacing: 2px;
}
.kLoadingLabel {
- font-size: 14px;
- color: white;
- font-weight: bold;
- padding: 0 5px 0 5px;
+ font-size: 14px;
+ color: white;
+ font-weight: bold;
+ padding: 0 5px 0 5px;
}
.k-space-sel {
- margin-right: 10px;
- background-color: #F2F2F2;
+ margin-right: 10px;
+ background-color: #F2F2F2;
}
.k-space-sel-btn {
- padding: 0 1px 0 1px;
- margin: 0 0 -2px;
+ padding: 0 1px 0 1px;
+ margin: 0 0 -2px;
}
.k-sitebar-logo {
- margin-top: 2px;
+ margin-top: 2px;
}
.x-btn button {
- font: 18px/27px 'Ubuntu', arial;
+ font: 18px/27px 'Ubuntu', arial;
}
-.k-btn-sitebar, .k-btn-sitebar button {
- font: 13px 'Ubuntu', arial;
- color: #B3B3B3;
- cursor: pointer;
- text-decoration: underline;
- white-space: nowrap;
+.k-btn-sitebar,.k-btn-sitebar button {
+ font: 13px 'Ubuntu', arial;
+ color: #B3B3B3;
+ cursor: pointer;
+ text-decoration: underline;
+ white-space: nowrap;
}
.k-btn-sitebar button {
- margin-top: -5px;
+ margin-top: -5px;
}
.k-sitebar { /* margin-top: -30px; */
-
+
}
.k-link {
- text-decoration: underline;
- color: green;
- cursor: pointer;
+ text-decoration: underline;
+ color: green;
+ cursor: pointer;
}
/* Margins */
.kune-Margin-40-trbl {
- margin: 40px;
+ margin: 40px;
}
.kune-Margin-40-lr {
- margin-left: 40px;
- margin-right: 40px;
+ margin-left: 40px;
+ margin-right: 40px;
}
.kune-Margin-40-tl {
- margin-top: 40px;
- margin-left: 40px;
+ margin-top: 40px;
+ margin-left: 40px;
}
.kune-Margin-40-tb {
- margin-top: 40px;
- margin-bottom: 40px;
+ margin-top: 40px;
+ margin-bottom: 40px;
}
.kune-Margin-40-t {
- margin-top: 40px;
+ margin-top: 40px;
}
.kune-Margin-40-r {
- margin-right: 40px;
+ margin-right: 40px;
}
.kune-Margin-40-l {
- margin-left: 40px;
+ margin-left: 40px;
}
.kune-Margin-20-trbl {
- margin: 20px;
+ margin: 20px;
}
.kune-Margin-20-lr {
- margin-left: 20px;
- margin-right: 20px;
+ margin-left: 20px;
+ margin-right: 20px;
}
.kune-Margin-20-tl {
- margin-top: 20px;
- margin-left: 20px;
+ margin-top: 20px;
+ margin-left: 20px;
}
.kune-Margin-20-tb {
- margin-top: 20px;
- margin-bottom: 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
}
.kune-Margin-20-t {
- margin-top: 20px;
+ margin-top: 20px;
}
.kune-Margin-20-r {
- margin-right: 20px;
+ margin-right: 20px;
}
.kune-Margin-20-l {
- margin-left: 20px;
+ margin-left: 20px;
}
.kune-Margin-Large-trbl {
- margin: 10px;
+ margin: 10px;
}
.kune-Margin-Large-lr {
- margin-left: 10px;
- margin-right: 10px;
+ margin-left: 10px;
+ margin-right: 10px;
}
.kune-Margin-Large-tl {
- margin-top: 10px;
- margin-left: 10px;
+ margin-top: 10px;
+ margin-left: 10px;
}
.kune-Margin-Large-tb {
- margin-top: 10px;
- margin-bottom: 10px;
+ margin-top: 10px;
+ margin-bottom: 10px;
}
.kune-Margin-Large-t {
- margin-top: 10px;
+ margin-top: 10px;
}
.kune-Margin-Large-r {
- margin-right: 10px;
+ margin-right: 10px;
}
.kune-Margin-Large-l {
- margin-left: 10px;
+ margin-left: 10px;
}
.kune-Margin-7-trbl {
- margin: 7px;
+ margin: 7px;
}
.kune-Margin-7-lr {
- margin-left: 7px;
- margin-right: 7px;
+ margin-left: 7px;
+ margin-right: 7px;
}
.kune-Margin-7-tl {
- margin-top: 7px;
- margin-left: 7px;
+ margin-top: 7px;
+ margin-left: 7px;
}
.kune-Margin-7-tb {
- margin-top: 7px;
- margin-bottom: 7px;
+ margin-top: 7px;
+ margin-bottom: 7px;
}
.kune-Margin-7-t {
- margin-top: 7px;
+ margin-top: 7px;
}
.kune-Margin-7-r {
- margin-right: 7px;
+ margin-right: 7px;
}
.kune-Margin-7-b {
- margin-bottom: 7px;
+ margin-bottom: 7px;
}
.kune-Margin-7-l {
- margin-left: 7px;
+ margin-left: 7px;
}
.kune-Margin-Medium-trbl {
- margin: 5px;
+ margin: 5px;
}
.kune-Margin-Medium-lr {
- margin-left: 5px;
- margin-right: 5px;
+ margin-left: 5px;
+ margin-right: 5px;
}
.kune-Margin-Medium-tl {
- margin-top: 5px;
- margin-left: 5px;
+ margin-top: 5px;
+ margin-left: 5px;
}
.kune-Margin-Medium-tb {
- margin-top: 5px;
- margin-bottom: 5px;
+ margin-top: 5px;
+ margin-bottom: 5px;
}
.kune-Margin-Medium-t {
- margin-top: 5px;
+ margin-top: 5px;
}
.kune-Margin-Medium-r {
- margin-right: 5px;
+ margin-right: 5px;
}
.kune-Margin-Medium-b {
- margin-bottom: 5px;
+ margin-bottom: 5px;
}
.kune-Margin-Medium-l {
- margin-left: 5px;
+ margin-left: 5px;
}
.kune-Margin-Small-trbl {
- margin: 3px;
+ margin: 3px;
}
.kune-Margin-Small-lr {
- margin-left: 3px;
- margin-right: 3px;
+ margin-left: 3px;
+ margin-right: 3px;
}
.kune-Margin-Small-tl {
- margin-top: 3px;
- margin-left: 3px;
+ margin-top: 3px;
+ margin-left: 3px;
}
.kune-Margin-Small-tb {
- margin-top: 3px;
- margin-bottom: 3px;
+ margin-top: 3px;
+ margin-bottom: 3px;
}
.kune-Margin-Small-t {
- margin-top: 3px;
+ margin-top: 3px;
}
.kune-Margin-Small-l {
- margin-left: 3px;
+ margin-left: 3px;
}
.kune-Margin-Small-r {
- margin-right: 3px;
+ margin-right: 3px;
}
.kune-Margin-Small-b {
- margin-bottom: 3px;
+ margin-bottom: 3px;
}
.kune-Margin-Mini-trbl {
- margin: 1px;
+ margin: 1px;
}
.kune-Margin-Mini-lr {
- margin-left: 1px;
- margin-right: 1px;
+ margin-left: 1px;
+ margin-right: 1px;
}
.kune-Margin-Mini-tl {
- margin-top: 1px;
- margin-left: 1px;
+ margin-top: 1px;
+ margin-left: 1px;
}
.kune-Margin-Mini-tb {
- margin-top: 1px;
- margin-bottom: 1px;
+ margin-top: 1px;
+ margin-bottom: 1px;
}
.kune-Margin-Mini-t {
- margin-top: 1px;
+ margin-top: 1px;
}
.kune-Margin-Mini-r {
- margin-right: 1px;
+ margin-right: 1px;
}
.kune-Margin-Mini-b {
- margin-bottom: 1px;
+ margin-bottom: 1px;
}
.kune-Margin-Mini-l {
- margin-left: 1px;
+ margin-left: 1px;
}
.k-publicspace-msg {
- background-color: #E0E0E0;
+ background-color: #E0E0E0;
}
.k-publicspace-mask { /* background-color: #fff !important;
- kfilter: alpha(opacity = 68) !important;
- -moz-opacity: 0.68 !important;
- -khtml-opacity: 0.68 !important;
- opacity: 0.68 !important;*/
-
+ kfilter: alpha(opacity = 68) !important;
+ -moz-opacity: 0.68 !important;
+ -khtml-opacity: 0.68 !important;
+ opacity: 0.68 !important;*/
+
}
.k-publicspace-panel {
- margin: 5px;
- display: table-row;
+ margin: 5px;
+ display: table-row;
}
.k-publicspace-icon {
- margin: 3px 3px 3px 0;
- float: left;
+ margin: 3px 3px 3px 0;
+ float: left;
}
.k-publicspace-title {
- font-weight: bold;
- display: block;
- margin-bottom: 5px;
- font-size: 16px;
- display: table-caption;
+ font-weight: bold;
+ display: block;
+ margin-bottom: 5px;
+ font-size: 16px;
+ display: table-caption;
}
.k-publicspace-description {
- font-size: 14px;
- display: table-cell;
+ font-size: 14px;
+ display: table-cell;
}
.k-publicspace-actions {
- display: inline;
+ display: inline;
}
.k-message-panel {
- margin: 5px;
- display: table-row;
+ margin: 5px;
+ display: table-row;
}
.k-message-icon {
- margin: 3px 3px 3px 0;
- float: left;
+ margin: 3px 3px 3px 0;
+ float: left;
}
.k-message-title {
- font-weight: bold;
- display: block;
- margin-bottom: 5px;
- font-size: 16px;
- display: table-caption;
+ font-weight: bold;
+ display: block;
+ margin-bottom: 5px;
+ font-size: 16px;
+ display: table-caption;
}
.k-message-description {
- font-size: 14px;
- display: table-cell;
+ font-size: 14px;
+ display: table-cell;
}
.k-error-tb {
- background: #FFB380 none repeat scroll 0% 50%;
- /* color: #250; */
- margin: 0 20px 0 10px;
+ background: #FFB380 none repeat scroll 0% 50%;
+ /* color: #250; */
+ margin: 0 20px 0 10px;
}
.k-error-tb img {
- margin: 15px 5px 5px 15px;
+ margin: 15px 5px 5px 15px;
}
.k-error-tb span {
- position: relative;
- top: -7px;
- left: 9px;
+ position: relative;
+ top: -7px;
+ left: 9px;
}
.k-mask {
- background-color: #F2F2F2 !important;
- /* kfilter: alpha(opacity = 78) !important; */
- -moz-opacity: 0.78 !important;
- -khtml-opacity: 0.78 !important;
- opacity: 0.78 !important;
+ background-color: #F2F2F2 !important;
+ /* kfilter: alpha(opacity = 78) !important; */
+ -moz-opacity: 0.78 !important;
+ -khtml-opacity: 0.78 !important;
+ opacity: 0.78 !important;
}
.x-form-item-label {
- font-size: 16px;
- font-weight: bold;
+ font-size: 14px;
+ font-weight: bold;
+ color: brown;
}
.x-form-text {
- font-size: 14px;
+ font-size: 14px;
}
-
\ No newline at end of file
+
+.x-fieldset-header-text,.x-form-group-label,.x-form-cb-label {
+ font-size: 14px;
+ font-family: 'Ubuntu', Arial;
+}
+
+.k-form-intro {
+ font-size: 14px;
+ margin-bottom: 10px;
+}
+
+.k-form-fieldset {
+ font-size: 16px;
+ margin-left: 105px;
+}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/public/ws.html
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.html 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/core/public/ws.html 2011-02-08 14:17:50 UTC (rev 1241)
@@ -4,7 +4,7 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Kune</title>
<script type="text/javascript" language="javascript"
- src="/ws/ws.nocache.js"></script>
+ src="/ws/ws.nocache.js"></script>
<meta name="emite.httpBase" content="/http-bind/" />
<meta name="emite.host" content="localhost" />
<meta name="emite.searchHost" content="search.localhost" />
@@ -25,52 +25,52 @@
<meta name="hablar.height" content="300px" />
<link rel="shortcut icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css"
- href="http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css">
+ href="http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css">
<!-- FIXME: make something local -->
<script src="//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script>
<script>
- WebFont.load({
- google : {
- families : [ 'Ubuntu' ]
- }
- });
+ WebFont.load({
+ google : {
+ families : [ 'Ubuntu' ]
+ }
+ });
</script>
<!-- Only for wave testing -->
<script type="text/javascript" language="javascript">
- var __session = {
- "id" : "TK8O7UyqvT",
- "address" : "vjrj at kune.beta.iepala.es",
- "domain" : "kune.beta.iepala.es"
- };
- var __client_flags = {};
- var __useSocketIO = true;
+ var __session = {
+ "id" : "TK8O7UyqvT",
+ "address" : "vjrj at kune.beta.iepala.es",
+ "domain" : "kune.beta.iepala.es"
+ };
+ var __client_flags = {};
+ var __useSocketIO = true;
</script>
<link
- href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic'
- rel='stylesheet' type='text/css'>
+ href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic'
+ rel='stylesheet' type='text/css'>
<!-- <link href='http://fonts.googleapis.com/css?family=Inconsolata'
- rel='stylesheet' type='text/css'> -->
+ rel='stylesheet' type='text/css'> -->
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-all.css">
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-gray.css">
<link type="text/css" rel="stylesheet" href="kune-hablar.css">
<link type="text/css" rel="stylesheet" href="kune-chat.css">
<link type="text/css" rel="stylesheet" href="kune-common.css">
<link type="text/css" rel="stylesheet"
- href="fontface/ubuntufontface.css">
+ href="fontface/ubuntufontface.css">
<link type="text/css" rel="stylesheet" href="kune-message.css">
<link type="text/css" rel="stylesheet" href="ws.css">
<style type="text/css">
body {
- background-color: white;
- color: black;
- font-family: 'Ubuntu', Arial;
- font-size: small;
- margin: 5px;
- overflow: hidden;
+ background-color: white;
+ color: black;
+ font-family: 'Ubuntu', Arial;
+ font-size: small;
+ margin: 5px;
+ overflow: hidden;
}
.banner {
- margin: 30px;
+ margin: 30px;
}
</style>
<!--[if IE 6]>
@@ -82,13 +82,15 @@
<div class="banner" id="banner"></div>
<!-- Autocomplete user/pass -->
<form method="post" action="javascript:void(0)" style="display: none">
-<input type="text" id="username" name="username" value="" /> <input
- type="password" id="password" name="password" value="" /> <input
- type="submit" value="Login" id="login" /></form>
+<input type="text" id="address" name="address" value="" /> <input
+ type="password" id="password" name="password" value="" /> <input
+ type="submit" value="Login" id="login" />
+ <input type="submit" class="wiab le button" name="signIn" id="signIn" value="Sign in">
+ </form>
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
<noscript>
<div
- style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
+ style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
Your web browser must have JavaScript enabled in order for this
application to display correctly.</div>
</noscript>
Added: trunk/src/main/java/cc/kune/wave/client/WaveClientTester.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveClientTester.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/WaveClientTester.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -0,0 +1,43 @@
+package cc.kune.wave.client;
+
+import cc.kune.common.client.noti.NotifyUser;
+
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
+
+public class WaveClientTester {
+
+ public WaveClientTester() {
+ }
+
+ public void doLogin(final String userWithoutDomain, final String passwd) {
+ 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);
+ }
+
+ @Override
+ public void onResponseReceived(final Request request, final Response response) {
+ NotifyUser.info(response.getText());
+ }
+ });
+ } catch (final RequestException e) {
+ NotifyUser.error(e.getStackTrace().toString(), true);
+ }
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/wave/client/WaveClientTester.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/wave/server/CustomWaveClientServlet.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/CustomWaveClientServlet.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/CustomWaveClientServlet.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -0,0 +1,188 @@
+/**
+ * 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.server;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.Enumeration;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.waveprotocol.box.common.SessionConstants;
+import org.waveprotocol.box.server.CoreSettings;
+import org.waveprotocol.box.server.authentication.SessionManager;
+import org.waveprotocol.box.server.gxp.TopBar;
+import org.waveprotocol.box.server.gxp.WaveClientPage;
+import org.waveprotocol.box.server.rpc.BaseUrlHelper;
+import org.waveprotocol.box.server.util.RandomBase64Generator;
+import org.waveprotocol.wave.client.util.ClientFlagsBase;
+import org.waveprotocol.wave.common.bootstrap.FlagConstants;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.util.logging.Log;
+
+import com.google.common.collect.Maps;
+import com.google.gxp.base.GxpContext;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
+/**
+ * The HTTP servlet for serving a wave client along with content generated on
+ * the server.
+ *
+ * @author kalman at google.com (Benjamin Kalman)
+ */
+public class CustomWaveClientServlet extends HttpServlet {
+
+ private static final HashMap<String, String> FLAG_MAP = Maps.newHashMap();
+
+ private static final Log LOG = Log.get(CustomWaveClientServlet.class);
+ static {
+ // __NAME_MAPPING__ is a map of name to obfuscated id
+ for (int i = 0; i < FlagConstants.__NAME_MAPPING__.length; i += 2) {
+ FLAG_MAP.put(FlagConstants.__NAME_MAPPING__[i], FlagConstants.__NAME_MAPPING__[i + 1]);
+ }
+ }
+
+ private final String baseUrl;
+ private final String domain;
+ private final SessionManager sessionManager;
+ private final Boolean useSocketIO;
+
+ /**
+ * Creates a servlet for the wave client.
+ */
+ @Inject
+ public CustomWaveClientServlet(@Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain,
+ @Named(CoreSettings.USE_SOCKETIO) final Boolean useSocketIO,
+ @Named(CoreSettings.HTTP_BASE_URL) final String baseUrl, final SessionManager sessionManager) {
+ this.domain = domain;
+ this.useSocketIO = useSocketIO;
+ this.baseUrl = BaseUrlHelper.removeLastSlash(baseUrl);
+ this.sessionManager = sessionManager;
+ }
+
+ @Override
+ protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException {
+ final ParticipantId id = sessionManager.getLoggedInUser(request.getSession(false));
+
+ // Eventually, it would be nice to show users who aren't logged in the
+ // public waves.
+ // However, public waves aren't implemented yet. For now, we'll just
+ // redirect users
+ // who haven't signed in to the sign in page.
+ // COMMENTED (vjrj)
+ if (id == null) {
+ response.sendRedirect(baseUrl + sessionManager.getLoginUrl(baseUrl + "/"));
+ return;
+ }
+
+ String username = null;
+ String userDomain = null;
+ if (id != null) {
+ final String[] parts = id.getAddress().split("@");
+ username = parts[0];
+ userDomain = id.getDomain();
+ }
+
+ try {
+ WaveClientPage.write(response.getWriter(), new GxpContext(request.getLocale()),
+ getSessionJson(request.getSession(false)), getClientFlags(request),
+ TopBar.getGxpClosure(username, userDomain, baseUrl), useSocketIO, baseUrl);
+ } catch (final IOException e) {
+ LOG.warning("Failed to write GXP for request " + request, e);
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ return;
+ }
+
+ response.setContentType("text/html");
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+
+ private JSONObject getClientFlags(final HttpServletRequest request) {
+ try {
+ final JSONObject ret = new JSONObject();
+
+ final Enumeration<?> iter = request.getParameterNames();
+ while (iter.hasMoreElements()) {
+ final String name = (String) iter.nextElement();
+ final String value = request.getParameter(name);
+
+ if (FLAG_MAP.containsKey(name)) {
+ // Set using the correct type of data in the json using
+ // reflection
+ try {
+ final Method getter = ClientFlagsBase.class.getMethod(name);
+ final Class<?> retType = getter.getReturnType();
+
+ if (retType.equals(String.class)) {
+ ret.put(FLAG_MAP.get(name), value);
+ } else if (retType.equals(Integer.class)) {
+ ret.put(FLAG_MAP.get(name), Integer.parseInt(value));
+ } else if (retType.equals(Boolean.class)) {
+ ret.put(FLAG_MAP.get(name), Boolean.parseBoolean(value));
+ } else if (retType.equals(Float.class)) {
+ ret.put(FLAG_MAP.get(name), Float.parseFloat(value));
+ } else if (retType.equals(Double.class)) {
+ ret.put(FLAG_MAP.get(name), Double.parseDouble(value));
+ } else {
+ // Flag exists, but its type is unknown, so it can
+ // not be
+ // properly encoded in JSON.
+ LOG.warning("Ignoring flag [" + name + "] with unknown return type: " + retType);
+ }
+
+ // Ignore the flag on any exception
+ } catch (final SecurityException ex) {
+ } catch (final NoSuchMethodException ex) {
+ LOG.warning("Failed to find the flag [" + name + "] in ClientFlagsBase.");
+ } catch (final NumberFormatException ex) {
+ }
+ }
+ }
+
+ return ret;
+ } catch (final JSONException ex) {
+ LOG.severe("Failed to create flags JSON");
+ return new JSONObject();
+ }
+ }
+
+ private JSONObject getSessionJson(final HttpSession session) {
+ try {
+ final ParticipantId user = sessionManager.getLoggedInUser(session);
+ final String address = (user != null) ? user.getAddress() : null;
+
+ // TODO(zdwang): Figure out a proper session id rather than
+ // generating a
+ // random number
+ final String sessionId = (new RandomBase64Generator()).next(10);
+
+ return new JSONObject().put(SessionConstants.DOMAIN, domain).putOpt(SessionConstants.ADDRESS, address).putOpt(
+ SessionConstants.ID_SEED, sessionId);
+ } catch (final JSONException e) {
+ LOG.severe("Failed to create session JSON");
+ return new JSONObject();
+ }
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/wave/server/CustomWaveClientServlet.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/wave/server/WaveStarter.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveStarter.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/cc/kune/wave/server/WaveStarter.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -45,7 +45,6 @@
import org.waveprotocol.box.server.rpc.FetchServlet;
import org.waveprotocol.box.server.rpc.ServerRpcProvider;
import org.waveprotocol.box.server.rpc.SignOutServlet;
-import org.waveprotocol.box.server.rpc.WaveClientServlet;
import org.waveprotocol.box.server.waveserver.WaveBus;
import org.waveprotocol.box.server.waveserver.WaveServerException;
import org.waveprotocol.box.server.waveserver.WaveletProvider;
@@ -140,7 +139,7 @@
final ServletHolder proxyServletHolder = server.addServlet("/gadgets/*", proxyServlet);
proxyServletHolder.setInitParameter("HostHeader", gadgetServerHostname);
- server.addServlet("/", injector.getInstance(WaveClientServlet.class));
+ server.addServlet("/", injector.getInstance(CustomWaveClientServlet.class));
}
public WaveStarter() {
Modified: trunk/src/main/java/org/ourproject/kune/app/server/AbstractExtendedModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/AbstractExtendedModule.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/org/ourproject/kune/app/server/AbstractExtendedModule.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneApplicationListener.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneApplicationListener.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneApplicationListener.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
@@ -99,12 +99,8 @@
builder.exclude("/javascripts/.*");
builder.exclude("/templates/.*");
- /* Wave with context '/wiab/' */
- // builder.exclude("/wiab.*");
- // builder.exclude("/socket.*");
-
/* Wave with context '/' */
- builder.exclude("/");
+ // builder.exclude("/*");
builder.exclude("/attachment/.*");
builder.exclude("/auth/signin");
builder.exclude("/auth/signout");
Modified: trunk/src/main/java/org/ourproject/kune/app/server/NotInObject.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/NotInObject.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/org/ourproject/kune/app/server/NotInObject.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -1,6 +1,6 @@
/*
*
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * 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
Modified: trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java 2011-02-08 14:17:50 UTC (rev 1241)
@@ -90,7 +90,6 @@
throws IOException, ServletException {
final String relative = RackHelper.getRelativeURL(request);
- LOG.debug("REQUEST: " + relative);
for (final RequestMatcher matcher : excludes) {
if (matcher.matches(relative)) {
LOG.info("Excluded (from Guice): " + relative);
@@ -98,7 +97,7 @@
return;
}
}
-
+ LOG.debug("REQUEST: " + relative);
final FilterChain newChain = new DockChain(docks.iterator());
newChain.doFilter(request, response);
}
Modified: trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/src/main/webapp/WEB-INF/web.xml 2011-02-07 21:14:53 UTC (rev 1240)
+++ trunk/src/main/webapp/WEB-INF/web.xml 2011-02-08 14:17:50 UTC (rev 1241)
@@ -18,7 +18,6 @@
<welcome-file-list>
<welcome-file>ws.html</welcome-file>
</welcome-file-list>
-
<!-- Wave proxies ========================================================================================= -->
<filter>
<filter-name>JettyContinuationFilter</filter-name>
@@ -26,6 +25,23 @@
</filter>
<filter-mapping>
<filter-name>JettyContinuationFilter</filter-name>
+ <servlet-name>Wiab</servlet-name>
+ <!-- <url-pattern>/*</url-pattern> -->
+ </filter-mapping>
+ <servlet>
+ <servlet-name>Wiab</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Wiab</servlet-name>
<url-pattern>/attachment/*</url-pattern>
<url-pattern>/auth/signin</url-pattern>
<url-pattern>/auth/signout</url-pattern>
@@ -43,8 +59,8 @@
<url-pattern>/static/*</url-pattern>
<url-pattern>/webclient/*</url-pattern>
<!-- <url-pattern>/*</url-pattern> -->
- </filter-mapping>
-
+ <!-- <load-on-startup>1</load-on-startup> -->
+ </servlet-mapping>
<!-- JRuby servlets ======================================================================================= -->
<!-- Note: this gives problems depending on the version of jetty or tomcat -->
<context-param>
@@ -84,7 +100,6 @@
<listener>
<listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
</listener>
-
<!-- Emite xmpp proxy ======================================================================================= -->
<!-- <servlet> -->
<!-- <servlet-name>HttpBind</servlet-name> -->
@@ -123,278 +138,6 @@
<url-pattern>/http-bind/
</url-pattern>
</servlet-mapping>
- <!-- Wave proxies with context / ====================================================================== -->
- <servlet>
- <servlet-name>WiabAttachs</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabAttachs</servlet-name>
- <url-pattern>/attachment/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabSignIn</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabSignIn</servlet-name>
- <url-pattern>/auth/signin</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabSignOut</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabSignOut</servlet-name>
- <url-pattern>/auth/signout</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabRegister</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabRegister</servlet-name>
- <url-pattern>/auth/register</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabFetch</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabFetch</servlet-name>
- <url-pattern>/fetch/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabRobotDataApi</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabRobotDataApi</servlet-name>
- <url-pattern>/robot/dataapi</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabRobotDataApiOauth</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabRobotDataApiOauth</servlet-name>
- <url-pattern>/robot/dataapi/oauth/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabRobotDataApiRpc</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabRobotDataApiRpc</servlet-name>
- <url-pattern>/robot/dataapi/rpc</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabRobotRegister</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabRobotRegister</servlet-name>
- <url-pattern>/robot/register/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabRobotRpc</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabRobotRpc</servlet-name>
- <url-pattern>/robot/rpc</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabGadgets</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabGadgets</servlet-name>
- <url-pattern>/gadgets</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabGadgetsAst</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabGadgetsAst</servlet-name>
- <url-pattern>/gadgets/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabSocketIO</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabSocketIO</servlet-name>
- <url-pattern>/socket.io/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabSocket</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabSocket</servlet-name>
- <url-pattern>/socket</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabStatic</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabStatic</servlet-name>
- <url-pattern>/static/*</url-pattern>
- </servlet-mapping>
- <!-- ==================== -->
- <servlet>
- <servlet-name>WiabWebClient</servlet-name>
- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
- <init-param>
- <param-name>ProxyTo</param-name>
- <param-value>http://127.0.0.1:9898/</param-value>
- </init-param>
- <init-param>
- <param-name>Prefix</param-name>
- <param-value>/</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>WiabWebClient</servlet-name>
- <url-pattern>/webclient/*</url-pattern>
- </servlet-mapping>
<!-- Kune normal guice configuration ======================================================================== -->
<filter>
<filter-name>rack</filter-name>
More information about the kune-commits
mailing list