/** * Remove this message filter from this queue. * Also remove the remote message filter. * @param messageFilter The message filter to remove. * @param bFreeFilter If true, free this filter. * @return True if successful. */ public boolean removeMessageFilter(MessageFilter messageFilter, boolean bFreeFilter) { boolean bSuccess = false; try { if (((BaseMessageFilter)messageFilter).getRemoteFilterID() == null) bSuccess = true; // No remote filter to remove else bSuccess = m_receiveQueue.removeRemoteMessageFilter((BaseMessageFilter)messageFilter, bFreeFilter); } catch (RemoteException ex) { ex.printStackTrace(); } if (!bSuccess) Util.getLogger().warning("Remote listener not removed"); // Never return super.removeMessageFilter(messageFilter, bFreeFilter); } /**
/** * Update this filter with this new information. * Override this to do something if there is a remote version of this filter. * @param messageFilter The message filter I am updating. * @param properties New filter information (ie, bookmark=345). */ public void setNewFilterProperties(BaseMessageFilter messageFilter, Object[][] mxProperties, Map<String, Object> propFilter) { super.setNewFilterProperties(messageFilter, mxProperties, propFilter); // Does nothing. try { if (messageFilter.isUpdateRemoteFilter()) // Almost always true if (messageFilter.getRemoteFilterID() != null) // If the remote filter exists m_receiveQueue.updateRemoteFilterProperties(messageFilter, mxProperties, propFilter); } catch (RemoteException ex) { ex.printStackTrace(); } } /**
/** * Remove this listener (called from remote). * @param messageFilter The message filter. */ public boolean removeRemoteMessageFilter(BaseMessageFilter messageFilter, boolean bFreeFilter) throws RemoteException { Utility.getLogger().info("EJB removeMessageFilter filter: " + messageFilter); BaseMessageManager messageManager = ((Application)this.getTask().getApplication()).getMessageManager(); BaseMessageReceiver messageReceiver = (BaseMessageReceiver)messageManager.getMessageQueue(messageFilter.getRemoteFilterQueueName(), messageFilter.getRemoteFilterQueueType()).getMessageReceiver(); boolean bRemoved = false; if (messageReceiver != null) bRemoved = messageReceiver.removeMessageFilter(messageFilter.getRemoteFilterID(), bFreeFilter); return bRemoved; } /**
/** * Update this filter with this new information. * @param messageFilter The message filter I am updating. * @param properties New filter information (ie, bookmark=345). */ public void updateRemoteFilterProperties(BaseMessageFilter messageFilter, Object[][] mxProperties, Map<String,Object> propFilter) throws RemoteException { Utility.getLogger().info("EJB updateRemoteFilter properties: " + mxProperties); // Give the filter the remote environment BaseMessageManager messageManager = ((Application)this.getTask().getApplication()).getMessageManager(); messageFilter = ((BaseMessageReceiver)messageManager.getMessageQueue(messageFilter.getQueueName(), messageFilter.getQueueType()).getMessageReceiver()).getMessageFilter(messageFilter.getRemoteFilterID()); // Must look it up if (messageFilter != null) // Always { if (mxProperties != null) messageFilter.setFilterTree(mxProperties); if (propFilter != null) { propFilter = messageFilter.handleUpdateFilterMap(propFilter); // Update this object's local filter. messageFilter.setFilterMap(propFilter); // Update any remote copy of this. } } } /**