KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > repository > clientimpl > RemoteEventDispatcher


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.outerj.daisy.repository.clientimpl;
17
18 import org.outerj.daisy.jms.JmsClient;
19 import org.outerj.daisy.repository.RepositoryListener;
20 import org.outerj.daisy.repository.RepositoryEventType;
21 import org.outerj.daisy.repository.DocumentVariantEventType;
22 import org.outerj.daisy.repository.schema.RepositorySchemaListener;
23 import org.outerj.daisy.repository.schema.RepositorySchemaEventType;
24 import org.outerj.daisy.xmlutil.LocalSAXParserFactory;
25 import org.outerx.daisy.x10.*;
26 import org.apache.avalon.framework.logger.Logger;
27 import org.apache.xmlbeans.XmlOptions;
28
29 import javax.jms.MessageListener JavaDoc;
30 import javax.jms.Message JavaDoc;
31 import javax.jms.TextMessage JavaDoc;
32 import java.io.StringReader JavaDoc;
33 import java.util.*;
34
35 /**
36  * This class distributes daisy events received from JMS to events
37  * on the 'local' interfaces RepositoryListener and RepositorySchemaListener.
38  */

39 public class RemoteEventDispatcher {
40     private Logger logger;
41     private List repositoryListeners = new ArrayList();
42     private List repositorySchemaListeners = new ArrayList();
43     private static final Map messageHandlers = new HashMap();
44     static {
45         messageHandlers.put("DocumentCreated", new MessageHandler() {
46             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
47                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
48                 DocumentCreatedDocument.DocumentCreated documentCreated = DocumentCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getDocumentCreated();
49                 DocumentDocument.Document documentXml = documentCreated.getNewDocument().getDocument();
50                 dispatcher.engenderRepositoryEvent(RepositoryEventType.DOCUMENT_CREATED, documentXml.getId(), documentXml.getUpdateCount());
51             }
52         });
53         messageHandlers.put("DocumentUpdated", new MessageHandler() {
54             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
55                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
56                 DocumentUpdatedDocument.DocumentUpdated documentUpdated = DocumentUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getDocumentUpdated();
57                 DocumentDocument.Document documentXml = documentUpdated.getNewDocument().getDocument();
58                 dispatcher.engenderRepositoryEvent(RepositoryEventType.DOCUMENT_UPDATED, documentXml.getId(), documentXml.getUpdateCount());
59             }
60         });
61         messageHandlers.put("DocumentDeleted", new MessageHandler() {
62             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
63                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
64                 DocumentDeletedDocument.DocumentDeleted documentDeleted = DocumentDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getDocumentDeleted();
65                 DocumentDocument.Document documentXml = documentDeleted.getDeletedDocument().getDocument();
66                 dispatcher.engenderRepositoryEvent(RepositoryEventType.DOCUMENT_DELETED, documentXml.getId(), documentXml.getUpdateCount());
67             }
68         });
69         messageHandlers.put("UserCreated", new MessageHandler() {
70             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
71                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
72                 UserCreatedDocument.UserCreated userCreated = UserCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getUserCreated();
73                 UserDocument.User userXml = userCreated.getNewUser().getUser();
74                 dispatcher.engenderRepositoryEvent(RepositoryEventType.USER_CREATED, userXml.getId(), userXml.getUpdateCount());
75             }
76         });
77         messageHandlers.put("UserUpdated", new MessageHandler() {
78             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
79                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
80                 UserUpdatedDocument.UserUpdated userUpdated = UserUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getUserUpdated();
81                 UserDocument.User userXml = userUpdated.getNewUser().getUser();
82                 dispatcher.engenderRepositoryEvent(RepositoryEventType.USER_UPDATED, userXml.getId(), userXml.getUpdateCount());
83             }
84         });
85         messageHandlers.put("UserDeleted", new MessageHandler() {
86             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
87                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
88                 UserDeletedDocument.UserDeleted userDeleted = UserDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getUserDeleted();
89                 dispatcher.engenderRepositoryEvent(RepositoryEventType.USER_DELETED, userDeleted.getDeletedUser().getUser().getId(), -1);
90             }
91         });
92         messageHandlers.put("RoleCreated", new MessageHandler() {
93             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
94                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
95                 RoleCreatedDocument.RoleCreated roleCreated = RoleCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getRoleCreated();
96                 RoleDocument.Role roleXml = roleCreated.getNewRole().getRole();
97                 dispatcher.engenderRepositoryEvent(RepositoryEventType.ROLE_CREATED, roleXml.getId(), roleXml.getUpdateCount());
98             }
99         });
100         messageHandlers.put("RoleUpdated", new MessageHandler() {
101             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
102                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
103                 RoleUpdatedDocument.RoleUpdated roleUpdated = RoleUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getRoleUpdated();
104                 RoleDocument.Role roleXml = roleUpdated.getNewRole().getRole();
105                 dispatcher.engenderRepositoryEvent(RepositoryEventType.ROLE_UPDATED, roleXml.getId(), roleXml.getUpdateCount());
106             }
107         });
108         messageHandlers.put("RoleDeleted", new MessageHandler() {
109             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
110                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
111                 RoleDeletedDocument.RoleDeleted roleDeleted = RoleDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getRoleDeleted();
112                 dispatcher.engenderRepositoryEvent(RepositoryEventType.ROLE_DELETED, roleDeleted.getDeletedRole().getRole().getId(), -1);
113             }
114         });
115         messageHandlers.put("VersionStateChanged", new MessageHandler() {
116             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
117                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
118                 VersionStateChangedDocument.VersionStateChanged versionStateChanged = VersionStateChangedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getVersionStateChanged();
119                 dispatcher.engenderDocumentVariantEvent(DocumentVariantEventType.VERSION_STATE_CHANGED, versionStateChanged.getDocumentId(), versionStateChanged.getBranchId(), versionStateChanged.getLanguageId(), -1);
120             }
121         });
122         messageHandlers.put("CollectionCreated", new MessageHandler() {
123             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
124                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
125                 CollectionCreatedDocument.CollectionCreated collectionCreated = CollectionCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getCollectionCreated();
126                 CollectionDocument.Collection collectionXml = collectionCreated.getNewCollection().getCollection();
127                 dispatcher.engenderRepositoryEvent(RepositoryEventType.COLLECTION_CREATED, collectionXml.getId(), collectionXml.getUpdatecount());
128             }
129         });
130         messageHandlers.put("CollectionUpdated", new MessageHandler() {
131             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
132                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
133                 CollectionUpdatedDocument.CollectionUpdated collectionUpdated = CollectionUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getCollectionUpdated();
134                 CollectionDocument.Collection collectionXml = collectionUpdated.getNewCollection().getCollection();
135                 dispatcher.engenderRepositoryEvent(RepositoryEventType.COLLECTION_UPDATED, collectionXml.getId(), collectionXml.getUpdatecount());
136             }
137         });
138         messageHandlers.put("CollectionDeleted", new MessageHandler() {
139             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
140                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
141                 CollectionDeletedDocument.CollectionDeleted collectionDeleted = CollectionDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getCollectionDeleted();
142                 dispatcher.engenderRepositoryEvent(RepositoryEventType.COLLECTION_DELETED, collectionDeleted.getDeletedCollection().getCollection().getId(), -1);
143             }
144         });
145         messageHandlers.put("DocumentTypeCreated", new MessageHandler() {
146             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
147                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
148                 DocumentTypeCreatedDocument.DocumentTypeCreated documentTypeCreated = DocumentTypeCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getDocumentTypeCreated();
149                 DocumentTypeDocument.DocumentType documentTypeXml = documentTypeCreated.getNewDocumentType().getDocumentType();
150                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.DOCUMENT_TYPE_CREATED, documentTypeXml.getId(), documentTypeXml.getUpdateCount());
151             }
152         });
153         messageHandlers.put("DocumentTypeUpdated", new MessageHandler() {
154             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
155                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
156                 DocumentTypeUpdatedDocument.DocumentTypeUpdated documentTypeUpdated = DocumentTypeUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getDocumentTypeUpdated();
157                 DocumentTypeDocument.DocumentType documentTypeXml = documentTypeUpdated.getNewDocumentType().getDocumentType();
158                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.DOCUMENT_TYPE_UPDATED, documentTypeXml.getId(), documentTypeXml.getUpdateCount());
159             }
160         });
161         messageHandlers.put("DocumentTypeDeleted", new MessageHandler() {
162             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
163                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
164                 DocumentTypeDeletedDocument.DocumentTypeDeleted documentTypeDeleted = DocumentTypeDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getDocumentTypeDeleted();
165                 DocumentTypeDocument.DocumentType documentTypeXml = documentTypeDeleted.getDeletedDocumentType().getDocumentType();
166                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.DOCUMENT_TYPE_DELETED, documentTypeXml.getId(), documentTypeXml.getUpdateCount());
167             }
168         });
169         messageHandlers.put("PartTypeCreated", new MessageHandler() {
170             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
171                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
172                 PartTypeCreatedDocument.PartTypeCreated partTypeCreated = PartTypeCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getPartTypeCreated();
173                 PartTypeDocument.PartType partTypeXml = partTypeCreated.getNewPartType().getPartType();
174                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.PART_TYPE_CREATED, partTypeXml.getId(), partTypeXml.getUpdateCount());
175             }
176         });
177         messageHandlers.put("PartTypeUpdated", new MessageHandler() {
178             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
179                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
180                 PartTypeUpdatedDocument.PartTypeUpdated partTypeUpdated = PartTypeUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getPartTypeUpdated();
181                 PartTypeDocument.PartType partTypeXml = partTypeUpdated.getNewPartType().getPartType();
182                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.PART_TYPE_UPDATED, partTypeXml.getId(), partTypeXml.getUpdateCount());
183             }
184         });
185         messageHandlers.put("PartTypeDeleted", new MessageHandler() {
186             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
187                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
188                 PartTypeDeletedDocument.PartTypeDeleted partTypeDeleted = PartTypeDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getPartTypeDeleted();
189                 PartTypeDocument.PartType partTypeXml = partTypeDeleted.getDeletedPartType().getPartType();
190                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.PART_TYPE_DELETED, partTypeXml.getId(), partTypeXml.getUpdateCount());
191             }
192         });
193         messageHandlers.put("FieldTypeCreated", new MessageHandler() {
194             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
195                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
196                 FieldTypeCreatedDocument.FieldTypeCreated fieldTypeCreated = FieldTypeCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getFieldTypeCreated();
197                 FieldTypeDocument.FieldType fieldTypeXml = fieldTypeCreated.getNewFieldType().getFieldType();
198                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.FIELD_TYPE_CREATED, fieldTypeXml.getId(), fieldTypeXml.getUpdateCount());
199             }
200         });
201         messageHandlers.put("FieldTypeUpdated", new MessageHandler() {
202             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
203                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
204                 FieldTypeUpdatedDocument.FieldTypeUpdated fieldTypeUpdated = FieldTypeUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getFieldTypeUpdated();
205                 FieldTypeDocument.FieldType fieldTypeXml = fieldTypeUpdated.getNewFieldType().getFieldType();
206                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.FIELD_TYPE_UPDATED, fieldTypeXml.getId(), fieldTypeXml.getUpdateCount());
207             }
208         });
209         messageHandlers.put("FieldTypeDeleted", new MessageHandler() {
210             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
211                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
212                 FieldTypeDeletedDocument.FieldTypeDeleted fieldTypeDeleted = FieldTypeDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getFieldTypeDeleted();
213                 FieldTypeDocument.FieldType fieldTypeXml = fieldTypeDeleted.getDeletedFieldType().getFieldType();
214                 dispatcher.engenderRepositorySchemaEvent(RepositorySchemaEventType.FIELD_TYPE_DELETED, fieldTypeXml.getId(), fieldTypeXml.getUpdateCount());
215             }
216         });
217         messageHandlers.put("BranchCreated", new MessageHandler() {
218             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
219                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
220                 BranchCreatedDocument.BranchCreated branchCreated = BranchCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getBranchCreated();
221                 BranchDocument.Branch branchXml = branchCreated.getNewBranch().getBranch();
222                 dispatcher.engenderRepositoryEvent(RepositoryEventType.BRANCH_CREATED, branchXml.getId(), branchXml.getUpdateCount());
223             }
224         });
225         messageHandlers.put("BranchUpdated", new MessageHandler() {
226             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
227                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
228                 BranchUpdatedDocument.BranchUpdated branchUpdated = BranchUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getBranchUpdated();
229                 BranchDocument.Branch branchXml = branchUpdated.getNewBranch().getBranch();
230                 dispatcher.engenderRepositoryEvent(RepositoryEventType.BRANCH_UPDATED, branchXml.getId(), branchXml.getUpdateCount());
231             }
232         });
233         messageHandlers.put("BranchDeleted", new MessageHandler() {
234             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
235                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
236                 BranchDeletedDocument.BranchDeleted branchDeleted = BranchDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getBranchDeleted();
237                 BranchDocument.Branch branchXml = branchDeleted.getDeletedBranch().getBranch();
238                 dispatcher.engenderRepositoryEvent(RepositoryEventType.BRANCH_DELETED, branchXml.getId(), branchXml.getUpdateCount());
239             }
240         });
241         messageHandlers.put("LanguageCreated", new MessageHandler() {
242             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
243                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
244                 LanguageCreatedDocument.LanguageCreated languageCreated = LanguageCreatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getLanguageCreated();
245                 LanguageDocument.Language languageXml = languageCreated.getNewLanguage().getLanguage();
246                 dispatcher.engenderRepositoryEvent(RepositoryEventType.LANGUAGE_CREATED, languageXml.getId(), languageXml.getUpdateCount());
247             }
248         });
249         messageHandlers.put("LanguageUpdated", new MessageHandler() {
250             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
251                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
252                 LanguageUpdatedDocument.LanguageUpdated languageUpdated = LanguageUpdatedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getLanguageUpdated();
253                 LanguageDocument.Language languageXml = languageUpdated.getNewLanguage().getLanguage();
254                 dispatcher.engenderRepositoryEvent(RepositoryEventType.LANGUAGE_UPDATED, languageXml.getId(), languageXml.getUpdateCount());
255             }
256         });
257         messageHandlers.put("LangaugeDeleted", new MessageHandler() {
258             public void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc {
259                 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader());
260                 LanguageDeletedDocument.LanguageDeleted languageDeleted = LanguageDeletedDocument.Factory.parse(new StringReader JavaDoc(text), xmlOptions).getLanguageDeleted();
261                 LanguageDocument.Language languageXml = languageDeleted.getDeletedLanguage().getLanguage();
262                 dispatcher.engenderRepositoryEvent(RepositoryEventType.LANGUAGE_DELETED, languageXml.getId(), languageXml.getUpdateCount());
263             }
264         });
265     }
266
267     public RemoteEventDispatcher(JmsClient jmsClient, String JavaDoc jmsTopic, Logger logger) throws Exception JavaDoc {
268         this.logger = logger;
269         jmsClient.registerListener(jmsTopic, new MyMessageListener());
270     }
271
272     public Logger getLogger() {
273         return logger;
274     }
275
276     interface MessageHandler {
277         void handleMessage(String JavaDoc text, RemoteEventDispatcher dispatcher) throws Exception JavaDoc;
278     }
279
280     class MyMessageListener implements MessageListener JavaDoc {
281         public void onMessage(Message JavaDoc aMessage) {
282             try {
283                 TextMessage JavaDoc message = (TextMessage JavaDoc)aMessage;
284                 String JavaDoc type = message.getStringProperty("type");
285
286                 MessageHandler handler = (MessageHandler)messageHandlers.get(type);
287                 if (handler != null)
288                     handler.handleMessage(message.getText(), RemoteEventDispatcher.this);
289
290             } catch (Exception JavaDoc e) {
291                 getLogger().error("Error dispatching daisy JMS event.", e);
292             }
293         }
294     }
295
296     private void engenderRepositoryEvent(RepositoryEventType type, long id, long updateCount) {
297         Iterator it = repositoryListeners.iterator();
298         while (it.hasNext()) {
299             RepositoryListener listener = (RepositoryListener)it.next();
300             listener.repositoryEvent(type, id, updateCount);
301         }
302     }
303
304     private void engenderDocumentVariantEvent(DocumentVariantEventType type, long documentId, long branchId, long languageId, long updateCount) {
305         Iterator it = repositoryListeners.iterator();
306         while (it.hasNext()) {
307             RepositoryListener listener = (RepositoryListener)it.next();
308             listener.variantEvent(type, documentId, branchId, languageId, updateCount);
309         }
310     }
311
312     private void engenderRepositorySchemaEvent(RepositorySchemaEventType type, long id, long updateCount) {
313         Iterator it = repositorySchemaListeners.iterator();
314         while (it.hasNext()) {
315             RepositorySchemaListener listener = (RepositorySchemaListener)it.next();
316             listener.modelChange(type, id, updateCount);
317         }
318     }
319
320     public void addRepositoryListener(RepositoryListener repositoryListener) {
321         repositoryListeners.add(repositoryListener);
322     }
323
324     public void removeRepositoryListener(RepositoryListener repositoryListener) {
325         repositoryListeners.remove(repositoryListener);
326     }
327
328     public void addRepositorySchemaListener(RepositorySchemaListener repositorySchemaListener) {
329         repositorySchemaListeners.add(repositorySchemaListener);
330     }
331
332     public void removeRepositorySchemaListener(RepositorySchemaListener repositorySchemaListener) {
333         repositorySchemaListeners.remove(repositorySchemaListener);
334     }
335 }
336
Popular Tags