Git Product home page Git Product logo

emite's People

Contributors

ashward avatar danigb avatar xose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

emite's Issues

Track the IQ status

Reported by project member danigb, Sep 13, 2008

I think its usefull to know when a IQ is pending to response. For example:
i send a iq to add a roster item and show a spinner until done.

Implement XEP-0126: Invisibility

Danigb:
Add the ability to change Presence.Show with more states.
Candidates are: "Available", "Offline", "Away" and "Cloaked
Offline can raise some issues (re-login, cas authentication) and i think is
not a good idea. We need to decide this.

Cloacked can be tricky since there's no one recommended way of doing it
(even Openfire has its own non-standard mechanism)
Some links related:
http://xmpp.org/extensions/xep-0018.html : Invisible presence (rejected)
http://xmpp.org/extensions/xep-0186.html : Invisible command (Deferred draft)
http://xmpp.org/extensions/xep-0126.html : Invisibility (not sure if open
fire implements it)

Openfire links:
http://www.igniterealtime.org/community/blogs/ignite/2008/02/19/playing-
casper-in-openfire-350
http://www.igniterealtime.org/community/thread/25407;jsessionid=A1AF3A4008CCB9
81A301FCC1CDE59452?tstart=0

Use the new EventBus from GWT 2.3+

EmiteEventBus is based on HandlerManager, which has been deprecated for some time and meant to be used only for widget events.

The new general purpose EventBus system in GWT 2.3+ is cleaner and faster.


I have been working on this through the weekend, and I made some other changes to the API as I implemented it. Here's the branch: https://github.com/xose/emite/tree/events

Changes to the Event system:

  • Emite is now using the new, general purpose EventBus from com.google.web.bindery.event.*, instead of the old and deprecated HandlerManager.
  • There is now a single EventBus handling all the events for Emite.
  • The EventBus is now injected via GIN, with a Named("emite") annotation.
  • Event handling happens on the class itself, instead of using anonymous classes for handlers. This is cleaner, and allows for easy testing (events can be sent directly to the class, instead of through the EventBus)
  • Handler interfaces have been moved inside the Event classes for clarity.
  • Event classes that are only used from a single package have been moved to that package.
  • Some events have been renamed or split (example: MessageHandler -> MessageReceived/MessageSent)

Other API changes and updates:

  • Classes with static final Strings have been converted to enums.
  • ChatManager is now using generics. This saves a lot of type conversions and offers a cleaner API.
  • ChatManager is now just a base interface for PairChatManager and RoomChatManager. Code using ChatManager should probably change it to PairChatManager.
  • IQHandler has been renamed as IQCallback, to prevent confusion with the IQReceived Handler.
  • Room Subject support has been merged into Room.
  • Some internal classes with long useless hierarchies have been merged.
  • Many classes, mostly internal, have been renamed for consistency.
  • Spelling fixes, like isSucceed -> isSuccess.

Note: This is still work in progress! Changes in src/main are almost complete, and I'm already using them successfully, but not all the tests and examples have been converted yet. To be done:

  • Fix the remaining tests and examples. Build with -Dmaven.test.skip=true for now.
  • There are some naming conflicts that might cause trouble, like two "chat states" that have different purposes.
  • SessionComponentsRegistry can probably be removed and replaced with GIN.
  • Update Hablar to the new API.

It's not ready to pull into the main branch yet, but some input/comments would be welcome.

ChatChangedEvent- created unnecessarily

Reported by [email protected], Jan 21, 2011
What steps will reproduce the problem?
1.Create a MUC and make your presence as unavailable
Send muc chat message when your presence is unavailable

What is the expected output? What do you see instead?
Should not create problem. A pair chat created event gets fire.

What version of th

Better reconnect module

Currently this module exists and works, but

  1. it uses the old suco event system, migrate to new system is high priority
  2. probably some improvements can be done

Look at /src/com/calclab/emite/reconnect/client/ReconnectModule.java

Messages truncated to 4096 characters on Firefox

When sending a large message (29313 characters used for testing) to a client running in Firefox, the message will get truncated to 4096 characters with no warning on either the sending or receiving client. Data not truncated on other browsers. Cause could be Firefox has an XML node character limit of 4096 characters, as the whole message is present in the request.

ESC key closes the connection

Reported by project member danigb, Mar 17, 2010
What steps will reproduce the problem?

  1. Open HablarXX.html
  2. Login
  3. Press ESC key

Result:

The connection is closed (and there's now way to reconnect...)

NullPointerException + fix

Hi there

I have encountered a NullPointerException in com.calclab.emite.im.roster.XmppRosterImpl: "presence.getShow()" can return null.

The following fixes it:

index 2839d03..f867946 100644
--- a/src/main/java/com/calclab/emite/im/roster/XmppRosterImpl.java
+++ b/src/main/java/com/calclab/emite/im/roster/XmppRosterImpl.java
@@ -102,7 +102,8 @@ public final class XmppRosterImpl implements XmppRoster, SessionStatusChangedEve
}
}

  •                   if (!presence.getShow().equals(item.getShow())) {
    
  •                   if (presence.getShow() != null && !presence.getShow().equals(item.getShow())
    
  •                                   || presence.getShow() == null && item.getShow() != null) {
                            hasChanged = true;
                            item.setShow(presence.getShow());
                    }
    

BOSH connection randomly disconnects

Reported by project member ashward.surevine, Dec 29, 2010
This is a bit a of a random one - the bosh connection (using Openfire 3.6.4) will randomly disconnect with the error "Invalid SID". It appears that sometimes the long polling connection does not happen quickly enough and the session times out.

Use of SessionStates.ready.equals(state) problems

Reported by project member vruiz.jurado, Feb 20, 2011
The use of:
SessionStates.ready.equals(state) or SessionStates.isReady
gives wrongs values when you are at "Ready" state and you goes to the "RosterReady" state (for instance).

As a result instead of be logged, Hablar seems disconnected, your roster is inactive and Login Page shows "Wait..." instead of the Logout button.

How to test it: Active the LoginPage and try to login/logout several times. You will see that you can login only one time (when the browser load Hablar).

How to fix it: Use session.isReady() (in XmppSession) instead of SessionStates.ready.equals(state), or fix SessionState.isReady.

When session is logout and on session relogin PresenceManager doesn't fire available status

Reported by [email protected], Jan 25, 2011
What steps will reproduce the problem?

  1. Logout from the session
  2. Connection error or disconnected
  3. Relogin using this session

What is the expected output? What do you see instead?
On session relogin the Presence Manager should fire available. The PresenceManager doesn't fire available presence.
In source code the PresenceManager fire presence available if the session state is "rosterReady". But in XmppRosterLogin, the session rosterReady state is changed only once, based on boolean "rosterReady". May be, if you have missed to change the boolean "rosterReady" to false when the session state is loggginOut,error,disconnected.

What version of the product are you using? On what operating system?

possibly bug in XmppBoshConnection on connection failure

Reported by bernd.roessl, May 24, 2011

If emite is not able to connect to the backend it will do 8 retries with an increasing delay (see RetryControl) as long as the error count does not get reset. Each time emite handles a resonse in XmppBoshConnection it will reset the error count and so RetryControl will not do it's purpose.

What steps will reproduce the problem?

  1. you need a unresponsive jabber server behind responsive reverse proxy
  2. try to connect to jabber server
  3. reverse proxy will responde with status 502

What is the expected output? What do you see instead?

emite should try to connect 8 times with more delay on each retry. But instead it retries forever with a delay of 500ms.

If clearErrors(); will be done just on a successful response the onError handler will pass a proper error-count to RetryControl.

Sending IQs with a simple XMPP connection without being loggedin

Hello,

I would like to implement in-band registration for my client (http://xmpp.org/extensions/xep-0077.html). For this I need to be able to send IQs of type 'set' to the XMPP Server. But the emite library only allows to send stanzas to a server after having logged in. Since the user is trying to register and has no account to login with, he also cannot register.

In other xmpp libraries, such as smack, it is possible to send stanzas just by opening a connection with the xmpp server, without the need to be authenticated. Would this be possible to implement in the emite?

Thanks in advance for your reply!

Diana Cheng.

RoomChatManager get initializes twice even though the module says "Singleton"

Reported by [email protected], Jan 17, 2011
What steps will reproduce the problem?

  1. Injecting to a class constructor
  2. Injecting to a method

What is the expected output? What do you see instead?
Expected as a Singleton RoomChatManager. RoomChatManager get initiated twice which results to two times handling of invitation

What version of the product are you using? On what operating system?
emite0.6. Fedora13

System.out

replace system.out with an logging mechanism (p.e. log4j)

Branch current master as 0.8 and "revert" master back to 0.7

Attn: @EmiteGWT/collaborators

@xose did some brilliant work which I merged into master, but unfortunately the changes were too extensive, and we haven't had enough resource (I originally had hoped we would have) to get the tests and hablar (and other downstream projects) working against the new version.

It doesn't look like anyone is using the current master version (0.8 - with xose's changes) so I'm proposing to branch the current master (with xose's changes) as a 0.8 branch (just in case anyone is actually using it), revert the current master back to 0.7, merge in our updates from the surevine/emite branch (which is based off the 0.7 branch) and then over time cherry pick updates from xose's commits in more bitesize chunks, but keeping the tests and hablar updated alongside.

