/** * Free all the resources belonging to this applet. If all applet screens are closed, shut down the applet. */ public void free() { super.free(); } /**
/** * Initializes the BaseApplication. * Usually you pass the object that wants to use this sesssion. * For example, the applet or BaseApplication. */ public void init(BaseMessageQueue messageQueue) { super.init(messageQueue); } /**
/** * Stop this thread. */ public void stopThisThread() { super.stopThisThread(); // Set the flag to stop this thread. // Nothing else has to be done... The remote session sends an empty message which stops this thread. } /**
if (!messageReceiver.getFilterList(messageHeader).hasNext()) messageReceiver.addMessageFilter(messageFilter);
/** * 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(); } } /**
/** * 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); } /**
/** * Get the message filter list. * Create a new filter list the first time. * @return The filter list. */ public MessageReceiverFilterList getMessageFilterList() { if (m_filterList == null) { String strFilterType = null; App app = this.getMessageQueue().getMessageManager().getApplication(); if (app != null) strFilterType = app.getProperty(MessageConstants.MESSAGE_FILTER); if (MessageConstants.TREE_FILTER.equals(strFilterType)) m_filterList = new TreeMessageFilterList(this); } return super.getMessageFilterList(); } }
BaseMessageReceiver receiver = (BaseMessageReceiver)messageManager.getMessageQueue(strQueueName, MessageConstants.INTRANET_QUEUE).getMessageReceiver(); BaseScreen screenTarget = (BaseScreen)sourceSField.getParentScreen(); receiver.createDefaultFilter(screenTarget);
if (!messageReceiver.getFilterList(messageHeader).hasNext()) messageReceiver.addMessageFilter(messageFilter);
synchronized (this.getBaseApplet().getRemoteTask()) handler.addMessageFilter(filterForSession);
/** * 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; } /**
MessageReceiverFilterList messageFilters = messageReceiver.getMessageFilterList(); BaseMessageHeader messageHeaderFilter = new BaseMessageHeader(MessageConstants.RECORD_QUEUE_NAME, MessageConstants.INTRANET_QUEUE, null, null);
BaseMessageReceiver receiver = (BaseMessageReceiver)messageManager.getMessageQueue(strQueueName, MessageConstants.INTRANET_QUEUE).getMessageReceiver(); BaseScreen screenTarget = (BaseScreen)sourceSField.getParentScreen(); receiver.createDefaultFilter(screenTarget);
if (!messageReceiver.getFilterList(messageHeader).hasNext()) messageReceiver.addMessageFilter(messageFilter);
synchronized (this.getBaseApplet().getRemoteTask()) handler.addMessageFilter(filterForSession);
/** * Free the receiver (and the remote session). */ public void free() { this.stopThisThread(); // This needs to be called first (even though super.free() calls it). super.free(); // Free all the filters next (This is also tell the remotesessions to clean up). if (m_receiveQueue != null) { try { m_receiveQueue.freeRemoteSession(); } catch (RemoteException ex) { ex.printStackTrace(); } } m_receiveQueue = null; } /**
/** * Stop this thread. */ public void stopThisThread() { super.stopThisThread(); // Set the flag to stop this thread. // Now, send a message which will be received by this thread; since continueLooping is off, this thread will stop. ((LocalMessageQueue)this.getMessageQueue()).getMessageStack().sendMessage(new MapMessage(null, null)); } /**
/** * Constructor. * @param server The remote server. * @param baseMessageQueue My parent message queue. */ public void init(RemoteTask server, BaseMessageQueue baseMessageQueue) throws RemoteException { super.init(baseMessageQueue); m_receiveQueue = server.createRemoteReceiveQueue(baseMessageQueue.getQueueName(), baseMessageQueue.getQueueType()); } /**