Author: vjrj_ Date: 2012-05-01 15:48:27 +0200 (Tue, 01 May 2012) New Revision: 1861 Added: trunk/src/main/java/org/waveprotocol/box/server/waveserver/ trunk/src/main/java/org/waveprotocol/box/server/waveserver/CustomImportServlet.java Modified: trunk/debian/changelog trunk/debian/files trunk/debian/kune.init trunk/img/screenshots/kune-chat-sele.png trunk/img/screenshots/kune-groupOptions-sele.png trunk/img/screenshots/kune-home-stats-sele.png trunk/img/screenshots/kune-inbox-sele.png trunk/img/screenshots/kune-newgroup-sele.png trunk/img/screenshots/kune-register-sele.png trunk/img/screenshots/kune-social-net-sele.png trunk/img/screenshots/kune-socialNetOptions-sele.png trunk/img/screenshots/kune-tutorials-sele.png trunk/src/main/java/cc/kune/core/server/KuneRackModule.java trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java trunk/src/main/java/cc/kune/wave/server/WaveMain.java trunk/src/main/resources/kune-production.properties trunk/src/main/resources/kune.properties trunk/src/main/resources/wave-server.properties trunk/src/test/java/cc/kune/selenium/KuneSeleniumTest.java trunk/src/test/java/cc/kune/selenium/SeleniumConf.java Log: NEW - # 260: Google Wave Import usernames translation http://kune.ourproject.org/issues/ticket/260 Modified: trunk/debian/changelog =================================================================== --- trunk/debian/changelog 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/debian/changelog 2012-05-01 13:48:27 UTC (rev 1861) @@ -1,3 +1,10 @@ +kune (0.2.0+b4) unstable; urgency=low + + * Added some kune.wave.import.usernamespairs param + * Fixed status init function + + -- Vicente J. Ruiz Jurado <[email protected]> Mon, 30 Apr 2012 22:19:50 +0200 + kune (0.2.0+b3) unstable; urgency=low * Init loging fixed. Other minor changes Modified: trunk/debian/files =================================================================== --- trunk/debian/files 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/debian/files 2012-05-01 13:48:27 UTC (rev 1861) @@ -1 +1 @@ -kune_0.2.0+b3_all.deb java optional +kune_0.2.0+b4_all.deb java optional Modified: trunk/debian/kune.init =================================================================== --- trunk/debian/kune.init 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/debian/kune.init 2012-05-01 13:48:27 UTC (rev 1861) @@ -131,7 +131,7 @@ esac ;; status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + status_of_proc "$NAME" "$NAME" && exit 0 || exit $? ;; reload|force-reload) # Modified: trunk/img/screenshots/kune-chat-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-groupOptions-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-home-stats-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-inbox-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-newgroup-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-register-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-social-net-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-socialNetOptions-sele.png =================================================================== (Binary files differ) Modified: trunk/img/screenshots/kune-tutorials-sele.png =================================================================== (Binary files differ) Modified: trunk/src/main/java/cc/kune/core/server/KuneRackModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -187,7 +187,6 @@ if (!kuneProperties.getBoolean(KuneProperties.SITE_OPENFIRE_IGNORE)) { filter("/*").through(DataSourceOpenfirePersistModule.MY_DATA_SOURCE_TWO_FILTER_KEY); } - super.configureServlets(); } }); Modified: trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -69,6 +69,7 @@ String SITE_URL = "kune.siteurl"; String SITE_USER_AVAILABLE_TOOLS = "kune.tools.userSiteAvailableTools"; String SITE_USER_REGIST_ENABLED_TOOLS = "kune.tools.userRegisEnabledTools"; + String SITE_WAVE_IMPORT_USERNAME_PAIRS = "kune.wave.import.usernamespairs"; String UI_TRANSLATOR_ENABLED = "kune.ui-translator.enabled"; String UPLOAD_DELAY_FOR_TEST = "kune.upload.delayfortest"; String UPLOAD_GALLERY_PERMITTED_EXTS = "kune.upload.gallerypermittedextensions"; Modified: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -35,8 +35,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.waveprotocol.box.server.rpc.ServerRpcProvider; +import org.waveprotocol.box.server.waveserver.CustomImportServlet; import cc.kune.core.server.error.ServerException; +import cc.kune.core.server.properties.KuneProperties; import cc.kune.core.server.rack.dock.Dock; import cc.kune.core.server.rack.dock.RequestMatcher; import cc.kune.core.server.rack.utils.RackHelper; @@ -173,6 +175,8 @@ excludes = rack.getExcludes(); initFilters(filterConfig); LOG.debug("INITIALIZATION DONE!"); + kuneChildInjector.getInstance(CustomImportServlet.class).init( + kuneChildInjector.getInstance(KuneProperties.class)); // Uncomment to generate the graph // graph("docs/wave-guice-graph.dot", injector); Modified: trunk/src/main/java/cc/kune/wave/server/WaveMain.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/WaveMain.java 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/java/cc/kune/wave/server/WaveMain.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -59,7 +59,7 @@ import org.waveprotocol.box.server.rpc.SignOutServlet; import org.waveprotocol.box.server.rpc.UserRegistrationServlet; import org.waveprotocol.box.server.rpc.WaveRefServlet; -import org.waveprotocol.box.server.waveserver.ImportServlet; +import org.waveprotocol.box.server.waveserver.CustomImportServlet; import org.waveprotocol.box.server.waveserver.WaveBus; import org.waveprotocol.box.server.waveserver.WaveServerException; import org.waveprotocol.box.server.waveserver.WaveletProvider; @@ -233,7 +233,7 @@ boolean enableImport = injector .getInstance(Key.get(Boolean.class, Names.named(CoreSettings.ENABLE_IMPORT))); if (enableImport) - server.addServlet("/import", injector.getInstance(ImportServlet.class)); + server.addServlet("/import", injector.getInstance(CustomImportServlet.class)); String gadgetHostName = injector Added: trunk/src/main/java/org/waveprotocol/box/server/waveserver/CustomImportServlet.java =================================================================== --- trunk/src/main/java/org/waveprotocol/box/server/waveserver/CustomImportServlet.java (rev 0) +++ trunk/src/main/java/org/waveprotocol/box/server/waveserver/CustomImportServlet.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -0,0 +1,311 @@ +// @formatter:off +/** + * Copyright 2012 A. Kaplanov + * + * 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 org.waveprotocol.box.server.waveserver; + +import cc.kune.core.server.properties.KuneProperties; + +import com.google.gxp.org.apache.xerces.impl.dv.util.Base64; +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.inject.Singleton; +import com.google.protobuf.ByteString; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.Reader; +import java.io.StringWriter; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.json.JSONArray; +import org.json.JSONObject; +import org.waveprotocol.box.server.persistence.AttachmentStore; +import org.waveprotocol.wave.model.version.HashedVersion; +import org.waveprotocol.wave.model.wave.InvalidParticipantAddress; +import org.waveprotocol.wave.util.logging.Log; +import org.waveprotocol.wave.federation.Proto.ProtocolAppliedWaveletDelta; +import org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion; +import org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta; +import org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation; +import org.waveprotocol.wave.model.id.IdURIEncoderDecoder; +import org.waveprotocol.wave.model.id.WaveId; +import org.waveprotocol.wave.model.id.WaveletId; +import org.waveprotocol.wave.model.id.WaveletName; +import org.waveprotocol.wave.model.version.HashedVersionFactory; +import org.waveprotocol.wave.model.version.HashedVersionFactoryImpl; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.util.escapers.jvm.JavaUrlCodec; + +/** + * + * @author ([email protected]) (Andrew Kaplanov) + */ +@SuppressWarnings("serial") +@Singleton +public class CustomImportServlet extends HttpServlet { + + private static final Log LOG = Log.get(CustomImportServlet.class); + public static final String GWAVE_PUBLIC_DOMAIN = "a.gwave.com"; + public static final String GWAVE_PUBLIC_USER_NAME = "public"; + public static final String WIAB_SHARED_USER_NAME = ""; + private static final IdURIEncoderDecoder URI_CODEC = new IdURIEncoderDecoder(new JavaUrlCodec()); + private static final HashedVersionFactory HASH_FACTORY = new HashedVersionFactoryImpl(URI_CODEC); + private final WaveletProvider waveletProvider; + private final AttachmentStore attachmentStore; + private final WaveMap waveMap; + private KuneProperties kuneProperties; + private static HashMap<String, String> userMap; + + @Inject + private CustomImportServlet(WaveletProvider waveletProvider, AttachmentStore attachmentStore, + WaveMap waveMap) { + this.waveletProvider = waveletProvider; + this.attachmentStore = attachmentStore; + this.waveMap = waveMap; + } + + public void init(KuneProperties kuneProperties ) { + this.kuneProperties = kuneProperties; + if (userMap == null) { + initUserMap(); + } + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String domain = request.getHeader("domain"); + WaveId waveId = WaveId.deserialise(request.getHeader("waveId")); + WaveletId waveletId = WaveletId.deserialise(request.getHeader("waveletId")); + final StringWriter error = new StringWriter(); + boolean somethingProcessed = false; + boolean somethingSkipped = false; + try { + JSONObject exp = new JSONObject(readToString(request.getReader())); + JSONArray rawDeltas = exp.getJSONObject("data").getJSONArray("rawDeltas"); + if (rawDeltas.length() != 0) { + List<ProtocolAppliedWaveletDelta> deltas = new LinkedList<ProtocolAppliedWaveletDelta>(); + for (int i = 0; i < rawDeltas.length(); i++) { + deltas.add(ProtocolAppliedWaveletDelta.parseFrom(Base64.decode(rawDeltas.getString(i)))); + } + WaveletName waveletName = WaveletName.of(waveId, waveletId); + LocalWaveletContainerImpl wavelet = (LocalWaveletContainerImpl) waveMap.getLocalWavelet(waveletName); + Set<ParticipantId> participants = new HashSet<ParticipantId>(); + if (wavelet != null) { + participants.addAll(wavelet.accessSnapshot().getParticipants()); + } + for (ProtocolAppliedWaveletDelta appliedDelta : deltas) { + ProtocolWaveletDelta delta = ProtocolWaveletDelta.parseFrom( + appliedDelta.getSignedOriginalDelta().getDelta()); + long currentVersion = 0; + if (wavelet != null) { + currentVersion = wavelet.getCurrentVersion().getVersion(); + } + if (currentVersion == delta.getHashedVersion().getVersion()) { + ProtocolWaveletDelta newDelta = convertDelta(delta, domain, wavelet, waveletName, + participants); + + waveletProvider.submitRequest(waveletName, newDelta, + new WaveletProvider.SubmitRequestListener() { + + @Override + public void onSuccess(int operationsApplied, HashedVersion hashedVersionAfterApplication, + long applicationTimestamp) { + } + + @Override + public void onFailure(String errorMessage) { + error.write(errorMessage); + } + }); + if (error.getBuffer().length() != 0) { + break; + } + if (wavelet == null) { + wavelet = (LocalWaveletContainerImpl) waveMap.getLocalWavelet(waveletName); + } + somethingProcessed = true; + } else { + somethingSkipped = true; + } + } + } + } catch (Exception ex) { + LOG.log(Level.SEVERE, "waveId " + waveId.toString() + ", waveletId " + waveletId.toString(), ex); + throw new IOException(ex); + } + response.setStatus(HttpServletResponse.SC_OK); + if (error.getBuffer().length() != 0) { + response.getOutputStream().write(("error : " + error.getBuffer()).getBytes()); + } else if (somethingProcessed && !somethingSkipped) { + response.getOutputStream().write(("imported").getBytes()); + } else if (somethingProcessed && somethingSkipped) { + response.getOutputStream().write(("appended").getBytes()); + } else { + response.getOutputStream().write(("skipped").getBytes()); + } + } + + private void initUserMap() { + userMap = new HashMap<String,String>(); + List<String> list = kuneProperties.getList(KuneProperties.SITE_WAVE_IMPORT_USERNAME_PAIRS); + // response.getOutputStream().write(list.toString().getBytes()); + for (String item : list) { + String[] splitted = item.split("\\|"); + if (splitted.length == 2) { + userMap.put(splitted[0], splitted[1]); + } + } + } + + /** + * Convert delta from GWave to Wiab + * + * @param delta from GWave + * @param domain target domain + * @param wavelet to append delta + * @param waveletName name of wavelet + * @param set participants of wavelet at this moment + * @return delta to import + * @throws InvalidParticipantAddress deserialize of participant error + */ + protected static ProtocolWaveletDelta convertDelta(ProtocolWaveletDelta delta, String domain, + LocalWaveletContainerImpl wavelet, WaveletName waveletName, + Set<ParticipantId> participants) throws InvalidParticipantAddress { + ProtocolWaveletDelta.Builder newDelta = ProtocolWaveletDelta.newBuilder(delta); + ParticipantId creator = null; + if (wavelet != null) { + creator = wavelet.getCreator(); + } + ParticipantId author = makeParticipantId(delta.getAuthor(), domain); + if (!participants.contains(author) && creator != null) { + // Assign the authorship of the delta from internal GWave users + // ([email protected], [email protected]) or others to the creator of wave. + if (!author.getAddress().endsWith("@" + GWAVE_PUBLIC_DOMAIN)) { + LOG.warning("Unknown participant " + author.getAddress() + + ", wave " + wavelet.getWaveletName().waveId.getId()); + } + author = creator; + } + newDelta.setAuthor(author.getAddress()); + for (int i = 0; i < delta.getOperationCount(); i++) { + ProtocolWaveletOperation op = delta.getOperation(i); + ProtocolWaveletOperation.Builder newOp = ProtocolWaveletOperation.newBuilder(op); + if (op.hasAddParticipant()) { + initAddParticipantOperation(newOp, op, domain, participants); + if (creator == null && newOp.hasAddParticipant()) { + creator = ParticipantId.of(newOp.getAddParticipant()); + } + } else if (op.hasRemoveParticipant()) { + initRemoveParticipantOperation(newOp, op, domain, participants); + } + // TODO (Andrew Kaplanov) import attachments + newDelta.setOperation(i, newOp); + } + if (wavelet == null) { + ProtocolHashedVersion ver = ProtocolHashedVersion.newBuilder(delta.getHashedVersion()). + setHistoryHash(ByteString.copyFrom(HASH_FACTORY.createVersionZero(waveletName).getHistoryHash())). + build(); + newDelta.setHashedVersion(ver); + } else { + ProtocolHashedVersion ver = ProtocolHashedVersion.newBuilder(delta.getHashedVersion()). + setHistoryHash(ByteString.copyFrom(wavelet.getCurrentVersion().getHistoryHash())). + build(); + newDelta.setHashedVersion(ver); + } + return newDelta.build(); + } + + /** + * Convert adding participant operation. + * Skip operation if participant already exists. + */ + private static void initAddParticipantOperation(ProtocolWaveletOperation.Builder newOperation, + ProtocolWaveletOperation operation, String domain, + Set<ParticipantId> participants) throws InvalidParticipantAddress { + ParticipantId participant = makeParticipantId(operation.getAddParticipant(), domain); + if (!participants.contains(participant)) { + newOperation.setAddParticipant(participant.getAddress()); + participants.add(participant); + } else { + newOperation.setNoOp(true); + } + } + + /** + * Convert removal participant operation. + * Skip operation if nothing to remove. + */ + private static void initRemoveParticipantOperation(ProtocolWaveletOperation.Builder newOperation, + ProtocolWaveletOperation operation, String domain, + Set<ParticipantId> participants) throws InvalidParticipantAddress { + ParticipantId participant = makeParticipantId(operation.getRemoveParticipant(), domain); + if (participants.contains(participant)) { + newOperation.setRemoveParticipant(participant.getAddress()); + participants.remove(participant); + } else { + newOperation.setNoOp(true); + } + } + + /** + * Make WIAB participant Id + * + * @param participant in GWave + * @param domain of WIAB server + */ + private static ParticipantId makeParticipantId(String participant, String domain) + throws InvalidParticipantAddress { + int index = participant.indexOf('@'); + if (index != -1) { + if (participant.substring(0, index).equals(GWAVE_PUBLIC_USER_NAME) + && participant.substring(index + 1).equals(GWAVE_PUBLIC_DOMAIN)) { + participant = WIAB_SHARED_USER_NAME + "@" + domain; + } else { + participant = map(participant.substring(0, index)) + "@" + domain; + } + } else { + participant = map(participant); + } + return ParticipantId.of(participant); + } + + private static String map(String participant) { + String newUser = userMap.get(participant); + return newUser == null? participant: newUser; + } + + private static String readToString(Reader reader) throws FileNotFoundException, IOException { + StringBuilder sb = new StringBuilder(); + char buf[] = new char[1000]; + for (;;) { + int ret = reader.read(buf, 0, buf.length); + if (ret == -1) { + break; + } + sb.append(buf, 0, ret); + } + return sb.toString(); + } +} Modified: trunk/src/main/resources/kune-production.properties =================================================================== --- trunk/src/main/resources/kune-production.properties 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/resources/kune-production.properties 2012-05-01 13:48:27 UTC (rev 1861) @@ -117,6 +117,9 @@ # The default language in with the /tutorials/ are shown if the user language is not translated kune.tutorial.defaultlang = en +# This is used to change a username to another similar (for instance during the import). Pairs separed by commas, a pair separed by a pipe. +kune.wave.import.usernamespairs = someuser|some_user + ### Workspace enabled themes # This names are also the name of the items in the theme menu and there are translated Modified: trunk/src/main/resources/kune.properties =================================================================== --- trunk/src/main/resources/kune.properties 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/resources/kune.properties 2012-05-01 13:48:27 UTC (rev 1861) @@ -55,7 +55,6 @@ kune.openfire.db.user = kune kune.openfire.db.password = db4kune - ### Licenses kune.default.license = by-sa-v3.0 @@ -118,6 +117,9 @@ # The default language in with the /tutorials/ are shown if the user language is not translated kune.tutorial.defaultlang = en +# This is used to change a username to another similar (for instance during the import). Pairs separed by commas, a pair separed by a pipe. +kune.wave.import.usernamespairs = someuser|some_user + ### Workspace enabled themes # This names are also the name of the items in the theme menu and there are translated Modified: trunk/src/main/resources/wave-server.properties =================================================================== --- trunk/src/main/resources/wave-server.properties 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/main/resources/wave-server.properties 2012-05-01 13:48:27 UTC (rev 1861) @@ -114,4 +114,4 @@ ssl_keystore_password = fafafa # Enable import of waves via /import URL. Default value: false -enable_import = false +enable_import = true Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumTest.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/KuneSeleniumTest.java 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumTest.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -94,29 +94,19 @@ // FIXME move content? groupSpace.showTutorial(3, 4, 5, 4, 4, 2, -5, 3, 6, 7, 6, 4, 4, 5, 5, 3, 3, 4, 6, 4, 3); - // blogs - groupSpace.blogTool.click(); - showTooltip(groupSpace.blogTool); - sleep(3000); - groupSpace.showTutorial(3, 4, 3, 3, 6, 5, 5, 3, 3); - // groupSpace.openFirtsContent(); - // sleep(2000); - // groupSpace.newContentBtn.click(); - // sleep(1000); - // groupSpace.goParentBtn.click(); - - // chats - groupSpace.chatTool.click(); - showTooltip(groupSpace.chatTool); - sleep(3000); - groupSpace.showTutorial(3, 6, 6, 4, 7, 3, 3); - // groupSpace.openFirtsContent(); - // sleep(2000); - // groupSpace.openRoomBtn.click(); - // sleep(2000); - // chat.chatIcon.click(); - - // lists + // // blogs + // groupSpace.blogTool.click(); + // showTooltip(groupSpace.blogTool); + // sleep(3000); + // groupSpace.showTutorial(3, 4, 3, 3, 6, 5, 5, 3, 3); + // + // // chats + // groupSpace.chatTool.click(); + // showTooltip(groupSpace.chatTool); + // sleep(3000); + // groupSpace.showTutorial(3, 6, 6, 4, 7, 3, 3); + + // lists groupSpace.listTool.click(); showTooltip(groupSpace.listTool); sleep(2000); @@ -152,28 +142,19 @@ sleep(2000); doScreenshot("calendar"); groupSpace.showTutorial(3, 5, 6, 7, 3, 5, 3, 3, 3); - // groupSpace.openFirtsContent(); - // sleep(2000); - // tasks - groupSpace.taskTool.click(); - showTooltip(groupSpace.taskTool); - sleep(2000); - groupSpace.showTutorial(3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 3); - // groupSpace.openFirtsContent(); + // // tasks + // groupSpace.taskTool.click(); + // showTooltip(groupSpace.taskTool); // sleep(2000); - // doScreenshot("tasks"); - // groupSpace.openFirtsContent(); + // groupSpace.showTutorial(3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 3); + // + // // wiki + // groupSpace.wikiTool.click(); + // showTooltip(groupSpace.wikiTool); // sleep(2000); + // groupSpace.showTutorial(3, 5, 3, 3, 3); - // wiki - groupSpace.wikiTool.click(); - showTooltip(groupSpace.wikiTool); - sleep(2000); - groupSpace.showTutorial(3, 5, 3, 3, 3); - // groupSpace.openFirtsContent(); - // sleep(3000); - // // barters // groupSpace.showTutorial(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3); } Modified: trunk/src/test/java/cc/kune/selenium/SeleniumConf.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/SeleniumConf.java 2012-04-26 01:26:03 UTC (rev 1860) +++ trunk/src/test/java/cc/kune/selenium/SeleniumConf.java 2012-05-01 13:48:27 UTC (rev 1861) @@ -30,8 +30,8 @@ } public enum Site { - demo("kune.beta.iepala.es"), eurosur("beta.eurosur.org"), kunecc("kune.cc"), localhost( - "localhost:8888", "&log_level=INFO&gwt.codesvr=127.0.0.1:9997"); + demo("kune.beta.iepala.es"), kunecc("kune.cc"), localhost("localhost:8888", + "&log_level=INFO&gwt.codesvr=127.0.0.1:9997"), socialglobal("social.gloobal.net"); private String domain; private String params; @@ -56,8 +56,8 @@ public static final Driver DRIVER = Driver.firefox; /* Configure this for use other lang, site, or driver */ - public static final Lang LANG = Lang.en; - public static final Site SITE = Site.demo; + public static final Lang LANG = Lang.es; + public static final Site SITE = Site.socialglobal; public static final int TIMEOUT = 25; SeleniumConf() {