/*
* TeleStax, Open Source Cloud Communications Copyright 2012.
* and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.mobicents.protocols.ss7.map.service.mobility.locationManagement;
import java.io.IOException;
import org.mobicents.protocols.asn.AsnException;
import org.mobicents.protocols.asn.AsnInputStream;
import org.mobicents.protocols.asn.AsnOutputStream;
import org.mobicents.protocols.asn.Tag;
import org.mobicents.protocols.ss7.map.api.MAPException;
import org.mobicents.protocols.ss7.map.api.MAPMessageType;
import org.mobicents.protocols.ss7.map.api.MAPOperationCode;
import org.mobicents.protocols.ss7.map.api.MAPParsingComponentException;
import org.mobicents.protocols.ss7.map.api.MAPParsingComponentExceptionReason;
import org.mobicents.protocols.ss7.map.api.primitives.GSNAddress;
import org.mobicents.protocols.ss7.map.api.primitives.IMSI;
import org.mobicents.protocols.ss7.map.api.primitives.ISDNAddressString;
import org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer;
import org.mobicents.protocols.ss7.map.api.service.mobility.locationManagement.ADDInfo;
import org.mobicents.protocols.ss7.map.api.service.mobility.locationManagement.EPSInfo;
import org.mobicents.protocols.ss7.map.api.service.mobility.locationManagement.SGSNCapability;
import org.mobicents.protocols.ss7.map.api.service.mobility.locationManagement.UESRVCCCapability;
import org.mobicents.protocols.ss7.map.api.service.mobility.locationManagement.UpdateGprsLocationRequest;
import org.mobicents.protocols.ss7.map.api.service.mobility.locationManagement.UsedRATType;
import org.mobicents.protocols.ss7.map.primitives.GSNAddressImpl;
import org.mobicents.protocols.ss7.map.primitives.IMSIImpl;
import org.mobicents.protocols.ss7.map.primitives.ISDNAddressStringImpl;
import org.mobicents.protocols.ss7.map.primitives.MAPExtensionContainerImpl;
import org.mobicents.protocols.ss7.map.service.mobility.MobilityMessageImpl;
/**
*
* @author Lasith Waruna Perera
*
*/
public class UpdateGprsLocationRequestImpl extends MobilityMessageImpl implements UpdateGprsLocationRequest {
private static final int TAG_sgsnCapability = 0;
private static final int TAG_informPreviousNetworkEntity = 1;
private static final int TAG_psLCSNotSupportedByUE = 2;
private static final int TAG_vGmlcAddress = 3;
private static final int TAG_addInfo = 4;
private static final int TAG_epsInfo = 5;
private static final int TAG_servingNodeTypeIndicator = 6;
private static final int TAG_skipSubscriberDataUpdate = 7;
private static final int TAG_usedRATType = 8;
private static final int TAG_gprsSubscriptionDataNotNeeded = 9;
private static final int TAG_nodeTypeIndicator = 10;
private static final int TAG_areaRestricted = 11;
private static final int TAG_ueReachableIndicator = 12;
private static final int TAG_epsSubscriptionDataNotNeeded = 13;
private static final int TAG_uesrvccCapability = 14;
public static final String _PrimitiveName = "UpdateGprsLocationRequest";
private IMSI imsi;
private ISDNAddressString sgsnNumber;
private GSNAddress sgsnAddress;
private MAPExtensionContainer extensionContainer;
private SGSNCapability sgsnCapability;
private boolean informPreviousNetworkEntity;
private boolean psLCSNotSupportedByUE;
private GSNAddress vGmlcAddress;
private ADDInfo addInfo;
private EPSInfo epsInfo;
private boolean servingNodeTypeIndicator;
private boolean skipSubscriberDataUpdate;
private UsedRATType usedRATType;
private boolean gprsSubscriptionDataNotNeeded;
private boolean nodeTypeIndicator;
private boolean areaRestricted;
private boolean ueReachableIndicator;
private boolean epsSubscriptionDataNotNeeded;
private UESRVCCCapability uesrvccCapability;
public UpdateGprsLocationRequestImpl() {
super();
}
public UpdateGprsLocationRequestImpl(IMSI imsi, ISDNAddressString sgsnNumber, GSNAddress sgsnAddress,
MAPExtensionContainer extensionContainer, SGSNCapability sgsnCapability, boolean informPreviousNetworkEntity,
boolean psLCSNotSupportedByUE, GSNAddress vGmlcAddress, ADDInfo addInfo, EPSInfo epsInfo,
boolean servingNodeTypeIndicator, boolean skipSubscriberDataUpdate, UsedRATType usedRATType,
boolean gprsSubscriptionDataNotNeeded, boolean nodeTypeIndicator, boolean areaRestricted,
boolean ueReachableIndicator, boolean epsSubscriptionDataNotNeeded, UESRVCCCapability uesrvccCapability,
long mapProtocolVersion) {
super();
this.imsi = imsi;
this.sgsnNumber = sgsnNumber;
this.sgsnAddress = sgsnAddress;
this.extensionContainer = extensionContainer;
this.sgsnCapability = sgsnCapability;
this.informPreviousNetworkEntity = informPreviousNetworkEntity;
this.psLCSNotSupportedByUE = psLCSNotSupportedByUE;
this.vGmlcAddress = vGmlcAddress;
this.addInfo = addInfo;
this.epsInfo = epsInfo;
this.servingNodeTypeIndicator = servingNodeTypeIndicator;
this.skipSubscriberDataUpdate = skipSubscriberDataUpdate;
this.usedRATType = usedRATType;
this.gprsSubscriptionDataNotNeeded = gprsSubscriptionDataNotNeeded;
this.nodeTypeIndicator = nodeTypeIndicator;
this.areaRestricted = areaRestricted;
this.ueReachableIndicator = ueReachableIndicator;
this.epsSubscriptionDataNotNeeded = epsSubscriptionDataNotNeeded;
this.uesrvccCapability = uesrvccCapability;
}
@Override
public MAPMessageType getMessageType() {
return MAPMessageType.updateGprsLocation_Request;
}
@Override
public int getOperationCode() {
return MAPOperationCode.updateGprsLocation;
}
@Override
public IMSI getImsi() {
return this.imsi;
}
@Override
public ISDNAddressString getSgsnNumber() {
return this.sgsnNumber;
}
@Override
public GSNAddress getSgsnAddress() {
return this.sgsnAddress;
}
@Override
public MAPExtensionContainer getExtensionContainer() {
return this.extensionContainer;
}
@Override
public SGSNCapability getSGSNCapability() {
return this.sgsnCapability;
}
@Override
public boolean getInformPreviousNetworkEntity() {
return this.informPreviousNetworkEntity;
}
@Override
public boolean getPsLCSNotSupportedByUE() {
return this.psLCSNotSupportedByUE;
}
@Override
public GSNAddress getVGmlcAddress() {
return this.vGmlcAddress;
}
@Override
public ADDInfo getADDInfo() {
return this.addInfo;
}
@Override
public EPSInfo getEPSInfo() {
return this.epsInfo;
}
@Override
public boolean getServingNodeTypeIndicator() {
return this.servingNodeTypeIndicator;
}
@Override
public boolean getSkipSubscriberDataUpdate() {
return this.skipSubscriberDataUpdate;
}
@Override
public UsedRATType getUsedRATType() {
return this.usedRATType;
}
@Override
public boolean getGprsSubscriptionDataNotNeeded() {
return this.gprsSubscriptionDataNotNeeded;
}
@Override
public boolean getNodeTypeIndicator() {
return this.nodeTypeIndicator;
}
@Override
public boolean getAreaRestricted() {
return this.areaRestricted;
}
@Override
public boolean getUeReachableIndicator() {
return this.ueReachableIndicator;
}
@Override
public boolean getEpsSubscriptionDataNotNeeded() {
return this.epsSubscriptionDataNotNeeded;
}
@Override
public UESRVCCCapability getUESRVCCCapability() {
return this.uesrvccCapability;
}
@Override
public int getTag() throws MAPException {
return Tag.SEQUENCE;
}
@Override
public int getTagClass() {
return Tag.CLASS_UNIVERSAL;
}
@Override
public boolean getIsPrimitive() {
return false;
}
@Override
public void decodeAll(AsnInputStream ansIS) throws MAPParsingComponentException {
try {
int length = ansIS.readLength();
this._decode(ansIS, length);
} catch (IOException e) {
throw new MAPParsingComponentException("IOException when decoding " + _PrimitiveName + ": ", e,
MAPParsingComponentExceptionReason.MistypedParameter);
} catch (AsnException e) {
throw new MAPParsingComponentException("AsnException when decoding " + _PrimitiveName + ": ", e,
MAPParsingComponentExceptionReason.MistypedParameter);
}
}
@Override
public void decodeData(AsnInputStream ansIS, int length) throws MAPParsingComponentException {
try {
this._decode(ansIS, length);
} catch (IOException e) {
throw new MAPParsingComponentException("IOException when decoding " + _PrimitiveName + ": ", e,
MAPParsingComponentExceptionReason.MistypedParameter);
} catch (AsnException e) {
throw new MAPParsingComponentException("AsnException when decoding " + _PrimitiveName + ": ", e,
MAPParsingComponentExceptionReason.MistypedParameter);
}
}
private void _decode(AsnInputStream ansIS, int length) throws MAPParsingComponentException, IOException, AsnException {
this.imsi = null;
this.sgsnNumber = null;
this.sgsnAddress = null;
this.extensionContainer = null;
this.sgsnCapability = null;
this.informPreviousNetworkEntity = false;
this.psLCSNotSupportedByUE = false;
this.vGmlcAddress = null;
this.addInfo = null;
this.epsInfo = null;
this.servingNodeTypeIndicator = false;
this.skipSubscriberDataUpdate = false;
this.usedRATType = null;
this.gprsSubscriptionDataNotNeeded = false;
this.nodeTypeIndicator = false;
this.areaRestricted = false;
this.ueReachableIndicator = false;
this.epsSubscriptionDataNotNeeded = false;
this.uesrvccCapability = null;
AsnInputStream ais = ansIS.readSequenceStreamData(length);
int num = 0;
while (true) {
if (ais.available() == 0)
break;
int tag = ais.readTag();
switch (num) {
case 0:
// imsi
if (ais.getTagClass() != Tag.CLASS_UNIVERSAL || !ais.isTagPrimitive() || tag != Tag.STRING_OCTET)
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".imsi: Parameter 0 bad tag or tag class or not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.imsi = new IMSIImpl();
((IMSIImpl) this.imsi).decodeAll(ais);
break;
case 1:
// sgsnNumber
if (ais.getTagClass() != Tag.CLASS_UNIVERSAL || !ais.isTagPrimitive() || tag != Tag.STRING_OCTET)
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".imsi: Parameter 0 bad tag or tag class or not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.sgsnNumber = new ISDNAddressStringImpl();
((ISDNAddressStringImpl) this.sgsnNumber).decodeAll(ais);
break;
case 2:
// sgsnAddress
if (ais.getTagClass() != Tag.CLASS_UNIVERSAL || !ais.isTagPrimitive() || tag != Tag.STRING_OCTET)
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".vlrNumber: Parameter 2 bad tag or tag class or not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.sgsnAddress = new GSNAddressImpl();
((GSNAddressImpl) this.sgsnAddress).decodeAll(ais);
break;
default:
if (ais.getTagClass() == Tag.CLASS_UNIVERSAL) {
switch (tag) {
case Tag.SEQUENCE:
// extensionContainer
if (ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".extensionContainer: Parameter extensionContainer is primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.extensionContainer = new MAPExtensionContainerImpl();
((MAPExtensionContainerImpl) this.extensionContainer).decodeAll(ais);
break;
default:
ais.advanceElement();
break;
}
} else if (ais.getTagClass() == Tag.CLASS_CONTEXT_SPECIFIC) {
switch (tag) {
case TAG_sgsnCapability: // sgsnCapability
if (ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".sgsnCapability: Parameter is primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.sgsnCapability = new SGSNCapabilityImpl();
((SGSNCapabilityImpl) this.sgsnCapability).decodeAll(ais);
break;
case TAG_informPreviousNetworkEntity: // informPreviousNetworkEntity
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".informPreviousNetworkEntity: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.informPreviousNetworkEntity = true;
break;
case TAG_psLCSNotSupportedByUE:
// tpsLCSNotSupportedByUE
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".tpsLCSNotSupportedByUE: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.psLCSNotSupportedByUE = true;
break;
case TAG_vGmlcAddress:
// vmlcAddress
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".vGmlcAddress: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.vGmlcAddress = new GSNAddressImpl();
((GSNAddressImpl) this.vGmlcAddress).decodeAll(ais);
break;
case TAG_addInfo: // addInfo
if (ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".addInfo: Parameter is primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
this.addInfo = new ADDInfoImpl();
((ADDInfoImpl) this.addInfo).decodeAll(ais);
break;
case TAG_epsInfo: // epsInfo
if (ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".epsInfo: Parameter is primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
AsnInputStream ais2 = ais.readSequenceStream();
ais2.readTag();
this.epsInfo = new EPSInfoImpl();
((EPSInfoImpl) this.epsInfo).decodeAll(ais2);
break;
case TAG_servingNodeTypeIndicator:
// servingNodeTypeIndicator
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".servingNodeTypeIndicator: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.servingNodeTypeIndicator = true;
break;
case TAG_skipSubscriberDataUpdate:
// skipSubscriberDataUpdate
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".skipSubscriberDataUpdate: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.skipSubscriberDataUpdate = true;
break;
case TAG_usedRATType: // sgsnCapability
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".usedRATType: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
int raType = (int) ais.readInteger();
this.usedRATType = UsedRATType.getInstance(raType);
break;
case TAG_gprsSubscriptionDataNotNeeded:
// gprsSubscriptionDataNotNeeded
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".gprsSubscriptionDataNotNeeded: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.gprsSubscriptionDataNotNeeded = true;
break;
case TAG_nodeTypeIndicator:
// nodeTypeIndicator
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".nodeTypeIndicator: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.nodeTypeIndicator = true;
break;
case TAG_areaRestricted:
// areaRestricted
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".areaRestricted: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.areaRestricted = true;
break;
case TAG_ueReachableIndicator:
// ueReachableIndicator
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".ueReachableIndicator: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.ueReachableIndicator = true;
break;
case TAG_epsSubscriptionDataNotNeeded:
// epsSubscriptionDataNotNeeded
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".epsSubscriptionDataNotNeeded: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
ais.readNull();
this.epsSubscriptionDataNotNeeded = true;
break;
case TAG_uesrvccCapability: // uesrvccCapability
if (!ais.isTagPrimitive())
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ".uesrvccCapability: Parameter is not primitive",
MAPParsingComponentExceptionReason.MistypedParameter);
int vccCapability = (int) ais.readInteger();
this.uesrvccCapability = UESRVCCCapability.getInstance(vccCapability);
break;
default:
ais.advanceElement();
break;
}
} else {
ais.advanceElement();
}
break;
}
num++;
}
if (this.imsi == null || this.sgsnNumber == null || this.sgsnAddress == null)
throw new MAPParsingComponentException("Error while decoding " + _PrimitiveName
+ ": imsi or sgsnNumber or sgsnAddress is null ", MAPParsingComponentExceptionReason.MistypedParameter);
}
@Override
public void encodeAll(AsnOutputStream asnOs) throws MAPException {
try {
this.encodeAll(asnOs, this.getTagClass(), this.getTag());
} catch (Exception e) {
e.printStackTrace();
throw new MAPException(e);
}
}
@Override
public void encodeAll(AsnOutputStream asnOs, int tagClass, int tag) throws MAPException {
try {
asnOs.writeTag(tagClass, this.getIsPrimitive(), tag);
int pos = asnOs.StartContentDefiniteLength();
this.encodeData(asnOs);
asnOs.FinalizeContent(pos);
} catch (AsnException e) {
e.printStackTrace();
throw new MAPException("AsnException when encoding " + _PrimitiveName + ": " + e.getMessage(), e);
} catch (Exception e) {
e.printStackTrace();
throw new MAPException("AsnException when encoding " + _PrimitiveName + ": " + e.getMessage(), e);
}
}
@Override
public void encodeData(AsnOutputStream asnOs) throws MAPException {
try {
if (this.imsi == null || this.sgsnNumber == null || this.sgsnAddress == null)
throw new MAPException("imsi, sgsnNumber and sgsnAddress parameter must not be null");
((IMSIImpl) this.imsi).encodeAll(asnOs);
((ISDNAddressStringImpl) this.sgsnNumber).encodeAll(asnOs);
((GSNAddressImpl) this.sgsnAddress).encodeAll(asnOs);
if (this.extensionContainer != null)
((MAPExtensionContainerImpl) this.extensionContainer).encodeAll(asnOs);
if (this.sgsnCapability != null)
((SGSNCapabilityImpl) this.sgsnCapability).encodeAll(asnOs, Tag.CLASS_CONTEXT_SPECIFIC, TAG_sgsnCapability);
if (informPreviousNetworkEntity)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_informPreviousNetworkEntity);
if (psLCSNotSupportedByUE)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_psLCSNotSupportedByUE);
if (this.vGmlcAddress != null)
((GSNAddressImpl) this.vGmlcAddress).encodeAll(asnOs, Tag.CLASS_CONTEXT_SPECIFIC, TAG_vGmlcAddress);
if (this.addInfo != null)
((ADDInfoImpl) this.addInfo).encodeAll(asnOs, Tag.CLASS_CONTEXT_SPECIFIC, TAG_addInfo);
if (this.epsInfo != null) {
asnOs.writeTag(Tag.CLASS_CONTEXT_SPECIFIC, false, TAG_epsInfo);
int pos = asnOs.StartContentDefiniteLength();
((EPSInfoImpl) this.epsInfo).encodeAll(asnOs);
asnOs.FinalizeContent(pos);
}
if (servingNodeTypeIndicator)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_servingNodeTypeIndicator);
if (skipSubscriberDataUpdate)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_skipSubscriberDataUpdate);
if (this.usedRATType != null)
asnOs.writeInteger(Tag.CLASS_CONTEXT_SPECIFIC, TAG_usedRATType, this.usedRATType.getCode());
if (gprsSubscriptionDataNotNeeded)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_gprsSubscriptionDataNotNeeded);
if (nodeTypeIndicator)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_nodeTypeIndicator);
if (areaRestricted)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_areaRestricted);
if (ueReachableIndicator)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_ueReachableIndicator);
if (epsSubscriptionDataNotNeeded)
asnOs.writeNull(Tag.CLASS_CONTEXT_SPECIFIC, TAG_epsSubscriptionDataNotNeeded);
if (this.uesrvccCapability != null)
asnOs.writeInteger(Tag.CLASS_CONTEXT_SPECIFIC, TAG_uesrvccCapability, this.uesrvccCapability.getCode());
} catch (IOException e) {
throw new MAPException("IOException when encoding " + _PrimitiveName + ": " + e.getMessage(), e);
} catch (AsnException e) {
throw new MAPException("AsnException when encoding " + _PrimitiveName + ": " + e.getMessage(), e);
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(_PrimitiveName);
sb.append(" [");
if (this.imsi != null) {
sb.append("imsi=");
sb.append(this.imsi.toString());
sb.append(", ");
}
if (this.sgsnNumber != null) {
sb.append("sgsnNumber=");
sb.append(this.sgsnNumber.toString());
sb.append(", ");
}
if (this.sgsnAddress != null) {
sb.append("sgsnAddress=");
sb.append(this.sgsnAddress.toString());
sb.append(", ");
}
if (this.extensionContainer != null) {
sb.append("extensionContainer=");
sb.append(this.extensionContainer.toString());
sb.append(", ");
}
if (this.sgsnCapability != null) {
sb.append("sgsnCapability=");
sb.append(this.sgsnCapability.toString());
sb.append(", ");
}
if (this.informPreviousNetworkEntity) {
sb.append("informPreviousNetworkEntity, ");
}
if (this.psLCSNotSupportedByUE) {
sb.append("psLCSNotSupportedByUE, ");
}
if (this.vGmlcAddress != null) {
sb.append("vGmlcAddress=");
sb.append(this.vGmlcAddress.toString());
sb.append(", ");
}
if (this.addInfo != null) {
sb.append("addInfo=");
sb.append(this.addInfo.toString());
sb.append(", ");
}
if (this.epsInfo != null) {
sb.append("epsInfo=");
sb.append(this.epsInfo.toString());
sb.append(", ");
}
if (this.servingNodeTypeIndicator) {
sb.append("servingNodeTypeIndicator, ");
}
if (this.skipSubscriberDataUpdate) {
sb.append("skipSubscriberDataUpdate, ");
}
if (this.usedRATType != null) {
sb.append("usedRATType=");
sb.append(this.usedRATType.toString());
sb.append(", ");
}
if (this.gprsSubscriptionDataNotNeeded) {
sb.append("gprsSubscriptionDataNotNeeded, ");
}
if (this.nodeTypeIndicator) {
sb.append("nodeTypeIndicator, ");
}
if (this.areaRestricted) {
sb.append("areaRestricted, ");
}
if (this.ueReachableIndicator) {
sb.append("ueReachableIndicator, ");
}
if (this.epsSubscriptionDataNotNeeded) {
sb.append("epsSubscriptionDataNotNeeded, ");
}
if (this.uesrvccCapability != null) {
sb.append("uesrvccCapability=");
sb.append(this.uesrvccCapability.toString());
sb.append(", ");
}
sb.append("]");
return sb.toString();
}
}