From f20774433d5615160957517c4eb662c857032e66 Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Wed, 24 Oct 2012 07:07:18 +0000 Subject: [PATCH] Fixes exceptions, a memory leak due to incomplete code. --- lib/installer-exclude/libjitsi.jar | Bin 997849 -> 998359 bytes .../impl/gui/main/call/CallDialog.java | 123 +++++++++++++++++- .../impl/gui/main/call/CallPanel.java | 26 +++- .../gui/main/call/OneToOneCallPeerPanel.java | 8 -- .../conference/VideoConferenceCallPanel.java | 88 +++---------- .../main/contactlist/AddContactDialog.java | 10 +- .../impl/protocol/dict/ContactDictImpl.java | 24 +--- .../gibberish/ContactGibberishImpl.java | 24 +--- .../impl/protocol/icq/ContactIcqImpl.java | 34 +---- .../AbstractCallPeerJabberGTalkImpl.java | 25 ++-- .../impl/protocol/mock/MockContact.java | 23 +--- .../impl/protocol/msn/ContactMsnImpl.java | 32 +---- .../impl/protocol/rss/ContactRssImpl.java | 33 +---- .../sip/OperationSetIncomingDTMFSipImpl.java | 7 - .../sip/OperationSetPresenceSipImpl.java | 4 +- .../protocol/sip/ServerStoredContactList.java | 4 - .../impl/protocol/sip/SipStackProperties.java | 1 - .../impl/protocol/ssh/ContactSSHImpl.java | 26 +--- .../impl/protocol/yahoo/ContactYahooImpl.java | 32 +---- .../zeroconf/ContactZeroconfImpl.java | 24 +--- .../service/protocol/AbstractContact.java | 69 ++++++++++ .../AbstractOperationSetBasicAutoAnswer.java | 10 +- ...ractOperationSetBasicInstantMessaging.java | 36 +++-- 23 files changed, 281 insertions(+), 382 deletions(-) create mode 100644 src/net/java/sip/communicator/service/protocol/AbstractContact.java diff --git a/lib/installer-exclude/libjitsi.jar b/lib/installer-exclude/libjitsi.jar index 33b30be69177cf633d0f7bef86ba078a756a7390..e2c5cfba1ab3a9867eafce3577b6abc2e4adeade 100644 GIT binary patch delta 68415 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 DDTYYh delta 67887 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 z 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 diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallDialog.java b/src/net/java/sip/communicator/impl/gui/main/call/CallDialog.java index d3b3c116c..8cd4b405c 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallDialog.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallDialog.java @@ -169,9 +169,7 @@ public void dispose() * @throws RuntimeException if the method is not called on the AWT event * dispatching thread */ - public void ensureSize( - final Component component, - final int width, final int height) + public void ensureSize(Component component, int width, int height) { CallManager.assertIsEventDispatchingThread(); @@ -205,10 +203,92 @@ else if (!frame.equals(this)) } else { - Dimension frameSize = frame.getSize(); + /* + * If there is no callPanel, it is unlikely that this CallDialog + * will be asked to ensureSize. Anyway, support the scenario just in + * case. In light of the absence of a callPanel to guide this + * CallDialog about the preferred size, we do not have much of a + * choice but to trust the method arguments. + */ + if (callPanel != null) + { + /* + * If there is a callPanel, we are likely to get a much better + * estimation about the preferred size by asking the callPanel + * rather than by trusting the method arguments. For example, + * the visual Component displaying the video streaming from the + * local user/peer to the remote peer(s) will think that its + * preferred size is the one to base this Frame's size on but + * that may be misleading because the local video may not be + * displayed with its preferred size even if this Frame's size + * will accommodate it. + */ + /* + * Just asking the callPanel about its preferredSize would've + * been terrificly great. Unfortunately, that is presently + * futile because the callPanel may have a preferredSize while + * we are still required to display visual Components displaying + * video in their non-scaled size. The same goes for any + * Container which is an ancestor of the specified component. + */ + Container ancestor + = findClosestAncestorWithSetPreferredSize(component); + + if (ancestor == null) + ancestor = callPanel; + /* + * If the ancestor has a forced preferredSize, its LayoutManager + * may be able to give a good enough estimation. + */ + if (ancestor.isPreferredSizeSet()) + { + LayoutManager ancestorLayout = ancestor.getLayout(); + + if (ancestorLayout != null) + { + Dimension preferredLayoutSize + = ancestorLayout.preferredLayoutSize(ancestor); + + if (preferredLayoutSize != null) + { + component = ancestor; + width = preferredLayoutSize.width; + height = preferredLayoutSize.height; + } + } + } + else + { + /* + * If the ancestor doesn't have a preferredSize forced, then + * we may think that it will calculate an appropriate + * preferredSize itself. + */ + Dimension preferredSize = ancestor.getPreferredSize(); + + if (preferredSize != null) + { + component = ancestor; + width = preferredSize.width; + height = preferredSize.height; + } + } + } + + /* + * If the component (which may be an ancestor of the Component + * specified as an argument to the ensureSize method at this point) + * has not been given a size, we will make a mistake if we try to + * use it for the purposes of determining how much this Frame is to + * be enlarged. + */ Dimension componentSize = component.getSize(); - int newFrameWidth - = frameSize.width + width - componentSize.width; + + if ((componentSize.width < 1) || (componentSize.height < 1)) + return; + + Dimension frameSize = frame.getSize(); + int newFrameWidth = frameSize.width + width - componentSize.width; int newFrameHeight = frameSize.height + height - componentSize.height; @@ -268,6 +348,37 @@ else if (!changeHeight) } } + /** + * Finds a Container which is an ancestor of a specific + * Component, has a set preferredSize and is closest to + * the specified Component up the ancestor hierarchy. + * + * @param component the Component whose ancestor hierarchy is to be + * searched upwards + * @return a Container, if any, which is an ancestor of the + * specified component, has a set preferredSize and is + * closest to the specified component up the ancestor hierarchy + */ + private static Container findClosestAncestorWithSetPreferredSize( + Component component) + { + if ((component instanceof Container) && component.isPreferredSizeSet()) + return (Container) component; + else + { + Container parent; + + while ((parent = component.getParent()) != null) + { + if (parent.isPreferredSizeSet()) + return parent; + else + component = parent; + } + return null; + } + } + /** * Returns the frame of the call window. * diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java index f53f92a71..fd167c723 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java @@ -1948,16 +1948,28 @@ private void updateViewFromModelInEventDispatchThread() Dimension newPreferredSize = getPreferredSize(); if ((newPreferredSize != null) - && (newPreferredSize.width - > ((oldPreferredSize == null) - ? 0 - : oldPreferredSize.width)) && ((newPreferredSize.height > getHeight()) || (newPreferredSize.width > getWidth()))) { - ensureSize( - this, - newPreferredSize.width, newPreferredSize.height); + int oldPreferredHeight, oldPreferredWidth; + + if (oldPreferredSize == null) + { + oldPreferredHeight = 0; + oldPreferredWidth = 0; + } + else + { + oldPreferredHeight = oldPreferredSize.height; + oldPreferredWidth = oldPreferredSize.width; + } + if ((newPreferredSize.height != oldPreferredHeight) + || (newPreferredSize.width != oldPreferredWidth)) + { + ensureSize( + this, + newPreferredSize.width, newPreferredSize.height); + } } } diff --git a/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java index 97405d9b1..c31f86e89 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java @@ -240,14 +240,6 @@ public OneToOneCallPeerPanel( if (center != null) { - /* - * Don't let the center dictate the preferred size because it may - * display large videos. Otherwise, the large video will make this - * panel expand and then the panel's container will show scroll - * bars. - */ - center.setPreferredSize(new Dimension(1, 1)); - cnstrnts.fill = GridBagConstraints.BOTH; cnstrnts.gridx = 0; cnstrnts.gridy = 1; diff --git a/src/net/java/sip/communicator/impl/gui/main/call/conference/VideoConferenceCallPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/conference/VideoConferenceCallPanel.java index ea2ca0713..eeb374427 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/conference/VideoConferenceCallPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/conference/VideoConferenceCallPanel.java @@ -7,7 +7,6 @@ package net.java.sip.communicator.impl.gui.main.call.conference; import java.awt.*; -import java.awt.event.*; import java.util.*; import java.util.List; @@ -240,82 +239,16 @@ public void paintComponent(Graphics g) */ private VideoContainer createVideoContainer() { - final VideoContainer videoContainer = new VideoContainer(null, true); - - videoContainer.setPreferredSize(new Dimension(0, 0)); - + VideoContainer videoContainer = new VideoContainer(null, true); GridBagConstraints videoContainerGridBagConstraints = new GridBagConstraints(); videoContainerGridBagConstraints.fill = GridBagConstraints.BOTH; videoContainerGridBagConstraints.gridx = 0; videoContainerGridBagConstraints.gridy = 0; - videoContainerGridBagConstraints.weightx = 0; + videoContainerGridBagConstraints.weightx = 1; videoContainerGridBagConstraints.weighty = 1; add(videoContainer, videoContainerGridBagConstraints); - /* - * When the videoContainer is empty i.e. it has nothing to show, don't - * show it. - */ - videoContainer.addContainerListener( - new ContainerListener() - { - public void componentAdded(ContainerEvent e) - { - GridBagLayout layout = (GridBagLayout) getLayout(); - boolean videoContainerIsVisible - = (videoContainer.getComponentCount() > 0); - - for (Component component : getComponents()) - { - GridBagConstraints constraints - = layout.getConstraints(component); - - if (videoContainerIsVisible) - { - constraints.weightx - = (component == videoContainer) ? 1 : 0; - } - else - { - constraints.weightx - = (component == videoContainer) ? 0 : 1; - } - layout.setConstraints(component, constraints); - } - - /* - * When the first visual/video Component gets added, this - * videoContainer is still not accommodated by the frame - * size because it has just become visible. So try to resize - * the frame to accommodate this videoContainer. - */ - if (e.getID() == ContainerEvent.COMPONENT_ADDED) - { - Dimension preferredSize - = videoContainer.getLayout().preferredLayoutSize( - videoContainer); - - if ((preferredSize != null) - && (preferredSize.width > 0) - && (preferredSize.height > 0)) - { -// ensureSize( -// videoContainer, -// preferredSize.width, preferredSize.height); - } - } - } - - public void componentRemoved(ContainerEvent e) - { - /* - * It's all the same with respect to the purpose of this - * ContainerListener. - */ - componentAdded(e); - } - }); return videoContainer; } @@ -775,6 +708,17 @@ protected ConferenceCallPeerRenderer updateViewFromModel( return callPeerPanel; } + /** + * {@inheritDoc} + * + * Temporarily disables the use of ConferenceParticipantContainer + * because the functionality implemented in the model at the time of this + * writing does not fully support mapping of visual Components + * displaying video to telephony conference participants (e.g. in telephony + * conferences utilizing the Jitsi VideoBridge server-side technology). + * Instead displays the videos only, does not map videos to participants and + * does not display participants who do not have videos. + */ @Override protected void updateViewFromModelInEventDispatchThread() { @@ -868,7 +812,11 @@ protected void updateViewFromModelInEventDispatchThread() if (!UIVideoHandler2.isAncestor(videoContainer, video)) { this.videos.add(video); - videoContainer.add(video, VideoLayout.CENTER_REMOTE); + videoContainer.add( + video, + (video == localVideo) + ? VideoLayout.LOCAL + : VideoLayout.CENTER_REMOTE); } } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java index 35dd371aa..d6bd1284f 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java @@ -40,9 +40,6 @@ public class AddContactDialog WindowFocusListener, Skinnable { - private final Logger logger - = Logger.getLogger(AddContactDialog.class.getName()); - private final JLabel accountLabel = new JLabel( GuiActivator.getResources().getI18NString( "service.gui.SELECT_ACCOUNT") + ": "); @@ -503,7 +500,8 @@ else if (value instanceof ProtocolProviderService) /** * A custom renderer displaying groups in a combo box. */ - private static class GroupComboRenderer extends DefaultListCellRenderer + private static class GroupComboRenderer + extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent( JList list, @@ -547,11 +545,11 @@ public Component getListCellRendererComponent( JList list, } /** - * Brings this window to front. + * Brings this window to the front. */ public void bringToFront() { - super.toFront(); + toFront(); } /** diff --git a/src/net/java/sip/communicator/impl/protocol/dict/ContactDictImpl.java b/src/net/java/sip/communicator/impl/protocol/dict/ContactDictImpl.java index 4490ef3da..6e48b14d3 100644 --- a/src/net/java/sip/communicator/impl/protocol/dict/ContactDictImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/dict/ContactDictImpl.java @@ -17,7 +17,7 @@ * @author LITZELMANN Cedric */ public class ContactDictImpl - implements Contact + extends AbstractContact { private Logger logger = Logger.getLogger(ContactDictImpl.class); @@ -315,28 +315,6 @@ public void setResolved(boolean resolved) this.isResolved = resolved; } - /** - * Indicates whether some other object is "equal to" this one which in terms - * of contacts translates to having equal ids. The resolved status of the - * contacts deliberately ignored so that contacts would be declared equal - * even if it differs. - *

- * @param obj the reference object with which to compare. - * @return true if this contact has the same id as that of the - * obj argument. - */ - public boolean equals(Object obj) - { - if (obj == null || ! (obj instanceof ContactDictImpl)) { - return false; - } - - ContactDictImpl dictContact = (ContactDictImpl) obj; - - return this.getAddress().equals(dictContact.getAddress()); - } - - /** * Returns the persistent presence operation set that this contact belongs * to. diff --git a/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java b/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java index b17b1e8e0..8bae28c03 100644 --- a/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java @@ -19,7 +19,7 @@ * @author Emil Ivov */ public class ContactGibberishImpl - implements Contact + extends AbstractContact { /** @@ -265,28 +265,6 @@ public void setResolved(boolean resolved) this.isResolved = resolved; } - /** - * Indicates whether some other object is "equal to" this one which in terms - * of contacts translates to having equal ids. The resolved status of the - * contacts deliberately ignored so that contacts would be declared equal - * even if it differs. - *

- * @param obj the reference object with which to compare. - * @return true if this contact has the same id as that of the - * obj argument. - */ - public boolean equals(Object obj) - { - if (obj == null - || ! (obj instanceof ContactGibberishImpl)) - return false; - - ContactGibberishImpl gibberishContact = (ContactGibberishImpl) obj; - - return this.getAddress().equals(gibberishContact.getAddress()); - } - - /** * Returns the persistent presence operation set that this contact belongs * to. diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java index 99b49f7ca..ed66105e0 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java @@ -8,10 +8,11 @@ /** * The ICQ implementation of the service.protocol.Contact interface. + * * @author Emil Ivov */ public class ContactIcqImpl - implements Contact + extends AbstractContact { Buddy joustSimBuddy = null; private boolean isLocal = false; @@ -82,37 +83,6 @@ public byte[] getImage() return image; } - /** - * Returns a hashCode for this contact. The returned hashcode is actually - * that of the Contact's UIN - * @return the hashcode of this Contact - */ - public int hashCode() - { - return getUIN().hashCode(); - } - - /** - * Indicates whether some other object is "equal to" this one. - *

- * - * @param obj the reference object with which to compare. - * @return true if this object is the same as the obj - * argument; false otherwise. - */ - public boolean equals(Object obj) - { - if (obj == null - || !(obj instanceof ContactIcqImpl) - || !(((ContactIcqImpl)obj).getAddress().equals(getAddress()) - && ((ContactIcqImpl)obj).getProtocolProvider() - == getProtocolProvider())) - - return false; - - return true; - } - /** * Returns the joust sim buddy that this Contact is encapsulating. * @return Buddy diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/AbstractCallPeerJabberGTalkImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/AbstractCallPeerJabberGTalkImpl.java index 0d5b63e31..2d6b9eed5 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/AbstractCallPeerJabberGTalkImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/AbstractCallPeerJabberGTalkImpl.java @@ -89,11 +89,11 @@ public String getAddress() */ public Contact getContact() { - ProtocolProviderService pps = getCall().getProtocolProvider(); - OperationSetPresence opSetPresence - = pps.getOperationSet(OperationSetPresence.class); + OperationSetPresence presence + = getProtocolProvider().getOperationSet(OperationSetPresence.class); - return opSetPresence.findContactByID(getAddress()); + return + (presence == null) ? null : presence.findContactByID(getAddress()); } /** @@ -155,19 +155,18 @@ public boolean isInitiator() */ protected void retrieveDiscoverInfo(String calleeURI) { - DiscoverInfo tmpDiscoverInfo = null; try { - tmpDiscoverInfo = this.getCall().getProtocolProvider() - .getDiscoveryManager().discoverInfo(calleeURI); - if(tmpDiscoverInfo != null) - { - this.setDiscoverInfo(tmpDiscoverInfo); - } + DiscoverInfo discoverInfo + = getProtocolProvider().getDiscoveryManager().discoverInfo( + calleeURI); + + if(discoverInfo != null) + setDiscoverInfo(discoverInfo); } - catch (XMPPException ex) + catch (XMPPException xmppex) { - logger.warn("could not retrieve info for " + calleeURI, ex); + logger.warn("Could not retrieve info for " + calleeURI, xmppex); } } diff --git a/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java b/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java index 3041e4f5c..6fc1a0060 100644 --- a/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java +++ b/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java @@ -16,7 +16,7 @@ * @author Emil Ivov */ public class MockContact - implements Contact + extends AbstractContact { private String contactID = null; private MockProvider parentProvider = null; @@ -215,27 +215,6 @@ public void setResolved(boolean resolved) this.isResolved = resolved; } - /** - * Indicates whether some other object is "equal to" this one which in terms - * of contacts translates to having equal ids. The resolved status of the - * contacts deliberately ignored so that contacts would be declared equal - * even if it differs. - *

- * @param obj the reference object with which to compare. - * @return true if this contact has the same id as that of the - * obj argument. - */ - public boolean equals(Object obj) - { - if (obj == null - || ! (obj instanceof MockContact)) - return false; - - MockContact mockContact = (MockContact) obj; - - return this.getAddress().equals(mockContact.getAddress()); - } - /** * Return the current status message of this contact. * diff --git a/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java index d947a5f5d..5511448b2 100644 --- a/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java @@ -15,7 +15,7 @@ * @author Damian Minkov */ public class ContactMsnImpl - implements Contact + extends AbstractContact { private MsnContact contact = null; private byte[] image = null; @@ -101,36 +101,6 @@ void setImage(byte[] imgBytes) this.image = imgBytes; } - /** - * Returns a hashCode for this contact. The returned hashcode is actually - * that of the Contact's Address - * @return the hashcode of this Contact - */ - public int hashCode() - { - return getAddress().hashCode(); - } - - /** - * Indicates whether some other object is "equal to" this one. - *

- * - * @param obj the reference object with which to compare. - * @return true if this object is the same as the obj - * argument; false otherwise. - */ - public boolean equals(Object obj) - { - if (obj == null - || !(obj instanceof ContactMsnImpl) - || !(((ContactMsnImpl)obj).getAddress().equals(getAddress()) - && ((ContactMsnImpl)obj).getProtocolProvider() - == getProtocolProvider())) - return false; - else - return true; - } - /** * Returns a string representation of this contact, containing most of its * representative details. diff --git a/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java b/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java index 6470e4aa9..8ff4f4eac 100644 --- a/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java @@ -18,7 +18,7 @@ * @author Mihai Balan */ public class ContactRssImpl - implements Contact + extends AbstractContact { /** @@ -397,37 +397,6 @@ public void setResolved(boolean resolved) this.isResolved = resolved; } - /** - * Indicates whether some other object is "equal to" this one which in terms - * of contacts translates to having equal IDs. The resolved status of the - * contacts is deliberately ignored so that contacts would be declared equal - * even if one contact is resolved and the other is not. - *

- * @param obj the reference object with which to compare. - * @return true if this contact has the same ID as that of the - * obj argument. - */ - public boolean equals(Object obj) - { - if (obj == null - || ! (obj instanceof ContactRssImpl)) - return false; - - ContactRssImpl rssContact = (ContactRssImpl) obj; - - return this.getAddress().equals(rssContact.getAddress()); - } - - /** - * Overrides hashCode from Object to ensure that - * equal objects have same hashcode - * - * http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object) - */ - public int hashCode() { - return getAddress().hashCode(); - } - /** * Returns the persistent presence operation set that this contact belongs * to. diff --git a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetIncomingDTMFSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetIncomingDTMFSipImpl.java index 506ecbb78..4cb651b1b 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetIncomingDTMFSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetIncomingDTMFSipImpl.java @@ -18,11 +18,6 @@ public class OperationSetIncomingDTMFSipImpl implements OperationSetIncomingDTMF { - /** - * The parent provider. - */ - private ProtocolProviderServiceSipImpl provider; - /** * The send DTMF operation set holding dtmf implementations. */ @@ -36,8 +31,6 @@ public class OperationSetIncomingDTMFSipImpl OperationSetIncomingDTMFSipImpl(ProtocolProviderServiceSipImpl provider, OperationSetDTMFSipImpl opsetDTMFSip) { - this.provider = provider; - this.opsetDTMFSip = opsetDTMFSip; } diff --git a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java index d355e8d9f..0560067a2 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java @@ -215,7 +215,7 @@ public class OperationSetPresenceSipImpl /** * Watcher status from the watchers info list. */ - private enum WatcherStatus + private static enum WatcherStatus { PENDING("pending"), ACTIVE("active"), @@ -225,7 +225,7 @@ private enum WatcherStatus /** * The value. */ - private String value; + private final String value; /** * Creates <>tt WatcherStatus diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ServerStoredContactList.java b/src/net/java/sip/communicator/impl/protocol/sip/ServerStoredContactList.java index 6299934f7..4629fa1d8 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/ServerStoredContactList.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/ServerStoredContactList.java @@ -402,9 +402,7 @@ private boolean isContactExists(String contactUri) for (ContactSipImpl uniqueContact : getUniqueContacts(rootGroup)) { if (uniqueContact.getUri().equals(contactUri)) - { return true; - } } return false; } @@ -439,9 +437,7 @@ private boolean isContactPersistent(String contactUri) for (ContactSipImpl contact : getContacts(contactUri)) { if (contact.isPersistent()) - { return true; - } } return false; } diff --git a/src/net/java/sip/communicator/impl/protocol/sip/SipStackProperties.java b/src/net/java/sip/communicator/impl/protocol/sip/SipStackProperties.java index ec87c51a5..bca91a530 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/SipStackProperties.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/SipStackProperties.java @@ -13,7 +13,6 @@ import javax.net.ssl.*; import net.java.sip.communicator.impl.protocol.sip.net.*; -import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.Logger; import org.jitsi.util.*; diff --git a/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java b/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java index f4e3a110d..3df752240 100644 --- a/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java @@ -25,7 +25,8 @@ * @author Shobhit Jindal */ public class ContactSSHImpl - implements ContactSSH + extends AbstractContact + implements ContactSSH { private static final Logger logger = Logger.getLogger(ContactSSHImpl.class); @@ -679,28 +680,7 @@ public void setResolved(boolean resolved) { this.isResolved = resolved; } - - /** - * Indicates whether some other object is "equal to" this one which in terms - * of contacts translates to having equal ids. The resolved status of the - * contacts deliberately ignored so that contacts would be declared equal - * even if it differs. - *

- * @param obj the reference object with which to compare. - * @return true if this contact has the same id as that of the - * obj argument. - */ - public boolean equals(Object obj) - { - if (obj == null - || ! (obj instanceof ContactSSHImpl)) - return false; - - ContactSSHImpl sshContact = (ContactSSHImpl) obj; - - return this.getAddress().equals(sshContact.getAddress()); - } - + /** * Returns the persistent presence operation set that this contact belongs * to. diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java index 799c1ad78..2c430391a 100644 --- a/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java @@ -17,7 +17,7 @@ * @author Emil Ivov */ public class ContactYahooImpl - implements Contact + extends AbstractContact { private static final Logger logger = Logger.getLogger(ContactYahooImpl.class); @@ -211,36 +211,6 @@ protected void setImage(byte[] image) this.image = image; } - /** - * Returns a hashCode for this contact. The returned hashcode is actually - * that of the Contact's Address - * @return the hashcode of this Contact - */ - public int hashCode() - { - return getAddress().hashCode(); - } - - /** - * Indicates whether some other object is "equal to" this one. - *

- * - * @param obj the reference object with which to compare. - * @return true if this object is the same as the obj - * argument; false otherwise. - */ - public boolean equals(Object obj) - { - if (obj == null - || !(obj instanceof ContactYahooImpl) - || !( ((ContactYahooImpl)obj).getID().equals(getID()) ) - && ((ContactYahooImpl)obj).getProtocolProvider() - == getProtocolProvider()) - return false; - else - return true; - } - /** * Returns a string representation of this contact, containing most of its * representative details. diff --git a/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java b/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java index 423e60161..2390f463f 100644 --- a/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java @@ -24,7 +24,7 @@ * @author Jonathan Martin */ public class ContactZeroconfImpl - implements Contact + extends AbstractContact { private static final Logger logger = Logger.getLogger(ContactZeroconfImpl.class); @@ -430,28 +430,6 @@ public void setResolved(boolean resolved) this.isResolved = resolved; } - /** - * Indicates whether some other object is "equal to" this one which in terms - * of contacts translates to having equal ids. The resolved status of the - * contacts deliberately ignored so that contacts would be declared equal - * even if it differs. - *

- * @param obj the reference object with which to compare. - * @return true if this contact has the same id as that of the - * obj argument. - */ - public boolean equals(Object obj) - { - if (obj == null - || ! (obj instanceof ContactZeroconfImpl)) - return false; - - ContactZeroconfImpl zeroconfContact = (ContactZeroconfImpl) obj; - - return this.getAddress().equals(zeroconfContact.getAddress()); - } - - /** * Returns the persistent presence operation set that this contact belongs * to. diff --git a/src/net/java/sip/communicator/service/protocol/AbstractContact.java b/src/net/java/sip/communicator/service/protocol/AbstractContact.java new file mode 100644 index 000000000..b9164e6d2 --- /dev/null +++ b/src/net/java/sip/communicator/service/protocol/AbstractContact.java @@ -0,0 +1,69 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.service.protocol; + +/** + * An abstract base implementation of the {@link Contact} interface which is to + * aid implementers. + * + * @author Lyubomir Marinov + */ +public abstract class AbstractContact + implements Contact +{ + @Override + public boolean equals(Object obj) + { + if (obj == null) + return false; + else if (obj == this) + return true; + else if (!obj.getClass().equals(getClass())) + return false; + else + { + Contact contact = (Contact) obj; + ProtocolProviderService protocolProvider + = contact.getProtocolProvider(); + ProtocolProviderService thisProtocolProvider + = getProtocolProvider(); + + if ((protocolProvider == null) + ? (thisProtocolProvider == null) + : protocolProvider.equals(thisProtocolProvider)) + { + String address = contact.getAddress(); + String thisAddress = getAddress(); + + return + (address == null) + ? (thisAddress == null) + : address.equals(thisAddress); + } + else + return false; + } + } + + @Override + public int hashCode() + { + int hashCode = 0; + + ProtocolProviderService protocolProvider = getProtocolProvider(); + + if (protocolProvider != null) + hashCode += protocolProvider.hashCode(); + + String address = getAddress(); + + if (address != null) + hashCode += address.hashCode(); + + return hashCode; + } +} diff --git a/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicAutoAnswer.java b/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicAutoAnswer.java index 5e5ef125d..bd943b21d 100644 --- a/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicAutoAnswer.java +++ b/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicAutoAnswer.java @@ -239,10 +239,7 @@ public AutoAnswerThread(CallPeer peer, boolean isVideoCall) */ public void run() { - OperationSetBasicAutoAnswer opSetBasicAutoAnswer - = protocolProvider.getOperationSet( - OperationSetBasicAutoAnswer.class); - OperationSetBasicTelephony opSetBasicTelephony + OperationSetBasicTelephony opSetBasicTelephony = protocolProvider.getOperationSet( OperationSetBasicTelephony.class); OperationSetVideoTelephony opSetVideoTelephony @@ -251,14 +248,14 @@ public void run() try { // If this is a video call and that the user has configured to - // answer it with wideo, then create a video call. + // answer it with video, then create a video call. if(this.isVideoCall && answerWithVideo && opSetVideoTelephony != null) { opSetVideoTelephony.answerVideoCallPeer(peer); } - // Else sends only audio to the repote peer (the remote peer is + // Else sends only audio to the remote peer (the remote peer is // still able to send us its video stream). else if(opSetBasicTelephony != null) { @@ -277,6 +274,7 @@ else if(opSetBasicTelephony != null) * * @param evt the CallPeerChangeEvent instance containing the */ + @Override public void peerStateChanged(CallPeerChangeEvent evt) { CallPeerState newState = (CallPeerState) evt.getNewValue(); diff --git a/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicInstantMessaging.java b/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicInstantMessaging.java index 2a32ab481..6e49f1581 100644 --- a/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicInstantMessaging.java +++ b/src/net/java/sip/communicator/service/protocol/AbstractOperationSetBasicInstantMessaging.java @@ -18,7 +18,7 @@ * implementers to provide complete solutions while focusing on * implementation-specific details. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public abstract class AbstractOperationSetBasicInstantMessaging implements OperationSetBasicInstantMessaging @@ -189,16 +189,22 @@ else if (evt instanceof MessageDeliveryFailedEvent) { switch (eventType) { - case MessageDelivered: - listener.messageDelivered((MessageDeliveredEvent) evt); - break; - case MessageDeliveryFailed: - listener - .messageDeliveryFailed((MessageDeliveryFailedEvent)evt); - break; - case MessageReceived: - listener.messageReceived((MessageReceivedEvent) evt); - break; + case MessageDelivered: + listener.messageDelivered((MessageDeliveredEvent) evt); + break; + case MessageDeliveryFailed: + listener.messageDeliveryFailed( + (MessageDeliveryFailedEvent)evt); + break; + case MessageReceived: + listener.messageReceived((MessageReceivedEvent) evt); + break; + default: + /* + * We either have nothing to do or we do not know what to + * do. Anyway, we'll silence the compiler. + */ + break; } } } @@ -257,7 +263,7 @@ private EventObject messageTransform(EventObject evt, MessageEventType eventType protocolProvider = ((MessageReceivedEvent)evt).getSourceContact().getProtocolProvider(); break; default: - return evt; + return evt; } OperationSetInstantMessageTransformImpl opSetMessageTransform = @@ -295,6 +301,12 @@ private EventObject messageTransform(EventObject evt, MessageEventType eventType = transformLayer .messageReceived((MessageReceivedEvent)evt); break; + default: + /* + * We either have nothing to do or we do not know what + * to do. Anyway, we'll silence the compiler. + */ + break; } } }