Would anyone have an issue with this?

NPE SubscriptionManagerImpl when presence received

Its null pointer exception in SubscriptionManagerImpl line 66

   @Override
public void onPresenceReceived(final PresenceReceivedEvent event) {
    final Presence presence = event.getPresence();
    if (presence.getType() == Presence.Type.subscribe) {
        final XMLPacket nick = presence.getExtension("nick",     XmppNamespaces.NICK);
        eventBus.fireEventFromSource(
                new SubscriptionRequestReceivedEvent(presence.getFrom(), nick.getText()), this);
    }
}

nick is null .....
i am testing with emite 0.8-SNAPSHOT , server openfire 3.8.1, gwt .2.5.0 my request:

and response:

When converting a 1-1 chat to a group chat, the 1-1 chat tab is closed and so the history of the previous chat conversation is lost.

Currently the conversation is not carried across to the group chat at the moment as you may not want the new participant to see the existing conversation.

A simple way around this would be to not close the 1-1 chat tab so that it is available for reference.

Alternatively the conversation could be copied across to the group chat in such a way as the new participant cannot see the existing messages

Maven install not works

Hi,

I was downloaded the project, and tried to intall with mvn like this:
mvn install:install-file -DgroupId=org.tigase -DartifactId=tigase-xmltools -Dversion=2.3.0 -Dpackaging=jar -Dfile=lib/tigase-xmltools-2.3.0.jar

The result:
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Emite XMPP Library
[INFO] task-segment: install:install-file
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file {execution: default-cli}]
[INFO] Installing /home/barnabas/Dropbox/Work/workspace/emite_gwt_jabber/lib/tigase-xmltools-2.3.0.jar to /home/barnabas/.m2/repository/org/tigase/tigase-xmltools/2.3.0/tigase-xmltools-2.3.0.jar
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error installing artifact 'org.tigase:tigase-xmltools:jar': Error installing artifact: File /home/barnabas/Dropbox/Work/workspace/emite_gwt_jabber/lib/tigase-xmltools-2.3.0.jar does not exist

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Sun May 08 10:18:12 CEST 2011
[INFO] Final Memory: 8M/56M
[INFO] ------------------------------------------------------------------------

Emite0.6.1 jar not working

The jar that is there in download tab is not working correctly. When I use it, it gives me error saying not able to find *.gwt.xml files.
What I noticed was in this gwt.xml was being stored in a separate file structure and not along with the class files. When I manually moved all the gwt.xml to their respective class folders, the jar is working and I am not getting that error anymore.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.