newMessageFilter.init(messageFilter.getQueueName(), messageFilter.getQueueType(), null, null); if (newMessageFilter != null) messageFilter = newMessageFilter;
/** * RegisterProcessForMessage Method. */ public void registerProcessForMessage(BaseMessageFilter messageFilter, String strProcessClass, Map<String,Object> properties) { new TrxMessageListener(messageFilter, (Application)this.getTask().getApplication(), strProcessClass, properties); // This listener was added to the filter ((MessageInfoApplication)this.getTask().getApplication()).getThickMessageManager().addMessageFilter(messageFilter); // Note: No need to worry about cleanup... Freeing the message manager will free all these listeners. if (properties != null) if (properties.get(MessageInfoApplication.AUTOSTART) != null) ((MessageInfoApplication)this.getTask().getApplication()).getThickMessageManager().sendMessage(new MapMessage(new BaseMessageHeader(messageFilter.getQueueName(), messageFilter.getQueueType(), this, null), properties)); }
/** * 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. } } } /**
/** * Add this message filter to this receive queue. * Also adds a message filter to the remote queue. * @param The message filter to add. * @return The message filter passed in. */ public void addMessageFilter(MessageFilter messageFilter) { super.addMessageFilter(messageFilter); try { // If at all possible, pass the queue's current session, so the filter is in the proper environment if (((BaseMessageFilter)messageFilter).isCreateRemoteFilter()) // Almost always true { // Create the remote version of this filter. RemoteSession remoteSession = (RemoteSession)((BaseMessageFilter)messageFilter).getRemoteSession(); BaseMessageFilter remoteFilter = m_receiveQueue.addRemoteMessageFilter((BaseMessageFilter)messageFilter, remoteSession); ((BaseMessageFilter)messageFilter).setRemoteFilterInfo(remoteFilter.getQueueName(), remoteFilter.getQueueType(), remoteFilter.getFilterID(), remoteFilter.getRegistryID()); } } catch (RemoteException ex) { ex.printStackTrace(); } } /**
remoteFilter = ((BaseMessageReceiver)messageManager.getMessageQueue(remoteFilter.getQueueName(), remoteFilter.getQueueType()).getMessageReceiver()).getMessageFilter(remoteFilter.getFilterID()); // Must look it up messageFilter.setQueueName(remoteFilter.getQueueName()); // Info to pass to client.
MessageReceiver messageReceiver = messageManager.getMessageQueue(messageFilter.getQueueName(), messageFilter.getQueueType()).getMessageReceiver(); messageReceiver = messageManager.getMessageQueue(messageFilterNew.getQueueName(), messageFilterNew.getQueueType()).getMessageReceiver(); messageReceiver.addMessageFilter(messageFilterNew);