source: greenstone3/trunk/src/java/org/greenstone/gsdl3/comms/Communicator.java@ 16688

Last change on this file since 16688 was 16688, checked in by davidb, 16 years ago

Changed 'Element process(Element)' in ModuleInterface to 'Node process(Node)'. After some deliberation is was decided this is a more useful (generic) layer of the DOM to pass information around in. Helps with the DocType problem when producing XSL Transformed pages, for example. When this was an Element, it would loose track of its DocType. Supporting method provided in XMLConverter 'Element nodeToElement(Node)' which checks a nodes docType and casts to Element if appropriate, or if a Document, typecasts to that and then extracts the top-level Element. With this fundamental change in ModuleInterface, around 20 files needed to be updated (Actions, Services, etc) that build on top of 'process()' to reflect this change, and use nodeToElement where necessary.

  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1/*
2 * Communicator.java
3 * Copyright (C) 2002 New Zealand Digital Library, http://www.nzdl.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19package org.greenstone.gsdl3.comms;
20
21import org.greenstone.gsdl3.core.ModuleInterface;
22import org.greenstone.gsdl3.util.*;
23
24//XML packages
25import org.w3c.dom.Element;
26import org.w3c.dom.Node;
27
28/** Communicator - base class for Modules that talk via some protocol to other modules
29 *
30 * can be used by a MessageRouter - in this case set localSiteName
31 * can be used by any other module - in this case it has no local site - dont set localsiteName. the setting of localSiteName affects the handling of teh to and from fields in the message.
32 * @author <a href="mailto:[email protected]">Katherine Don</a>
33 * @version $Revision: 16688 $
34 */
35abstract public class Communicator
36 implements ModuleInterface {
37
38 /** name of local site */
39 protected String local_site_name_ = null;
40
41 /** name of site to connect to */
42 protected String remote_site_name_=null;
43
44 /** converter for String to DOM and vice versa */
45 protected XMLConverter converter_= null;
46
47 public Communicator() {
48 converter_ = new XMLConverter();
49 }
50 public void cleanUp() {}
51
52 public void setLocalSiteName(String name) {
53 local_site_name_ = name;
54 }
55 /** this should be done as part of configure */
56 public void setRemoteSiteName(String name) {
57 remote_site_name_ = name;
58 }
59 /** configures the Communicator using the <site> element */
60 abstract public boolean configure(Element site_elem);
61
62 public String process(String xml_in) {
63 Node n = converter_.getDOM(xml_in);
64 Node result = process(n);
65 return converter_.getString(result);
66 }
67
68 abstract public Node process(Node xml_in_node);
69}
Note: See TracBrowser for help on using the repository browser.