Share this page

# SOAPHeaderCreator

## Purpose

This class provides interfaces to set SOAP header elements for PPM Web services.

## Function

setAuditHeader

This method is used to add some auditing information through an Audit header.

setUserLocaleHeader

This method is used to set a preferred language when a caller invokes a Web service operation. For example, if you want to create requests in a language other than the system language, you can specify the preferred locale by using this method.

## Limitations

Data in Multiple Languages

In a single web service operation, there is no support for working with data in multiple languages. To work with data in multiple languages, you must perform multiple, separate Web service transactions, each specifying the desired session language.

Supported Languages

The language code you set in the method must be supported (and enabled) in PPM. If the translation of a certain entity does not exist in the specified language, the result of a Get operation will be returned in the Definition Language of the entity.

## Java Interface

Add the Audit header for auditing information:

`SOAPHeaderCreator.setAuditHeader(stub, "Submitted By: TEST","PPM on " + InetAddress.getLocalHost().getHostAddress(),"createRequest");`

Parameters | Description
--- | ---
stub | Generated by another Web service operation. For example: DemandServiceStub stub = new DemandServiceStub(ctx, serviceURL);

Add `UserLocaleHeader` to set the language locale to a specified locale:

`SOAPHeaderCreator.setUserLocaleHeader(stub, locale);`

Parameters | Description
--- | ---
stub | Generated by another Web service operation. For example: DemandServiceStub stub = new DemandServiceStub(ctx, serviceURL);
locale | Language code of the language you want to set the session to, for example, `de` (for German) or `ko` (for Korean).

## Java Example

This is an example for DemandService that demonstrates how to get the MLU functionality from DemandService in a PPM instance that supports MLU.

    import examples.dm.DemandServiceClient;
    import examples.util.SOAPHeaderCreator;

    public class DemandServiceMLUClient {

        protected ConfigurationContext ctx = null;

        public DemandServiceMLUClient() {
            String repositoryPath =
    System.getProperty("client.repository.dir");
            String axis2 = repositoryPath + "/conf/clientaxis2.
    xml";
            File file = new File(axis2);
            if (file.exists()) {
                try {
                    ctx =

    ConfigurationContextFactory.createConfigurationContextFromFileS
    ystem(repositoryPath, axis2);
                } catch (Exception e) {
                  e.printStackTrace();
                }
            }
        }

      /**
       * The main program
       *
       * Parameter: args[0] - service URL. e.g.
       * http://server:port/itg/ppmservices/DemandService
       * args[1] - language locale e.g. de or en, ko etc.
       *
       */
      public static void main(String[] args) throws Exception {
          // check parameter
          if (args.length < 1) {
             System.out.println("Usage: java DemandServiceClient
    <service URL> <language locale>");
               System.exit(1);
           }

           System.out.println("Starting Demand Service MLU
    tests...");

            // get server URL
            String serviceURL = args[0];
            // get preferred language
            String locale = null;
            if (args.length > 1) locale = args[1];

            // Test Create Request
            DemandServiceMLUClient dm = new
    DemandServiceMLUClient();
            String requestId = dm.createRequest(serviceURL);

            // Test Get Request
            dm.getRequests(serviceURL, locale, requestId);

            System.out.println("Demand Service MLU tests
    complete.");
       }

       /**
        * This method creates a request and it shows the
    instruction on how to
        * create the request in a language other than the system
    language
        * @param serviceURL
        * @return
        * @throws Exception
        */
        private String createRequest(String serviceURL) throws
    Exception {

         // Get web service
           DemandServiceStub stub = new DemandServiceStub(ctx,
    serviceURL);
           // Add the Audit header for auditing information
            SOAPHeaderCreator.setAuditHeader(stub, "Submitted By:
    TEST","PPM on " +
    InetAddress.getLocalHost().getHostAddress(),"createRequest");

    /
    ***************************************************************
    *
    * Note: If you want to create a request in a language other than
    the System language, you must specify the preferred locale by
    uncommenting the following line:
    SOAPHeaderCreator.setUserLocaleHeader(stub, locale);

    Then, make sure to pass the token values in the translated
    language instead of the System language. This is because when
    you set the LanguageLocale field in UserLocaleHeader to a
    specific locale, PPM web service expects the token values in the
    corresponding language if the translation for that value in the
    preferred language exists in the system. If the translation
    doesn't exist in that language, you must pass the values in the
    System language.

    Take the following scenario as an example:

    o You set the preferred locale to "de" and you want to set
    the value for the REQ.DEPARTMENT_NAME token to 'Manufacturing'
    (English.

    o The German translation for 'Manufacturing' exists in the
    system.

    In this scenario, you must specify it as 'Herstellung', which is
    the German translated value of 'Manufacturing' and so forth for
    other token values as well.
    ***********************************************************/

              // Add UserLocaleHeader to set the language locale to
    the specified locale
              // SOAPHeaderCreator.setUserLocaleHeader(stub, locale);

              // Construct a request object
              Request oRequest = Request.Factory.newInstance();
              oRequest.setRequestType("Bug");
              SimpleField[] fields = new SimpleField[2];

              // Set values for the fields of the request object

              // Set field 'Description'
              SimpleField field_A = SimpleField.Factory.newInstance();
              field_A.setToken("REQ.DESCRIPTION");
              field_A.setStringValue1Array(new String[] { "WebService
    Test" });
              fields[0] = field_A;

             // Set field 'Department'
             SimpleField field_B = SimpleField.Factory.newInstance();
             field_B.setToken("REQ.DEPARTMENT_NAME");
             field_B.setStringValue1Array(new String[]{"Finance"});
             fields[1] = field_B;

             // Add all the fields to request object
             oRequest.setSimpleFieldsArray(fields);
       }
       /**
        * This method invokes getRequest operation with language
    locale set to specified locale
        * @param serviceURL
        * @param language
        * @param requestId
        * @throws Exception
        */
        private void getRequests(String serviceURL, String
    language, String requestId)
               throws Exception {

            // Set Identifier
            Identifier[] ids = new Identifier[1];
            Identifier reqId = Identifier.Factory.newInstance();
            reqId.setId(requestId);
            reqId.setServerURL(serviceURL);
            ids[0] = reqId;

            // Get web service
            DemandServiceStub stub = new DemandServiceStub(ctx,
    serviceURL);
            // Add the UserLocaleHeader SOAP header
            SOAPHeaderCreator.setUserLocaleHeader(stub, language);

            // Construct message to send
            GetRequestsDocument inDoc =
    GetRequestsDocument.Factory.newInstance();
            GetRequestsDocument.GetRequests getRequests =
    inDoc.addNewGetRequests();
            getRequests.setRequestIdsArray(ids);

            // Invoke web service
            GetRequestsResponseDocument outDoc =
    stub.getRequests(inDoc);

            // Process return message
            Request[] requests =
    outDoc.getGetRequestsResponse().getReturnArray();
            System.out.println("getRequests Succeeded");
            System.out.println("Returned Request: " +
    requests[0].getId());
         }
    }

## Errors and Exceptions

There are no special exceptions for the SOAPHeaderCreator class.

https://admhelp.microfocus.com PPM 8942
Tips to improve your search results... OpenText™ Project and Portfolio Management Help Center PPM Help 26.2-26.3 All View Local Help Center View Online Help Center Version: