LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/framework/source/jobs - joburl.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 72 1.4 %
Date: 2013-07-09 Functions: 2 8 25.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <jobs/joburl.hxx>
      21             : #include <threadhelp/readguard.hxx>
      22             : #include <threadhelp/writeguard.hxx>
      23             : #include <general.h>
      24             : 
      25             : #include <rtl/ustrbuf.hxx>
      26             : #include <vcl/svapp.hxx>
      27             : 
      28             : namespace framework{
      29             : 
      30             : /**
      31             :     @short      special ctor
      32             :     @descr      It initialize this new instance with a (hopyfully) valid job URL.
      33             :                 This URL will be parsed. After that we set our members right,
      34             :                 so other interface methods of this class can be used to get
      35             :                 all items of this URL. Of course it will be possible to know,
      36             :                 if this URL was valid too.
      37             : 
      38             :     @param      sURL
      39             :                     the job URL for parsing
      40             : */
      41           0 : JobURL::JobURL( /*IN*/ const OUString& sURL )
      42           0 :     : ThreadHelpBase( &Application::GetSolarMutex() )
      43             : {
      44             :     #ifdef ENABLE_COMPONENT_SELF_CHECK
      45             :     JobURL::impldbg_checkIt();
      46             :     #endif
      47             : 
      48           0 :     m_eRequest = E_UNKNOWN;
      49             : 
      50             :     // syntax: vnd.sun.star.job:{[event=<name>],[alias=<name>],[service=<name>]}
      51             : 
      52             :     // check for "vnd.sun.star.job:"
      53           0 :     if (sURL.matchIgnoreAsciiCaseAsciiL(JOBURL_PROTOCOL_STR,JOBURL_PROTOCOL_LEN,0))
      54             :     {
      55           0 :         sal_Int32 t = JOBURL_PROTOCOL_LEN;
      56           0 :         do
      57             :         {
      58             :             // separate all token of "{[event=<name>],[alias=<name>],[service=<name>]}"
      59           0 :             OUString sToken = sURL.getToken(0, JOBURL_PART_SEPARATOR, t);
      60           0 :             OUString sPartValue    ;
      61           0 :             OUString sPartArguments;
      62             : 
      63             :             // check for "event="
      64           0 :             if (
      65           0 :                 (JobURL::implst_split(sToken,JOBURL_EVENT_STR,JOBURL_EVENT_LEN,sPartValue,sPartArguments)) &&
      66           0 :                 (!sPartValue.isEmpty())
      67             :                )
      68             :             {
      69             :                 // set the part value
      70           0 :                 m_sEvent     = sPartValue    ;
      71           0 :                 m_sEventArgs = sPartArguments;
      72           0 :                 m_eRequest  |= E_EVENT       ;
      73             :             }
      74             :             else
      75             :             // check for "alias="
      76           0 :             if (
      77           0 :                 (JobURL::implst_split(sToken,JOBURL_ALIAS_STR,JOBURL_ALIAS_LEN,sPartValue,sPartArguments)) &&
      78           0 :                 (!sPartValue.isEmpty())
      79             :                )
      80             :             {
      81             :                 // set the part value
      82           0 :                 m_sAlias     = sPartValue    ;
      83           0 :                 m_sAliasArgs = sPartArguments;
      84           0 :                 m_eRequest  |= E_ALIAS       ;
      85             :             }
      86             :             else
      87             :             // check for "service="
      88           0 :             if (
      89           0 :                 (JobURL::implst_split(sToken,JOBURL_SERVICE_STR,JOBURL_SERVICE_LEN,sPartValue,sPartArguments)) &&
      90           0 :                 (!sPartValue.isEmpty())
      91             :                )
      92             :             {
      93             :                 // set the part value
      94           0 :                 m_sService     = sPartValue    ;
      95           0 :                 m_sServiceArgs = sPartArguments;
      96           0 :                 m_eRequest    |= E_SERVICE     ;
      97           0 :             }
      98             :         }
      99           0 :         while(t!=-1);
     100             :     }
     101           0 : }
     102             : 
     103             : //________________________________
     104             : /**
     105             :     @short      knows, if this job URL object hold a valid URL inside
     106             : 
     107             :     @return     <TRUE/> if it represent a valid job URL.
     108             : */
     109           0 : sal_Bool JobURL::isValid() const
     110             : {
     111             :     /* SAFE { */
     112           0 :     ReadGuard aReadLock(m_aLock);
     113           0 :     return (m_eRequest!=E_UNKNOWN);
     114             : }
     115             : 
     116             : //________________________________
     117             : /**
     118             :     @short      get the event item of this job URL
     119             :     @descr      Because the three possible parts of such URL (event, alias, service)
     120             :                 can't be combined, this method can(!) return a valid value - but it's
     121             :                 not a must. Thats why the return value must be used too, to detect a missing
     122             :                 event value.
     123             : 
     124             :     @param      sEvent
     125             :                     returns the possible existing event value
     126             :                     e.g. "vnd.sun.star.job:event=myEvent" returns "myEvent"
     127             : 
     128             :     @return     <TRUE/> if an event part of the job URL exist and the out parameter
     129             :                 sEvent was filled.
     130             : 
     131             :     @attention  The out parameter will be reseted everytime. Don't use it if method returns <FALSE/>!
     132             : */
     133           0 : sal_Bool JobURL::getEvent( /*OUT*/ OUString& sEvent ) const
     134             : {
     135             :     /* SAFE { */
     136           0 :     ReadGuard aReadLock(m_aLock);
     137             : 
     138           0 :              sEvent = OUString();
     139           0 :     sal_Bool bSet   = ((m_eRequest & E_EVENT) == E_EVENT);
     140           0 :     if (bSet)
     141           0 :         sEvent = m_sEvent;
     142             : 
     143           0 :     aReadLock.unlock();
     144             :     /* } SAFE */
     145             : 
     146           0 :     return bSet;
     147             : }
     148             : 
     149             : //________________________________
     150             : /**
     151             :     @short      get the alias item of this job URL
     152             :     @descr      Because the three possible parts of such URL (event, alias, service)
     153             :                 can't be combined, this method can(!) return a valid value - but it's
     154             :                 not a must. Thats why the return value must be used too, to detect a missing
     155             :                 alias value.
     156             : 
     157             :     @param      sAlias
     158             :                     returns the possible existing alias value
     159             :                     e.g. "vnd.sun.star.job:alias=myAlias" returns "myAlias"
     160             : 
     161             :     @return     <TRUE/> if an alias part of the job URL exist and the out parameter
     162             :                 sAlias was filled.
     163             : 
     164             :     @attention  The out parameter will be reseted everytime. Don't use it if method returns <FALSE/>!
     165             : */
     166           0 : sal_Bool JobURL::getAlias( /*OUT*/ OUString& sAlias ) const
     167             : {
     168             :     /* SAFE { */
     169           0 :     ReadGuard aReadLock(m_aLock);
     170             : 
     171           0 :              sAlias = OUString();
     172           0 :     sal_Bool bSet   = ((m_eRequest & E_ALIAS) == E_ALIAS);
     173           0 :     if (bSet)
     174           0 :         sAlias = m_sAlias;
     175             : 
     176           0 :     aReadLock.unlock();
     177             :     /* } SAFE */
     178             : 
     179           0 :     return bSet;
     180             : }
     181             : 
     182             : //________________________________
     183             : /**
     184             :     @short      get the service item of this job URL
     185             :     @descr      Because the three possible parts of such URL (event, service, service)
     186             :                 can't be combined, this method can(!) return a valid value - but it's
     187             :                 not a must. Thats why the return value must be used too, to detect a missing
     188             :                 service value.
     189             : 
     190             :     @param      sAlias
     191             :                     returns the possible existing service value
     192             :                     e.g. "vnd.sun.star.job:service=com.sun.star.Service" returns "com.sun.star.Service"
     193             : 
     194             :     @return     <TRUE/> if an service part of the job URL exist and the out parameter
     195             :                 sService was filled.
     196             : 
     197             :     @attention  The out parameter will be reseted everytime. Don't use it if method returns <FALSE/>!
     198             : */
     199           0 : sal_Bool JobURL::getService( /*OUT*/ OUString& sService ) const
     200             : {
     201             :     /* SAFE { */
     202           0 :     ReadGuard aReadLock(m_aLock);
     203             : 
     204           0 :              sService = OUString();
     205           0 :     sal_Bool bSet     = ((m_eRequest & E_SERVICE) == E_SERVICE);
     206           0 :     if (bSet)
     207           0 :         sService = m_sService;
     208             : 
     209           0 :     aReadLock.unlock();
     210             :     /* } SAFE */
     211             : 
     212           0 :     return bSet;
     213             : }
     214             : 
     215             : //________________________________
     216             : /**
     217             :     @short      searches for a special identifier in the given string and split it
     218             :     @descr      If the given identifier could be found at the beginning of the given string,
     219             :                 this method split it into different parts and return it.
     220             :                 Following schema is used: <partidentifier>=<partvalue>[?<partarguments>]
     221             : 
     222             :     @param      sPart
     223             :                     the string, which should be analyzed
     224             : 
     225             :     @param      pPartIdentifier
     226             :                     the part identifier value, which must be found at the beginning of the
     227             :                     parameter <var>sPart</var>
     228             : 
     229             :     @param      nPartLength
     230             :                     the length of the ascii value <var>pPartIdentifier</var>
     231             : 
     232             :     @param      rPartValue
     233             :                     returns the part value if <var>sPart</var> was splitted successfully
     234             : 
     235             :     @param      rPartArguments
     236             :                     returns the part arguments if <var>sPart</var> was splitted successfully
     237             : 
     238             :     @return     <TRUE/> if the identifier could be found and the string was splitted.
     239             :                 <FALSE/> otherwise.
     240             : */
     241           0 : sal_Bool JobURL::implst_split( /*IN*/  const OUString& sPart           ,
     242             :                                /*IN*/  const sal_Char*        pPartIdentifier ,
     243             :                                /*IN*/        sal_Int32        nPartLength     ,
     244             :                                /*OUT*/       OUString& rPartValue      ,
     245             :                                /*OUT*/       OUString& rPartArguments  )
     246             : {
     247             :     // first search for the given identifier
     248           0 :     sal_Bool bPartFound = (sPart.matchIgnoreAsciiCaseAsciiL(pPartIdentifier,nPartLength,0));
     249             : 
     250             :     // If it exist - we can split the part and return sal_True.
     251             :     // Otherwhise we do nothing and return sal_False.
     252           0 :     if (bPartFound)
     253             :     {
     254             :         // But may the part has optional arguments - separated by a "?".
     255             :         // Do so - we set the return value with the whole part string.
     256             :         // Arguments will be set to an empty string as default.
     257             :         // If we detect the right sign - we split the arguments and overwrite the default.
     258           0 :         OUString sValueAndArguments = sPart.copy(nPartLength);
     259           0 :         OUString sValue             = sValueAndArguments     ;
     260           0 :         OUString sArguments;
     261             : 
     262           0 :         sal_Int32 nArgStart = sValueAndArguments.indexOf('?',0);
     263           0 :         if (nArgStart!=-1)
     264             :         {
     265           0 :             sValue     = sValueAndArguments.copy(0,nArgStart);
     266           0 :             ++nArgStart; // ignore '?'!
     267           0 :             sArguments = sValueAndArguments.copy(nArgStart);
     268             :         }
     269             : 
     270           0 :         rPartValue     = sValue    ;
     271           0 :         rPartArguments = sArguments;
     272             :     }
     273             : 
     274           0 :     return bPartFound;
     275             : }
     276             : 
     277             : //________________________________
     278             : /**
     279             :     @short      special debug method
     280             :     @descr      It's the entry point method to start a self component check for this class.
     281             :                 It's used for internal purposes only and never a part of a legal product.
     282             :                 Use it for testing and debug only!
     283             : */
     284             : #ifdef ENABLE_COMPONENT_SELF_CHECK
     285             : 
     286             : #define LOGFILE_JOBURL  "joburl.log"
     287             : 
     288             : void JobURL::impldbg_checkIt()
     289             : {
     290             :     // check simple URL's
     291             :     JobURL::impldbg_checkURL("vnd.sun.star.job:event=onMyEvent"    , E_EVENT  , "onMyEvent", ""       , ""           , NULL, NULL, NULL);
     292             :     JobURL::impldbg_checkURL("vnd.sun.star.job:alias=myAlias"      , E_ALIAS  , ""         , "myAlias", ""           , NULL, NULL, NULL);
     293             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=css.Service", E_SERVICE, ""         , ""       , "css.Service", NULL, NULL, NULL);
     294             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=;"          , E_UNKNOWN, ""         , ""       , ""           , NULL, NULL, NULL);
     295             : 
     296             :     // check combinations
     297             :     // Note: No additional spaces or tabs are allowed after a separator occurred.
     298             :     // Tab and spaces before a separator will be used as value!
     299             :     JobURL::impldbg_checkURL("vnd.sun.star.job:event=onMyEvent;alias=myAlias;service=css.Service"  , E_EVENT | E_ALIAS | E_SERVICE , "onMyEvent", "myAlias", "css.Service" , NULL, NULL, NULL);
     300             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=css.Service;alias=myAlias"                  , E_ALIAS | E_SERVICE           , ""         , "myAlias", "css.Service" , NULL, NULL, NULL);
     301             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=css.Service ;alias=myAlias"                 , E_ALIAS | E_SERVICE           , ""         , "myAlias", "css.Service ", NULL, NULL, NULL);
     302             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=css.Service; alias=myAlias"                 , E_UNKNOWN                     , ""         , ""       , ""            , NULL, NULL, NULL);
     303             :     JobURL::impldbg_checkURL("vnd.sun.star.job : event=onMyEvent"                                  , E_UNKNOWN                     , ""         , ""       , ""            , NULL, NULL, NULL);
     304             :     JobURL::impldbg_checkURL("vnd.sun.star.job:event=onMyEvent;event=onMyEvent;service=css.Service", E_UNKNOWN                     , ""         , ""       , ""            , NULL, NULL, NULL);
     305             : 
     306             :     // check upper/lower case
     307             :     // fix parts of the URL are case insensitive (e.g. "vnd.SUN.star.job:eVEnt=")
     308             :     // values are case sensitive                 (e.g. "myAlias"                )
     309             :     JobURL::impldbg_checkURL("vnd.SUN.star.job:eVEnt=onMyEvent;aliAs=myAlias;serVice=css.Service", E_EVENT | E_ALIAS | E_SERVICE , "onMyEvent", "myAlias", "css.Service" , NULL, NULL, NULL);
     310             :     JobURL::impldbg_checkURL("vnd.SUN.star.job:eVEnt=onMyEVENT;aliAs=myALIAS;serVice=css.SERVICE", E_EVENT | E_ALIAS | E_SERVICE , "onMyEVENT", "myALIAS", "css.SERVICE" , NULL, NULL, NULL);
     311             : 
     312             :     // check stupid URLs
     313             :     JobURL::impldbg_checkURL("vnd.sun.star.jobs:service=css.Service"    , E_UNKNOWN, "", "", "", NULL, NULL, NULL);
     314             :     JobURL::impldbg_checkURL("vnd.sun.star.job service=css.Service"     , E_UNKNOWN, "", "", "", NULL, NULL, NULL);
     315             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service;css.Service"     , E_UNKNOWN, "", "", "", NULL, NULL, NULL);
     316             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service;"                , E_UNKNOWN, "", "", "", NULL, NULL, NULL);
     317             :     JobURL::impldbg_checkURL("vnd.sun.star.job:;alias;service;event="   , E_UNKNOWN, "", "", "", NULL, NULL, NULL);
     318             :     JobURL::impldbg_checkURL("vnd.sun.star.job:alias=a;service=s;event=", E_UNKNOWN, "", "", "", NULL, NULL, NULL);
     319             : 
     320             :     // check argument handling
     321             :     JobURL::impldbg_checkURL("vnd.sun.star.job:event=onMyEvent?eventArg1,eventArg2=3,eventArg4,"            , E_EVENT          , "onMyEvent", ""       , ""             , "eventArg1,eventArg2=3,eventArg4,", NULL                 , NULL          );
     322             :     JobURL::impldbg_checkURL("vnd.sun.star.job:alias=myAlias?aliasArg1,aliasarg2"                           , E_EVENT          , ""         , "myAlias", ""             , NULL                              , "aliasArg1,aliasarg2", NULL          );
     323             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=css.myService?serviceArg1"                           , E_EVENT          , ""         , ""       , "css.myService", NULL                              , NULL                 , "serviceArg1" );
     324             :     JobURL::impldbg_checkURL("vnd.sun.star.job:service=css.myService?serviceArg1;alias=myAlias?aliasArg=564", E_EVENT | E_ALIAS, ""         , "myAlias", "css.myService", NULL                              , "aliasArg=564"       , "serviceArg1" );
     325             : }
     326             : 
     327             : //________________________________
     328             : /**
     329             :     @short      helper debug method
     330             :     @descr      It uses the given parameter to create a new instance of a JobURL.
     331             :                 They results will be compared with the exepected ones.
     332             :                 The a log will be written, which contains some detailed information
     333             :                 for this sub test.
     334             : 
     335             :     @param      pURL
     336             :                     the job URL, which should be checked
     337             : 
     338             :     @param      eExpectedPart
     339             :                     the expected result
     340             : 
     341             :     @param      pExpectedEvent
     342             :                     the expected event value
     343             : 
     344             :     @param      pExpectedAlias
     345             :                     the expected alias value
     346             : 
     347             :     @param      pExpectedService
     348             :                     the expected service value
     349             : 
     350             :     @param      pExpectedEventArgs
     351             :                     the expected event arguments
     352             : 
     353             :     @param      pExpectedAliasArgs
     354             :                     the expected alias arguments
     355             : 
     356             :     @param      pExpectedServiceArgs
     357             :                     the expected service arguments
     358             : */
     359             : void JobURL::impldbg_checkURL( /*IN*/ const sal_Char*  pURL                 ,
     360             :                                /*IN*/       sal_uInt32 eExpectedPart        ,
     361             :                                /*IN*/ const sal_Char*  pExpectedEvent       ,
     362             :                                /*IN*/ const sal_Char*  pExpectedAlias       ,
     363             :                                /*IN*/ const sal_Char*  pExpectedService     ,
     364             :                                /*IN*/ const sal_Char*  pExpectedEventArgs   ,
     365             :                                /*IN*/ const sal_Char*  pExpectedAliasArgs   ,
     366             :                                /*IN*/ const sal_Char*  pExpectedServiceArgs )
     367             : {
     368             :     OUString sEvent      ;
     369             :     OUString sAlias      ;
     370             :     OUString sService    ;
     371             :     OUString sEventArgs  ;
     372             :     OUString sAliasArgs  ;
     373             :     OUString sServiceArgs;
     374             :     OUString sURL    (OUString::createFromAscii(pURL));
     375             :     sal_Bool        bOK     = sal_True;
     376             : 
     377             :     JobURL aURL(sURL);
     378             : 
     379             :     // check if URL is invalid
     380             :     if (eExpectedPart==E_UNKNOWN)
     381             :         bOK = !aURL.isValid();
     382             : 
     383             :     // check if URL has the expected event part
     384             :     if (
     385             :         (bOK                                 ) &&
     386             :         ((eExpectedPart & E_EVENT) == E_EVENT)
     387             :        )
     388             :     {
     389             :         bOK = (
     390             :                 (aURL.isValid()                          ) &&
     391             :                 (aURL.getEvent(sEvent)                   ) &&
     392             :                 (!sEvent.isEmpty()                       ) &&
     393             :                 (sEvent.compareToAscii(pExpectedEvent)==0)
     394             :               );
     395             : 
     396             :         if (bOK && pExpectedEventArgs!=NULL)
     397             :         {
     398             :             bOK = (
     399             :                     (aURL.getEventArgs(sEventArgs)                   ) &&
     400             :                     (sEventArgs.compareToAscii(pExpectedEventArgs)==0)
     401             :                   );
     402             :         };
     403             :     }
     404             : 
     405             :     // check if URL has no event part
     406             :     if (
     407             :         (bOK                                 ) &&
     408             :         ((eExpectedPart & E_EVENT) != E_EVENT)
     409             :        )
     410             :     {
     411             :         bOK = (
     412             :                 (!aURL.getEvent(sEvent)        ) &&
     413             :                 (sEvent.isEmpty()              ) &&
     414             :                 (!aURL.getEventArgs(sEventArgs)) &&
     415             :                 (sEventArgs.isEmpty()          )
     416             :               );
     417             :     }
     418             : 
     419             :     // check if URL has the expected alias part
     420             :     if (
     421             :         (bOK                                 ) &&
     422             :         ((eExpectedPart & E_ALIAS) == E_ALIAS)
     423             :        )
     424             :     {
     425             :         bOK = (
     426             :                 (aURL.isValid()                          ) &&
     427             :                 (aURL.getAlias(sAlias)                   ) &&
     428             :                 (!sAlias.isEmpty()                       ) &&
     429             :                 (sAlias.compareToAscii(pExpectedAlias)==0)
     430             :               );
     431             : 
     432             :         if (bOK && pExpectedAliasArgs!=NULL)
     433             :         {
     434             :             bOK = (
     435             :                     (aURL.getAliasArgs(sAliasArgs)                   ) &&
     436             :                     (sAliasArgs.compareToAscii(pExpectedAliasArgs)==0)
     437             :                   );
     438             :         };
     439             :     }
     440             : 
     441             :     // check if URL has the no alias part
     442             :     if (
     443             :         (bOK                                 ) &&
     444             :         ((eExpectedPart & E_ALIAS) != E_ALIAS)
     445             :        )
     446             :     {
     447             :         bOK = (
     448             :                 (!aURL.getAlias(sAlias)        ) &&
     449             :                 (sAlias.isEmpty()              ) &&
     450             :                 (!aURL.getAliasArgs(sAliasArgs)) &&
     451             :                 (sAliasArgs.isEmpty()          )
     452             :               );
     453             :     }
     454             : 
     455             :     // check if URL has the expected service part
     456             :     if (
     457             :         (bOK                                     ) &&
     458             :         ((eExpectedPart & E_SERVICE) == E_SERVICE)
     459             :        )
     460             :     {
     461             :         bOK = (
     462             :                 (aURL.isValid()                              ) &&
     463             :                 (aURL.getService(sService)                   ) &&
     464             :                 (!sService.isEmpty()                         ) &&
     465             :                 (sService.compareToAscii(pExpectedService)==0)
     466             :               );
     467             : 
     468             :         if (bOK && pExpectedServiceArgs!=NULL)
     469             :         {
     470             :             bOK = (
     471             :                     (aURL.getServiceArgs(sServiceArgs)                   ) &&
     472             :                     (sServiceArgs.compareToAscii(pExpectedServiceArgs)==0)
     473             :                   );
     474             :         };
     475             :     }
     476             : 
     477             :     // check if URL has the no service part
     478             :     if (
     479             :         (bOK                                     ) &&
     480             :         ((eExpectedPart & E_SERVICE) != E_SERVICE)
     481             :        )
     482             :     {
     483             :         bOK = (
     484             :                 (!aURL.getService(sService)        ) &&
     485             :                 (sService.isEmpty()                ) &&
     486             :                 (!aURL.getServiceArgs(sServiceArgs)) &&
     487             :                 (sServiceArgs.isEmpty()            )
     488             :               );
     489             :     }
     490             : 
     491             :     OUStringBuffer sMsg(256);
     492             : 
     493             :     sMsg.appendAscii("\"" );
     494             :     sMsg.append     (sURL );
     495             :     sMsg.appendAscii("\" ");
     496             : 
     497             :     if (bOK)
     498             :     {
     499             :         sMsg.appendAscii("... OK\n");
     500             :     }
     501             :     else
     502             :     {
     503             :         sMsg.appendAscii("... failed\n");
     504             :         sMsg.appendAscii("expected was: ");
     505             :         if (eExpectedPart==E_UNKNOWN)
     506             :             sMsg.appendAscii("E_UNKNOWN");
     507             :         if ((eExpectedPart & E_EVENT) == E_EVENT)
     508             :         {
     509             :             sMsg.appendAscii("| E_EVENT e=\"");
     510             :             sMsg.appendAscii(pExpectedEvent  );
     511             :             sMsg.appendAscii("\""            );
     512             :         }
     513             :         if ((eExpectedPart & E_ALIAS) == E_ALIAS)
     514             :         {
     515             :             sMsg.appendAscii("| E_ALIAS a=\"");
     516             :             sMsg.appendAscii(pExpectedAlias  );
     517             :             sMsg.appendAscii("\""            );
     518             :         }
     519             :         if ((eExpectedPart & E_SERVICE) == E_SERVICE)
     520             :         {
     521             :             sMsg.appendAscii("| E_SERVICE s=\"");
     522             :             sMsg.appendAscii(pExpectedService  );
     523             :             sMsg.appendAscii("\""              );
     524             :         }
     525             :         sMsg.appendAscii("\tbut it was  : "     );
     526             :         sMsg.append     (aURL.impldbg_toString());
     527             :         sMsg.appendAscii("\n"                   );
     528             :     }
     529             : 
     530             :     WRITE_LOGFILE(LOGFILE_JOBURL, U2B(sMsg.makeStringAndClear()))
     531             : }
     532             : 
     533             : //________________________________
     534             : /**
     535             :     @short      helper debug method
     536             :     @descr      It returns a representation of the internal object state
     537             :                 as string notation.
     538             : 
     539             :     @returns    The formated string representation.
     540             : */
     541             : OUString JobURL::impldbg_toString() const
     542             : {
     543             :     /* SAFE { */
     544             :     ReadGuard aReadLock(m_aLock);
     545             : 
     546             :     OUStringBuffer sBuffer(256);
     547             : 
     548             :     if (m_eRequest==E_UNKNOWN)
     549             :         sBuffer.appendAscii("E_UNKNOWN");
     550             :     if ((m_eRequest & E_EVENT) == E_EVENT)
     551             :         sBuffer.appendAscii("| E_EVENT");
     552             :     if ((m_eRequest & E_ALIAS) == E_ALIAS)
     553             :         sBuffer.appendAscii("| E_ALIAS");
     554             :     if ((m_eRequest & E_SERVICE) == E_SERVICE)
     555             :         sBuffer.appendAscii("| E_SERVICE");
     556             :     sBuffer.appendAscii("{ e=\""   );
     557             :     sBuffer.append     (m_sEvent   );
     558             :     sBuffer.appendAscii("\" - a=\"");
     559             :     sBuffer.append     (m_sAlias   );
     560             :     sBuffer.appendAscii("\" - s=\"");
     561             :     sBuffer.append     (m_sService );
     562             :     sBuffer.appendAscii("\" }"     );
     563             : 
     564             :     aReadLock.unlock();
     565             :     /* } SAFE */
     566             : 
     567             :     return sBuffer.makeStringAndClear();
     568             : }
     569             : 
     570             : //________________________________
     571             : 
     572             : sal_Bool JobURL::getServiceArgs( /*OUT*/ OUString& sServiceArgs ) const
     573             : {
     574             :     /* SAFE { */
     575             :     ReadGuard aReadLock(m_aLock);
     576             : 
     577             :              sServiceArgs = OUString();
     578             :     sal_Bool bSet         = ((m_eRequest & E_SERVICE) == E_SERVICE);
     579             :     if (bSet)
     580             :         sServiceArgs = m_sServiceArgs;
     581             : 
     582             :     aReadLock.unlock();
     583             :     /* } SAFE */
     584             : 
     585             :     return bSet;
     586             : }
     587             : 
     588             : //________________________________
     589             : 
     590             : sal_Bool JobURL::getEventArgs( /*OUT*/ OUString& sEventArgs ) const
     591             : {
     592             :     /* SAFE { */
     593             :     ReadGuard aReadLock(m_aLock);
     594             : 
     595             :              sEventArgs = OUString();
     596             :     sal_Bool bSet       = ((m_eRequest & E_EVENT) == E_EVENT);
     597             :     if (bSet)
     598             :         sEventArgs = m_sEventArgs;
     599             : 
     600             :     aReadLock.unlock();
     601             :     /* } SAFE */
     602             : 
     603             :     return bSet;
     604             : }
     605             : 
     606             : //________________________________
     607             : 
     608             : sal_Bool JobURL::getAliasArgs( /*OUT*/ OUString& sAliasArgs ) const
     609             : {
     610             :     /* SAFE { */
     611             :     ReadGuard aReadLock(m_aLock);
     612             : 
     613             :              sAliasArgs = OUString();
     614             :     sal_Bool bSet       = ((m_eRequest & E_ALIAS) == E_ALIAS);
     615             :     if (bSet)
     616             :         sAliasArgs = m_sAliasArgs;
     617             : 
     618             :     aReadLock.unlock();
     619             :     /* } SAFE */
     620             : 
     621             :     return bSet;
     622             : }
     623             : 
     624             : #endif // ENABLE_COMPONENT_SELF_CHECK
     625             : 
     626         402 : } // namespace framework
     627             : 
     628             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10