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/DocumentMaker.java

    r25895 r28966  
    4040import org.greenstone.gsdl3.util.GSXML;
    4141import org.greenstone.gsdl3.util.UserContext;
    42 
     42import org.greenstone.gsdl3.util.XMLConverter;
     43
     44import org.w3c.dom.Document;
    4345import org.w3c.dom.Element;
    4446import org.w3c.dom.NodeList;
     
    8486        for (int i = 0; i < services.length; i++)
    8587        {
    86             Element service = this.doc.createElement(GSXML.SERVICE_ELEM);
     88            Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM);
    8789            service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE);
    8890            service.setAttribute(GSXML.NAME_ATT, services[i]);
     
    9092        }
    9193
    92         _GSDM = new GSDocumentModel(this.site_home, this.doc, this.router);
     94        _GSDM = new GSDocumentModel(this.site_home, this.router);
    9395
    9496        return true;
    9597    }
    9698
    97     protected Element getServiceDescription(String service_id, String lang, String subset)
     99  protected Element getServiceDescription(Document doc, String service_id, String lang, String subset)
    98100    {
    99101        for (int i = 0; i < services.length; i++)
     
    101103            if (service_id.equals(services[i]))
    102104            {
    103                 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);
     105                Element service_elem = doc.createElement(GSXML.SERVICE_ELEM);
    104106                service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE);
    105107                service_elem.setAttribute(GSXML.NAME_ATT, services[i]);
     
    117119    protected Element processDocumentCreate(Element request)
    118120    {
    119         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_CREATE);
    120 
    121         if (request == null)
    122         {
    123             GSXML.addError(this.doc, result, DOCUMENT_CREATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     121      Document result_doc = XMLConverter.newDOM();
     122        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_CREATE);
     123
     124        if (request == null)
     125        {
     126            GSXML.addError(result, DOCUMENT_CREATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    124127            return result;
    125128        }
     
    148151    protected Element processDocumentDelete(Element request)
    149152    {
    150         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_DELETE);
    151 
    152         if (request == null)
    153         {
    154             GSXML.addError(this.doc, result, DOCUMENT_DELETE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     153      Document result_doc = XMLConverter.newDOM();
     154        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_DELETE);
     155
     156        if (request == null)
     157        {
     158            GSXML.addError(result, DOCUMENT_DELETE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    155159            return result;
    156160        }
     
    178182    protected Element processDocumentDuplicate(Element request)
    179183    {
    180         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_DUPLICATE);
    181 
    182         if (request == null)
    183         {
    184             GSXML.addError(this.doc, result, DOCUMENT_DUPLICATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     184      Document result_doc = XMLConverter.newDOM();
     185        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_DUPLICATE);
     186
     187        if (request == null)
     188        {
     189            GSXML.addError(result, DOCUMENT_DUPLICATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    185190            return result;
    186191        }
     
    211216    protected Element processDocumentGetInformation(Element request)
    212217    {
    213         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_GET_INFORMATION);
    214 
    215         if (request == null)
    216         {
    217             GSXML.addError(this.doc, result, DOCUMENT_GET_INFORMATION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     218      Document result_doc = XMLConverter.newDOM();
     219        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_GET_INFORMATION);
     220
     221        if (request == null)
     222        {
     223            GSXML.addError(result, DOCUMENT_GET_INFORMATION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    218224            return result;
    219225        }
     
    249255    protected Element processDocumentMove(Element request)
    250256    {
    251         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_MOVE);
    252 
    253         if (request == null)
    254         {
    255             GSXML.addError(this.doc, result, DOCUMENT_MOVE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     257      Document result_doc = XMLConverter.newDOM();
     258        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_MOVE);
     259
     260        if (request == null)
     261        {
     262            GSXML.addError(result, DOCUMENT_MOVE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    256263            return result;
    257264        }
     
    281288    protected Element processDocumentMerge(Element request)
    282289    {
    283         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_MERGE);
    284 
    285         if (request == null)
    286         {
    287             GSXML.addError(this.doc, result, DOCUMENT_MERGE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     290      Document result_doc = XMLConverter.newDOM();
     291        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_MERGE);
     292
     293        if (request == null)
     294        {
     295            GSXML.addError(result, DOCUMENT_MERGE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    288296            return result;
    289297        }
     
    312320    protected Element processDocumentSplit(Element request)
    313321    {
    314         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_SPLIT);
    315 
    316         if (request == null)
    317         {
    318             GSXML.addError(this.doc, result, DOCUMENT_SPLIT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     322      Document result_doc = XMLConverter.newDOM();
     323        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_SPLIT);
     324
     325        if (request == null)
     326        {
     327            GSXML.addError(result, DOCUMENT_SPLIT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    319328            return result;
    320329        }
     
    338347            catch (Exception ex)
    339348            {
    340                 GSXML.addError(this.doc, result, DOCUMENT_SPLIT + ": The split point was not an integer", GSXML.ERROR_TYPE_SYNTAX);
     349                GSXML.addError(result, DOCUMENT_SPLIT + ": The split point was not an integer", GSXML.ERROR_TYPE_SYNTAX);
    341350                return result;
    342351            }
     
    354363    protected Element processDocumentExecuteTransaction(Element request)
    355364    {
    356         Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_EXECUTE_TRANSACTION);
    357 
    358         if (request == null)
    359         {
    360             GSXML.addError(this.doc, result, DOCUMENT_EXECUTE_TRANSACTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
     365      Document result_doc = XMLConverter.newDOM();
     366        Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_EXECUTE_TRANSACTION);
     367
     368        if (request == null)
     369        {
     370            GSXML.addError(result, DOCUMENT_EXECUTE_TRANSACTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);
    361371            return result;
    362372        }
     
    367377        if (param_list == null)
    368378        {
    369             GSXML.addError(this.doc, result, DOCUMENT_EXECUTE_TRANSACTION + ": Request has no parameter list", GSXML.ERROR_TYPE_SYNTAX);
     379            GSXML.addError(result, DOCUMENT_EXECUTE_TRANSACTION + ": Request has no parameter list", GSXML.ERROR_TYPE_SYNTAX);
    370380            return result;
    371381        }
     
    419429
    420430                    //_GSDM.documentCreate(oid, collection, userContext); <--- Maybe go back to this
    421                     _GSDM.documentXMLSetSection(oid, collection, this.doc.createElement(GSXML.DOCXML_SECTION_ELEM), _GSDM.operationStringToInt(subOperation), userContext);
     431                    _GSDM.documentXMLSetSection(oid, collection, result_doc.createElement(GSXML.DOCXML_SECTION_ELEM), _GSDM.operationStringToInt(subOperation), userContext);
    422432                }
    423433                else if (operation.equals("delete"))
Note: See TracChangeset for help on using the changeset viewer.