Ignore:
Timestamp:
2014-04-10T14:39:33+12:00 (10 years ago)
Author:
kjdon
Message:

Lots of changes. Mainly to do with removing this.doc from everywhere. Document is not thread safe. Now we tend to create a new Document everytime we are starting a new page/message etc. in service this.desc_doc is available as teh document to create service info stuff. But it should only be used for this and not for other messages. newDOM is now static for XMLConverter. method param changes for some GSXML methods.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/DocumentBasket.java

    r25635 r28966  
    2727import java.util.Iterator;
    2828
     29import org.w3c.dom.Document;
    2930import org.w3c.dom.Element;
    3031import org.w3c.dom.NodeList;
     
    3536import org.greenstone.gsdl3.util.GSPath;
    3637import org.greenstone.gsdl3.util.UserContext;
     38import org.greenstone.gsdl3.util.XMLConverter;
    3739
    3840import java.net.InetAddress;
     
    115117
    116118        // set up short_service_info_ - for now just has name and type
    117         Element add_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     119        Element add_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    118120        add_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    119121        add_service.setAttribute(GSXML.NAME_ATT, ADD_ITEM_SERVICE);
     
    121123
    122124        // set up short_service_info_ - for now just has name and type
    123         Element disp_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     125        Element disp_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    124126        disp_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    125127        disp_service.setAttribute(GSXML.NAME_ATT, DISPLAY_ITEMS_SERVICE);
     
    127129
    128130        // set up short_service_info_ - for now just has name and type
    129         Element num_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     131        Element num_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    130132        num_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    131133        num_service.setAttribute(GSXML.NAME_ATT, ITEM_NUM_SERVICE);
     
    133135
    134136        // set up short_service_info_ - for now just has name and type
    135         Element delete_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     137        Element delete_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    136138        delete_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    137139        delete_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEMS_SERVICE);
     
    139141
    140142        // set up short_service_info_ - for now just has name and type
    141         Element deleteone_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     143        Element deleteone_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    142144        deleteone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    143145        deleteone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE);
     
    145147       
    146148        // set up short_service_info_ - for now just has name and type
    147         Element deleteall_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     149        Element deleteall_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    148150        deleteall_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    149151        deleteall_service.setAttribute(GSXML.NAME_ATT, CLEAR_ITEMS_SERVICE);
     
    151153
    152154        // set up short_service_info_ - for now just has name and type
    153         Element merge_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     155        Element merge_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    154156        merge_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    155157        merge_service.setAttribute(GSXML.NAME_ATT, MERGE_ITEM_SERVICE);
     
    160162
    161163    /** returns a specific service description */
    162     protected Element getServiceDescription(String service_id, String lang, String subset)
     164  protected Element getServiceDescription(Document doc, String service_id, String lang, String subset)
    163165    {
    164166        if (service_id.equals(ADD_ITEM_SERVICE))
    165167        {
    166             Element add_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     168            Element add_service = doc.createElement(GSXML.SERVICE_ELEM);
    167169            add_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    168170            add_service.setAttribute(GSXML.NAME_ATT, ADD_ITEM_SERVICE);
     
    172174        {
    173175
    174             Element disp_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     176            Element disp_service = doc.createElement(GSXML.SERVICE_ELEM);
    175177            disp_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    176178            disp_service.setAttribute(GSXML.NAME_ATT, DISPLAY_ITEMS_SERVICE);
     
    181183        {
    182184
    183             Element num_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     185            Element num_service = doc.createElement(GSXML.SERVICE_ELEM);
    184186            num_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    185187            num_service.setAttribute(GSXML.NAME_ATT, ITEM_NUM_SERVICE);
     
    190192        {
    191193
    192             Element del_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     194            Element del_service = doc.createElement(GSXML.SERVICE_ELEM);
    193195            del_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    194196            del_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEMS_SERVICE);
     
    199201        {
    200202
    201             Element clear_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     203            Element clear_service = doc.createElement(GSXML.SERVICE_ELEM);
    202204            clear_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    203205            clear_service.setAttribute(GSXML.NAME_ATT, CLEAR_ITEMS_SERVICE);
     
    208210        {
    209211
    210             Element delone_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     212            Element delone_service = doc.createElement(GSXML.SERVICE_ELEM);
    211213            delone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    212214            delone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE);
     
    215217        if (service_id.equals(MERGE_ITEM_SERVICE))
    216218        {
    217             Element merge_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     219            Element merge_service = doc.createElement(GSXML.SERVICE_ELEM);
    218220            merge_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??
    219221            merge_service.setAttribute(GSXML.NAME_ATT, MERGE_ITEM_SERVICE);
     
    229231        //System.err.println("DOCSMAP = " + docsMap);
    230232        // Create a new (empty) result message
    231         Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     233        Document result_doc = XMLConverter.newDOM();
     234        Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);
    232235
    233236        // Get the parameters of the request
     
    261264                Item newItem = generateItem(collection, item);
    262265                items.put(item, newItem);
    263                 result.appendChild(newItem.wrapIntoElement());
     266                result.appendChild(newItem.wrapIntoElement(result_doc));
    264267            }
    265268        }
     
    270273            items.put(item, newItem);
    271274            docsMap.put(collection, items);
    272             result.appendChild(newItem.wrapIntoElement());
     275            result.appendChild(newItem.wrapIntoElement(result_doc));
    273276        }
    274277
     
    423426    {
    424427        Hashtable<String, Hashtable<String, Item>> docsMap = updateDocMap(request);
    425        
    426         Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     428        Document result_doc = XMLConverter.newDOM();
     429        Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);
    427430       
    428431        // Get the parameters of the request
     
    451454
    452455        // Create a new (empty) result message
    453         Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     456        Document result_doc = XMLConverter.newDOM();
     457        Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);
    454458
    455459        // Get the parameters of the request
     
    509513
    510514        // Create a new (empty) result message
    511         Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     515        Document result_doc = XMLConverter.newDOM();
     516        Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);
    512517
    513518        // Get the parameters of the request
     
    560565
    561566        // Create a new (empty) result message
    562         Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     567        Document result_doc = XMLConverter.newDOM();
     568        Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);
    563569
    564570        int size = 0;
     
    574580            {
    575581                Item item = (Item) values.next();
    576                 result.appendChild(item.wrapIntoElement());
    577             }
    578         }
    579 
    580         Element selement = this.doc.createElement("size");
     582                result.appendChild(item.wrapIntoElement(result_doc));
     583            }
     584        }
     585
     586        Element selement = result_doc.createElement("size");
    581587        selement.setAttribute("value", size + "");
    582588        result.appendChild(selement);
     
    585591    }
    586592
    587     private Element getDocumentMetadata(String to, UserContext userContext, Iterator<String> ids)
     593  private Element getDocumentMetadata(String to, UserContext userContext, Iterator<String> ids)
    588594    {
    589595
    590596        // Build a request to obtain some document metadata
    591         Element dm_message = this.doc.createElement(GSXML.MESSAGE_ELEM);
    592         Element dm_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext);
     597      Document msg_doc = XMLConverter.newDOM();
     598        Element dm_message = msg_doc.createElement(GSXML.MESSAGE_ELEM);
     599        Element dm_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext);
    593600        dm_message.appendChild(dm_request);
    594601
     
    599606        meta_names.add("Date");
    600607
    601         Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     608        Element param_list = msg_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
    602609
    603610        Element param = null;
     
    606613        {
    607614            String name = i.next();
    608             param = this.doc.createElement(GSXML.PARAM_ELEM);
     615            param = msg_doc.createElement(GSXML.PARAM_ELEM);
    609616            param_list.appendChild(param);
    610617            param.setAttribute(GSXML.NAME_ATT, "metadata");
     
    615622
    616623        // create the doc node list for the metadata request
    617         Element dm_doc_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);
     624        Element dm_doc_list = msg_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);
    618625        dm_request.appendChild(dm_doc_list);
    619626
     
    621628        {
    622629            // Add the documentNode to the list
    623             Element dm_doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);
     630            Element dm_doc_node = msg_doc.createElement(GSXML.DOC_NODE_ELEM);
    624631            dm_doc_list.appendChild(dm_doc_node);
    625632            dm_doc_node.setAttribute(GSXML.NODE_ID_ATT, ids.next());
     
    634641
    635642        // Create a new (empty) result message
    636         Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     643        Document result_doc = XMLConverter.newDOM();
     644        Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);
    637645
    638646        Iterator<String> keys = docsMap.keySet().iterator();
     
    644652            Iterator itemItr = items.values().iterator();
    645653
    646             Element collectionNode = this.doc.createElement("documentList");
     654            Element collectionNode = result_doc.createElement("documentList");
    647655            collectionNode.setAttribute("name", collection);
    648656            result.appendChild(collectionNode);
     
    651659            {
    652660                Item item = (Item) itemItr.next();
    653                 Element itemElement = this.doc.createElement("item");
     661                Element itemElement = result_doc.createElement("item");
    654662
    655663                collectionNode.appendChild(itemElement);
     
    698706        }
    699707
    700         public Element wrapIntoElement()
     708        public Element wrapIntoElement(Document doc)
    701709        {
    702710            Element itemElement = doc.createElement("item");
Note: See TracChangeset for help on using the changeset viewer.