content: /*
   * Copyright (C) 2018 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package com.android.server.wifi.hotspot2.soap;
  
  import android.annotation.NonNull;
  
  import org.ksoap2.SoapEnvelope;
  import org.ksoap2.serialization.SoapObject;
  import org.ksoap2.serialization.SoapSerializationEnvelope;
  
  /**
   * This class represents sppUpdateResponse message, as part of the
   * Subscription Provisioning Protocol.
   * For the detail, refer to the Hotspot 2.0 rel2 specification.
   */
  public class UpdateResponseMessage {
  
      /**
       * Serialize the given request to a SOAP envelope.
       *
       * @param sessionId session id generated by the server to identify the session between device
       *                  and server.
       * @param isError {@code true} if the error happens during updating or installing PPS MO.
       * @return {@link SoapSerializationEnvelope}
       */
      public static SoapSerializationEnvelope serializeToSoapEnvelope(@NonNull String sessionId,
              boolean isError) {
          SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
          envelope.implicitTypes = true;       // Do not include type in element attribute
          envelope.setAddAdornments(false);    // Do not generate/include IDs for each element
  
          SoapObject requestObject =
                  new SoapObject(SoapEnvelope.NS20, SppConstants.METHOD_UPDATE_RESPONSE);
          requestObject.addAttribute(SoapEnvelope.NS20, SppConstants.ATTRIBUTE_SPP_VERSION,
                  SppConstants.SUPPORTED_SPP_VERSION);
          requestObject.addAttribute(SoapEnvelope.NS20, SppConstants.ATTRIBUTE_SESSION_ID, sessionId);
          if (isError) {
              requestObject.addAttribute(SoapEnvelope.NS20, SppConstants.ATTRIBUTE_SPP_STATUS,
                      SppConstants.mapStatusIntToString(SppConstants.SppStatus.ERROR));
              SoapObject sppError =
                      new SoapObject(SoapEnvelope.NS20, SppConstants.PROPERTY_SPP_ERROR);
              sppError.addAttribute(SppConstants.ATTRIBUTE_ERROR_CODE,
                      SppConstants.mapErrorIntToString(
                              SppConstants.SppError.MO_ADD_OR_UPDATE_FAILED));
              requestObject.addProperty(SoapEnvelope.NS20, SppConstants.PROPERTY_SPP_ERROR, sppError);
          } else {
              requestObject.addAttribute(SoapEnvelope.NS20, SppConstants.ATTRIBUTE_SPP_STATUS,
                      SppConstants.mapStatusIntToString(SppConstants.SppStatus.OK));
          }
  
          envelope.setOutputSoapObject(requestObject);
          return envelope;
      }
  }
  