/* * TeleStax, Open Source Cloud Communications * Copyright 2012, Telestax Inc 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.errors; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Arrays; import javolution.xml.XMLObjectReader; import javolution.xml.XMLObjectWriter; 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.errors.AbsentSubscriberDiagnosticSM; import org.mobicents.protocols.ss7.map.api.errors.AbsentSubscriberReason; import org.mobicents.protocols.ss7.map.api.errors.AdditionalNetworkResource; import org.mobicents.protocols.ss7.map.api.errors.AdditionalRoamingNotAllowedCause; import org.mobicents.protocols.ss7.map.api.errors.CUGRejectCause; import org.mobicents.protocols.ss7.map.api.errors.CallBarringCause; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorCode; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageAbsentSubscriber; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageAbsentSubscriberSM; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageBusySubscriber; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageCUGReject; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageCallBarred; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageFacilityNotSup; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessagePositionMethodFailure; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessagePwRegistrationFailure; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageRoamingNotAllowed; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageSMDeliveryFailure; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageSsErrorStatus; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageSsIncompatibility; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageSubscriberBusyForMtSms; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageSystemFailure; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageUnauthorizedLCSClient; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessageUnknownSubscriber; import org.mobicents.protocols.ss7.map.api.errors.PWRegistrationFailureCause; import org.mobicents.protocols.ss7.map.api.errors.PositionMethodFailureDiagnostic; import org.mobicents.protocols.ss7.map.api.errors.RoamingNotAllowedCause; import org.mobicents.protocols.ss7.map.api.errors.SMEnumeratedDeliveryFailureCause; import org.mobicents.protocols.ss7.map.api.errors.UnauthorizedLCSClientDiagnostic; import org.mobicents.protocols.ss7.map.api.errors.UnknownSubscriberDiagnostic; import org.mobicents.protocols.ss7.map.api.primitives.NetworkResource; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.BasicServiceCode; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TeleserviceCode; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TeleserviceCodeValue; import org.mobicents.protocols.ss7.map.api.service.supplementary.SSCode; import org.mobicents.protocols.ss7.map.api.service.supplementary.SSStatus; import org.mobicents.protocols.ss7.map.api.service.supplementary.SupplementaryCodeValue; import org.mobicents.protocols.ss7.map.primitives.MAPExtensionContainerTest; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.BasicServiceCodeImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.TeleserviceCodeImpl; import org.mobicents.protocols.ss7.map.service.supplementary.SSCodeImpl; import org.mobicents.protocols.ss7.map.service.supplementary.SSStatusImpl; import org.mobicents.protocols.ss7.tcap.asn.ParameterImpl; import org.mobicents.protocols.ss7.tcap.asn.comp.Parameter; import org.testng.annotations.Test; /** * * @author sergey vetyutnev * @author amit bhayani * */ public class MAPErrorMessageTest { private Parameter getDataExtContainerFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataSmDeliveryFailure() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 5 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; // 10, 1, 0 } private Parameter getDataSmDeliveryFailureV1() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 1 }); par.setPrimitive(true); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.ENUMERATED); return par; } private Parameter getDataSmDeliveryFailureFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 4, 4, 5, 1, 3, 5, 7, 9, 48, 39, -96, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, -95, 3, 31, 32, 33 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataAbsentSubscriberSM() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 2, 1, 1 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; // 2, 1, 0 // 2, 1, 4 } private Parameter getDataAbsentSubscriberSMFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 2, 1, 0, 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 128, 1, 6 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataCallBarred() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 1 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataCallBarredFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 1, 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 129, 0 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataSystemFailure() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 0 }); par.setPrimitive(true); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.ENUMERATED); return par; } private Parameter getDataSystemFailureFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 2, 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 128, 1, 3 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataFacilityNotSupFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 128, 0, (byte) 129, 0 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataUnknownSubscriberFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, 10, 1, 1 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataSubscriberBusyForMTSMSFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, 5, 0 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataAbsentSubscriberFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 128, 1, 3 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataAbsentSubscriberV1() { Parameter par = new ParameterImpl(); par.setData(new byte[] { (byte) 255 }); par.setPrimitive(true); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.BOOLEAN); return par; } private Parameter getDataUnauthorizedLCSClientFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { (byte) 128, 1, 2, (byte) 161, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataPositionMethodFailureFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { (byte) 128, 1, 4, (byte) 161, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataBusySubscriberFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 128, 0, (byte) 129, 0 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataCUGRejectFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 1, 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataRoamingNotAllowedFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 10, 1, 0, 48, 39, (byte) 160, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, (byte) 161, 3, 31, 32, 33, (byte) 128, 1, 0 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataSsErrorStatusFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 6 }); par.setPrimitive(true); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.STRING_OCTET); return par; } private Parameter getDataSsIncompatibilityFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { (byte) 129, 1, 33, (byte) 131, 1, 17, (byte) 132, 1, 9 }); par.setPrimitive(false); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.SEQUENCE); return par; } private Parameter getDataPwRegistrationFailureFull() { Parameter par = new ParameterImpl(); par.setData(new byte[] { 2 }); par.setPrimitive(true); par.setTagClass(Tag.CLASS_UNIVERSAL); par.setTag(Tag.ENUMERATED); return par; } @Test(groups = { "functional.decode", "dialog.message" }) public void testDecode() throws Exception { MAPErrorMessageFactoryImpl fact = new MAPErrorMessageFactoryImpl(); Parameter p = getDataSmDeliveryFailure(); MAPErrorMessageImpl em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.smDeliveryFailure); AsnInputStream ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSMDeliveryFailure()); MAPErrorMessageSMDeliveryFailure emSMDeliveryFailure = em.getEmSMDeliveryFailure(); assertEquals(emSMDeliveryFailure.getSMEnumeratedDeliveryFailureCause(), SMEnumeratedDeliveryFailureCause.invalidSMEAddress); assertNull(emSMDeliveryFailure.getSignalInfo()); assertNull(emSMDeliveryFailure.getExtensionContainer()); assertEquals(emSMDeliveryFailure.getMapProtocolVersion(), 3); p = getDataSmDeliveryFailureFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.smDeliveryFailure); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSMDeliveryFailure()); emSMDeliveryFailure = em.getEmSMDeliveryFailure(); assertEquals(emSMDeliveryFailure.getSMEnumeratedDeliveryFailureCause(), SMEnumeratedDeliveryFailureCause.scCongestion); assertNotNull(emSMDeliveryFailure.getSignalInfo()); assertNotNull(emSMDeliveryFailure.getExtensionContainer()); assertTrue(Arrays.equals(emSMDeliveryFailure.getSignalInfo(), new byte[] { 1, 3, 5, 7, 9 })); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emSMDeliveryFailure.getExtensionContainer())); assertEquals(emSMDeliveryFailure.getMapProtocolVersion(), 3); p = getDataSmDeliveryFailureV1(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.smDeliveryFailure); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSMDeliveryFailure()); emSMDeliveryFailure = em.getEmSMDeliveryFailure(); assertEquals(emSMDeliveryFailure.getSMEnumeratedDeliveryFailureCause(), SMEnumeratedDeliveryFailureCause.equipmentProtocolError); assertNull(emSMDeliveryFailure.getSignalInfo()); assertNull(emSMDeliveryFailure.getExtensionContainer()); assertEquals(emSMDeliveryFailure.getMapProtocolVersion(), 1); p = getDataAbsentSubscriberSM(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.absentSubscriberSM); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmAbsentSubscriberSM()); MAPErrorMessageAbsentSubscriberSM emAbsentSubscriberSMImpl = em.getEmAbsentSubscriberSM(); assertEquals(emAbsentSubscriberSMImpl.getAbsentSubscriberDiagnosticSM(), AbsentSubscriberDiagnosticSM.IMSIDetached); assertNull(emAbsentSubscriberSMImpl.getAdditionalAbsentSubscriberDiagnosticSM()); assertNull(emAbsentSubscriberSMImpl.getExtensionContainer()); p = getDataAbsentSubscriberSMFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.absentSubscriberSM); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmAbsentSubscriberSM()); emAbsentSubscriberSMImpl = em.getEmAbsentSubscriberSM(); assertEquals(emAbsentSubscriberSMImpl.getAbsentSubscriberDiagnosticSM(), AbsentSubscriberDiagnosticSM.NoPagingResponseViaTheMSC); assertEquals(emAbsentSubscriberSMImpl.getAdditionalAbsentSubscriberDiagnosticSM(), AbsentSubscriberDiagnosticSM.GPRSDetached); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emAbsentSubscriberSMImpl.getExtensionContainer())); p = getDataSystemFailure(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.systemFailure); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSystemFailure()); MAPErrorMessageSystemFailure emSystemFailure = em.getEmSystemFailure(); assertEquals(emSystemFailure.getMapProtocolVersion(), 2); assertEquals(emSystemFailure.getNetworkResource(), NetworkResource.plmn); assertNull(emSystemFailure.getAdditionalNetworkResource()); assertNull(emSystemFailure.getExtensionContainer()); p = getDataSystemFailureFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.systemFailure); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSystemFailure()); emSystemFailure = em.getEmSystemFailure(); assertEquals(emSystemFailure.getMapProtocolVersion(), 3); assertEquals(emSystemFailure.getNetworkResource(), NetworkResource.vlr); assertEquals(emSystemFailure.getAdditionalNetworkResource(), AdditionalNetworkResource.gsmSCF); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emAbsentSubscriberSMImpl.getExtensionContainer())); p = getDataCallBarred(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.callBarred); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmCallBarred()); MAPErrorMessageCallBarred emCallBarred = em.getEmCallBarred(); assertEquals(emCallBarred.getMapProtocolVersion(), 3); assertEquals(emCallBarred.getCallBarringCause(), CallBarringCause.operatorBarring); assertEquals((boolean) emCallBarred.getUnauthorisedMessageOriginator(), false); assertNull(emCallBarred.getExtensionContainer()); p = getDataCallBarredFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.callBarred); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmCallBarred()); emCallBarred = em.getEmCallBarred(); assertEquals(emCallBarred.getMapProtocolVersion(), 3); assertEquals(emCallBarred.getCallBarringCause(), CallBarringCause.operatorBarring); assertEquals((boolean) emCallBarred.getUnauthorisedMessageOriginator(), true); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emCallBarred.getExtensionContainer())); p = getDataFacilityNotSupFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.facilityNotSupported); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmFacilityNotSup()); MAPErrorMessageFacilityNotSup emFacilityNotSup = em.getEmFacilityNotSup(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emFacilityNotSup.getExtensionContainer())); assertEquals((boolean) emFacilityNotSup.getShapeOfLocationEstimateNotSupported(), true); assertEquals((boolean) emFacilityNotSup.getNeededLcsCapabilityNotSupportedInServingNode(), true); p = getDataUnknownSubscriberFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.unknownSubscriber); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmUnknownSubscriber()); MAPErrorMessageUnknownSubscriber emUnknownSubscriber = em.getEmUnknownSubscriber(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emUnknownSubscriber.getExtensionContainer())); assertEquals(emUnknownSubscriber.getUnknownSubscriberDiagnostic(), UnknownSubscriberDiagnostic.gprsSubscriptionUnknown); p = getDataSubscriberBusyForMTSMSFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.subscriberBusyForMTSMS); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSubscriberBusyForMtSms()); MAPErrorMessageSubscriberBusyForMtSms emSubscriberBusyForMtSms = em.getEmSubscriberBusyForMtSms(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emSubscriberBusyForMtSms.getExtensionContainer())); assertEquals((boolean) emSubscriberBusyForMtSms.getGprsConnectionSuspended(), true); p = getDataAbsentSubscriberFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.absentSubscriber); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmAbsentSubscriber()); MAPErrorMessageAbsentSubscriber emAbsentSubscriber = em.getEmAbsentSubscriber(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emAbsentSubscriber.getExtensionContainer())); assertEquals(emAbsentSubscriber.getAbsentSubscriberReason(), AbsentSubscriberReason.purgedMS); assertNull(emAbsentSubscriber.getMwdSet()); p = getDataAbsentSubscriberV1(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.absentSubscriber); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmAbsentSubscriber()); emAbsentSubscriber = em.getEmAbsentSubscriber(); assertNull(emAbsentSubscriber.getExtensionContainer()); assertNull(emAbsentSubscriber.getAbsentSubscriberReason()); assertTrue(emAbsentSubscriber.getMwdSet()); p = getDataUnauthorizedLCSClientFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.unauthorizedLCSClient); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmUnauthorizedLCSClient()); MAPErrorMessageUnauthorizedLCSClient emUnauthorizedLCSClient = em.getEmUnauthorizedLCSClient(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emUnauthorizedLCSClient.getExtensionContainer())); assertEquals(emUnauthorizedLCSClient.getUnauthorizedLCSClientDiagnostic(), UnauthorizedLCSClientDiagnostic.callToClientNotSetup); p = getDataPositionMethodFailureFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.positionMethodFailure); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmPositionMethodFailure()); MAPErrorMessagePositionMethodFailure emPositionMethodFailure = em.getEmPositionMethodFailure(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emPositionMethodFailure.getExtensionContainer())); assertEquals(emPositionMethodFailure.getPositionMethodFailureDiagnostic(), PositionMethodFailureDiagnostic.locationProcedureNotCompleted); p = getDataBusySubscriberFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.busySubscriber); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmBusySubscriber()); MAPErrorMessageBusySubscriber emBusySubscriber = em.getEmBusySubscriber(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emBusySubscriber.getExtensionContainer())); assertTrue(emBusySubscriber.getCcbsPossible()); assertTrue(emBusySubscriber.getCcbsBusy()); p = getDataCUGRejectFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.cugReject); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmCUGReject()); MAPErrorMessageCUGReject emCUGReject = em.getEmCUGReject(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emCUGReject.getExtensionContainer())); assertEquals(emCUGReject.getCUGRejectCause(), CUGRejectCause.subscriberNotMemberOfCUG); p = getDataRoamingNotAllowedFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.roamingNotAllowed); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmRoamingNotAllowed()); MAPErrorMessageRoamingNotAllowed emRoamingNotAllowed = em.getEmRoamingNotAllowed(); assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(emRoamingNotAllowed.getExtensionContainer())); assertEquals(emRoamingNotAllowed.getRoamingNotAllowedCause(), RoamingNotAllowedCause.plmnRoamingNotAllowed); assertEquals(emRoamingNotAllowed.getAdditionalRoamingNotAllowedCause(), AdditionalRoamingNotAllowedCause.supportedRATTypesNotAllowed); p = getDataSsErrorStatusFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.ssErrorStatus); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSsErrorStatus()); MAPErrorMessageSsErrorStatus emSsErrorStatus = em.getEmSsErrorStatus(); assertFalse(emSsErrorStatus.getQBit()); assertTrue(emSsErrorStatus.getPBit()); assertTrue(emSsErrorStatus.getRBit()); assertFalse(emSsErrorStatus.getABit()); assertEquals(emSsErrorStatus.getData(), 6); p = getDataSsIncompatibilityFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.ssIncompatibility); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmSsIncompatibility()); MAPErrorMessageSsIncompatibility emSsIncompatibility = em.getEmSsIncompatibility(); assertEquals(emSsIncompatibility.getSSCode().getSupplementaryCodeValue(), SupplementaryCodeValue.cfu); assertEquals(emSsIncompatibility.getBasicService().getTeleservice().getTeleserviceCodeValue(), TeleserviceCodeValue.telephony); assertTrue(emSsIncompatibility.getSSStatus().getQBit()); assertFalse(emSsIncompatibility.getSSStatus().getPBit()); assertFalse(emSsIncompatibility.getSSStatus().getRBit()); assertTrue(emSsIncompatibility.getSSStatus().getABit()); p = getDataPwRegistrationFailureFull(); em = (MAPErrorMessageImpl) fact.createMessageFromErrorCode((long) MAPErrorCode.pwRegistrationFailure); ais = new AsnInputStream(p.getData(), p.getTagClass(), p.isPrimitive(), p.getTag()); em.decodeData(ais, p.getData().length); assertTrue(em.isEmPwRegistrationFailure()); MAPErrorMessagePwRegistrationFailure emPwRegistrationFailure = em.getEmPwRegistrationFailure(); assertEquals(emPwRegistrationFailure.getPWRegistrationFailureCause(), PWRegistrationFailureCause.newPasswordsMismatch); } @Test(groups = { "functional.encode", "dialog.message" }) public void testEncode() throws Exception { MAPErrorMessageFactoryImpl fact = new MAPErrorMessageFactoryImpl(); MAPErrorMessageImpl em = (MAPErrorMessageImpl) fact.createMAPErrorMessageExtensionContainer(36L, MAPExtensionContainerTest.GetTestExtensionContainer()); AsnOutputStream aos = new AsnOutputStream(); em.encodeData(aos); Parameter p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataExtContainerFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSMDeliveryFailure(3, SMEnumeratedDeliveryFailureCause.invalidSMEAddress, null, null); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSmDeliveryFailure(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSMDeliveryFailure(3, SMEnumeratedDeliveryFailureCause.scCongestion, new byte[] { 1, 3, 5, 7, 9 }, MAPExtensionContainerTest.GetTestExtensionContainer()); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSmDeliveryFailureFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSMDeliveryFailure(1, SMEnumeratedDeliveryFailureCause.equipmentProtocolError, null, null); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSmDeliveryFailureV1(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageAbsentSubscriberSM(AbsentSubscriberDiagnosticSM.IMSIDetached, null, null); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataAbsentSubscriberSM(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageAbsentSubscriberSM( AbsentSubscriberDiagnosticSM.NoPagingResponseViaTheMSC, MAPExtensionContainerTest.GetTestExtensionContainer(), AbsentSubscriberDiagnosticSM.GPRSDetached); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataAbsentSubscriberSMFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSystemFailure(2, NetworkResource.plmn, null, null); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSystemFailure(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSystemFailure(3, NetworkResource.vlr, AdditionalNetworkResource.gsmSCF, MAPExtensionContainerTest.GetTestExtensionContainer()); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSystemFailureFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageCallBarred(3L, CallBarringCause.operatorBarring, null, null); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataCallBarred(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageCallBarred(3L, CallBarringCause.operatorBarring, MAPExtensionContainerTest.GetTestExtensionContainer(), true); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataCallBarredFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageFacilityNotSup( MAPExtensionContainerTest.GetTestExtensionContainer(), true, true); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataFacilityNotSupFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageUnknownSubscriber( MAPExtensionContainerTest.GetTestExtensionContainer(), UnknownSubscriberDiagnostic.gprsSubscriptionUnknown); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataUnknownSubscriberFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSubscriberBusyForMtSms( MAPExtensionContainerTest.GetTestExtensionContainer(), true); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSubscriberBusyForMTSMSFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageAbsentSubscriber( MAPExtensionContainerTest.GetTestExtensionContainer(), AbsentSubscriberReason.purgedMS); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataAbsentSubscriberFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageAbsentSubscriber(true); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataAbsentSubscriberV1(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageUnauthorizedLCSClient( UnauthorizedLCSClientDiagnostic.callToClientNotSetup, MAPExtensionContainerTest.GetTestExtensionContainer()); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataUnauthorizedLCSClientFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessagePositionMethodFailure( PositionMethodFailureDiagnostic.locationProcedureNotCompleted, MAPExtensionContainerTest.GetTestExtensionContainer()); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataPositionMethodFailureFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageBusySubscriber( MAPExtensionContainerTest.GetTestExtensionContainer(), true, true); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataBusySubscriberFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageCUGReject(CUGRejectCause.subscriberNotMemberOfCUG, MAPExtensionContainerTest.GetTestExtensionContainer()); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataCUGRejectFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageRoamingNotAllowed(RoamingNotAllowedCause.plmnRoamingNotAllowed, MAPExtensionContainerTest.GetTestExtensionContainer(), AdditionalRoamingNotAllowedCause.supportedRATTypesNotAllowed); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataRoamingNotAllowedFull(), p); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSsErrorStatus(false, true, true, false); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSsErrorStatusFull(), p); SSCode ssCode = new SSCodeImpl(SupplementaryCodeValue.cfu); TeleserviceCode teleservice = new TeleserviceCodeImpl(TeleserviceCodeValue.telephony); BasicServiceCode basicService = new BasicServiceCodeImpl(teleservice); SSStatus ssStatus = new SSStatusImpl(true, false, false, true); em = (MAPErrorMessageImpl) fact.createMAPErrorMessageSsIncompatibility(ssCode, basicService, ssStatus); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataSsIncompatibilityFull(), p); em = (MAPErrorMessageImpl) fact .createMAPErrorMessagePwRegistrationFailure(PWRegistrationFailureCause.newPasswordsMismatch); aos = new AsnOutputStream(); em.encodeData(aos); p = new ParameterImpl(); p.setTagClass(em.getTagClass()); p.setTag(em.getTag()); p.setPrimitive(em.getIsPrimitive()); p.setData(aos.toByteArray()); assertParameter(getDataPwRegistrationFailureFull(), p); } @Test(groups = { "functional.xml.serialize", "dialog.message" }) public void testXMLSerialize() throws Exception { MAPErrorMessageFactoryImpl fact = new MAPErrorMessageFactoryImpl(); // MAPErrorMessageAbsentSubscriber MAPErrorMessageAbsentSubscriberImpl em = (MAPErrorMessageAbsentSubscriberImpl) fact .createMAPErrorMessageAbsentSubscriber(MAPExtensionContainerTest.GetTestExtensionContainer(), AbsentSubscriberReason.purgedMS); em.setMwdSet(true); ByteArrayOutputStream baos = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(baos); // writer.setBinding(binding); // Optional. writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em, "mapErrorMessageAbsentSubscriber", MAPErrorMessageAbsentSubscriberImpl.class); writer.close(); byte[] rawData = baos.toByteArray(); String serializedEvent = new String(rawData); System.out.println(serializedEvent); ByteArrayInputStream bais = new ByteArrayInputStream(rawData); XMLObjectReader reader = XMLObjectReader.newInstance(bais); MAPErrorMessageAbsentSubscriberImpl copy = reader.read("mapErrorMessageAbsentSubscriber", MAPErrorMessageAbsentSubscriberImpl.class); assertEquals(copy.getAbsentSubscriberReason(), em.getAbsentSubscriberReason()); assertEquals(copy.getExtensionContainer(), em.getExtensionContainer()); assertEquals(copy.getMwdSet(), em.getMwdSet()); // assertNull(em.getMwdSet()); // MAPErrorMessageAbsentSubscriberSM MAPErrorMessageAbsentSubscriberSMImpl em1 = (MAPErrorMessageAbsentSubscriberSMImpl) fact .createMAPErrorMessageAbsentSubscriberSM(AbsentSubscriberDiagnosticSM.IMSIDetached, MAPExtensionContainerTest.GetTestExtensionContainer(), AbsentSubscriberDiagnosticSM.MSPurgedForGPRS); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em1, "mapErrorMessageAbsentSubscriberSM", MAPErrorMessageAbsentSubscriberSMImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageAbsentSubscriberSMImpl copy1 = reader.read("mapErrorMessageAbsentSubscriberSM", MAPErrorMessageAbsentSubscriberSMImpl.class); assertEquals(copy1.getAbsentSubscriberDiagnosticSM(), em1.getAbsentSubscriberDiagnosticSM()); assertEquals(copy1.getAdditionalAbsentSubscriberDiagnosticSM(), em1.getAdditionalAbsentSubscriberDiagnosticSM()); assertEquals(copy1.getExtensionContainer(), em1.getExtensionContainer()); // MAPErrorMessageBusySubscriber MAPErrorMessageBusySubscriberImpl em2 = (MAPErrorMessageBusySubscriberImpl) fact.createMAPErrorMessageBusySubscriber( MAPExtensionContainerTest.GetTestExtensionContainer(), true, true); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em2, "mapErrorMessageBusySubscriber", MAPErrorMessageBusySubscriberImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageBusySubscriberImpl copy2 = reader.read("mapErrorMessageBusySubscriber", MAPErrorMessageBusySubscriberImpl.class); assertEquals(copy2.getCcbsPossible(), em2.getCcbsPossible()); assertEquals(copy2.getCcbsBusy(), em2.getCcbsBusy()); // MAPErrorMessageCallBarred MAPErrorMessageCallBarredImpl em3 = (MAPErrorMessageCallBarredImpl) fact.createMAPErrorMessageCallBarred(3L, CallBarringCause.operatorBarring, null, null); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em3, "mapErrorMessageCallBarred", MAPErrorMessageCallBarredImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageCallBarredImpl copy3 = reader.read("mapErrorMessageCallBarred", MAPErrorMessageCallBarredImpl.class); assertEquals(copy3.getMapProtocolVersion(), em3.getMapProtocolVersion()); assertEquals(copy3.getCallBarringCause(), em3.getCallBarringCause()); // MAPErrorMessageCUGReject MAPErrorMessageCUGRejectImpl em4 = (MAPErrorMessageCUGRejectImpl) fact.createMAPErrorMessageCUGReject( CUGRejectCause.subscriberNotMemberOfCUG, MAPExtensionContainerTest.GetTestExtensionContainer()); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em4, "mapErrorMessageCUGReject", MAPErrorMessageCUGRejectImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageCUGRejectImpl copy4 = reader.read("mapErrorMessageCUGReject", MAPErrorMessageCUGRejectImpl.class); assertEquals(copy4.getCUGRejectCause(), em4.getCUGRejectCause()); assertEquals(copy4.getExtensionContainer(), em4.getExtensionContainer()); // MAPErrorMessageExtensionContainer MAPErrorMessageExtensionContainerImpl em5 = (MAPErrorMessageExtensionContainerImpl) fact .createMAPErrorMessageExtensionContainer(36L, MAPExtensionContainerTest.GetTestExtensionContainer()); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em5, "mapErrorMessageExtensionContainer", MAPErrorMessageExtensionContainerImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageExtensionContainerImpl copy5 = reader.read("mapErrorMessageExtensionContainer", MAPErrorMessageExtensionContainerImpl.class); assertEquals(copy5.getExtensionContainer(), em5.getExtensionContainer()); assertEquals(copy5.getErrorCode(), em5.getErrorCode()); // MAPErrorMessageFacilityNotSup MAPErrorMessageFacilityNotSupImpl em6 = (MAPErrorMessageFacilityNotSupImpl) fact.createMAPErrorMessageFacilityNotSup( MAPExtensionContainerTest.GetTestExtensionContainer(), true, true); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em6, "mapErrorMessageFacilityNotSup", MAPErrorMessageFacilityNotSupImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageFacilityNotSupImpl copy6 = reader.read("mapErrorMessageFacilityNotSup", MAPErrorMessageFacilityNotSupImpl.class); assertEquals(copy6.getShapeOfLocationEstimateNotSupported(), em6.getShapeOfLocationEstimateNotSupported()); assertEquals(copy6.getNeededLcsCapabilityNotSupportedInServingNode(), em6.getNeededLcsCapabilityNotSupportedInServingNode()); assertEquals(copy6.getErrorCode(), em6.getErrorCode()); assertEquals(copy6.getExtensionContainer(), em6.getExtensionContainer()); // MAPErrorMessageParameterless MAPErrorMessageParameterlessImpl em7 = (MAPErrorMessageParameterlessImpl) fact.createMAPErrorMessageParameterless(1l); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em7, "mapErrorMessageParameterless", MAPErrorMessageParameterlessImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageParameterlessImpl copy7 = reader.read("mapErrorMessageParameterless", MAPErrorMessageParameterlessImpl.class); assertEquals(copy7.isEmParameterless(), em7.isEmParameterless()); assertEquals(copy7.getErrorCode(), em7.getErrorCode()); // MAPErrorMessagePositionMethodFailure MAPErrorMessagePositionMethodFailureImpl em8 = (MAPErrorMessagePositionMethodFailureImpl) fact .createMAPErrorMessagePositionMethodFailure(PositionMethodFailureDiagnostic.locationProcedureNotCompleted, MAPExtensionContainerTest.GetTestExtensionContainer()); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em8, "mapErrorMessagePositionMethodFailure", MAPErrorMessagePositionMethodFailureImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessagePositionMethodFailureImpl copy8 = reader.read("mapErrorMessagePositionMethodFailure", MAPErrorMessagePositionMethodFailureImpl.class); assertEquals(copy8.getErrorCode(), em8.getErrorCode()); assertEquals(copy8.getPositionMethodFailureDiagnostic(), em8.getPositionMethodFailureDiagnostic()); assertEquals(copy8.getExtensionContainer(), em8.getExtensionContainer()); // MAPErrorMessagePwRegistrationFailure MAPErrorMessagePwRegistrationFailureImpl em9 = (MAPErrorMessagePwRegistrationFailureImpl) fact .createMAPErrorMessagePwRegistrationFailure(PWRegistrationFailureCause.newPasswordsMismatch); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em9, "mapErrorMessagePwRegistrationFailure", MAPErrorMessagePwRegistrationFailureImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessagePwRegistrationFailureImpl copy9 = reader.read("mapErrorMessagePwRegistrationFailure", MAPErrorMessagePwRegistrationFailureImpl.class); assertEquals(copy9.getErrorCode(), em9.getErrorCode()); assertEquals(copy9.getPWRegistrationFailureCause(), em9.getPWRegistrationFailureCause()); // AdditionalRoamingNotAllowedCause MAPErrorMessageRoamingNotAllowedImpl em10 = (MAPErrorMessageRoamingNotAllowedImpl) fact .createMAPErrorMessageRoamingNotAllowed(RoamingNotAllowedCause.plmnRoamingNotAllowed, MAPExtensionContainerTest.GetTestExtensionContainer(), AdditionalRoamingNotAllowedCause.supportedRATTypesNotAllowed); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em10, "mapErrorMessageRoamingNotAllowed", MAPErrorMessageRoamingNotAllowedImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageRoamingNotAllowedImpl copy10 = reader.read("mapErrorMessageRoamingNotAllowed", MAPErrorMessageRoamingNotAllowedImpl.class); assertEquals(copy10.getErrorCode(), em10.getErrorCode()); assertEquals(copy10.getRoamingNotAllowedCause(), em10.getRoamingNotAllowedCause()); assertEquals(copy10.getAdditionalRoamingNotAllowedCause(), em10.getAdditionalRoamingNotAllowedCause()); assertEquals(copy10.getExtensionContainer(), em10.getExtensionContainer()); // MAPErrorMessageSMDeliveryFailureImpl MAPErrorMessageSMDeliveryFailureImpl em11 = (MAPErrorMessageSMDeliveryFailureImpl) fact .createMAPErrorMessageSMDeliveryFailure(3, SMEnumeratedDeliveryFailureCause.invalidSMEAddress, null, null); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em11, "mapErrorMessageSMDeliveryFailure", MAPErrorMessageSMDeliveryFailureImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageSMDeliveryFailureImpl copy11 = reader.read("mapErrorMessageSMDeliveryFailure", MAPErrorMessageSMDeliveryFailureImpl.class); assertEquals(copy11.getErrorCode(), em11.getErrorCode()); assertEquals(copy11.getSMEnumeratedDeliveryFailureCause(), em11.getSMEnumeratedDeliveryFailureCause()); assertEquals(copy11.getMapProtocolVersion(), em11.getMapProtocolVersion()); // MAPErrorMessageSsErrorStatus MAPErrorMessageSsErrorStatusImpl em12 = (MAPErrorMessageSsErrorStatusImpl) fact.createMAPErrorMessageSsErrorStatus( false, true, true, false); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em12, "mapErrorMessageSsErrorStatus", MAPErrorMessageSsErrorStatusImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageSsErrorStatusImpl copy12 = reader.read("mapErrorMessageSsErrorStatus", MAPErrorMessageSsErrorStatusImpl.class); assertEquals(copy12.getErrorCode(), em12.getErrorCode()); assertEquals(copy12.getData(), em12.getData()); assertEquals(copy12.getQBit(), em12.getQBit()); assertEquals(copy12.getPBit(), em12.getPBit()); assertEquals(copy12.getRBit(), em12.getRBit()); assertEquals(copy12.getABit(), em12.getABit()); // MAPErrorMessageSsIncompatibility SSCode ssCode = new SSCodeImpl(SupplementaryCodeValue.cfu); TeleserviceCode teleservice = new TeleserviceCodeImpl(TeleserviceCodeValue.telephony); BasicServiceCode basicService = new BasicServiceCodeImpl(teleservice); SSStatus ssStatus = new SSStatusImpl(true, false, false, true); MAPErrorMessageSsIncompatibilityImpl em13 = (MAPErrorMessageSsIncompatibilityImpl) fact .createMAPErrorMessageSsIncompatibility(ssCode, basicService, ssStatus); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em13, "mapErrorMessageSsIncompatibility", MAPErrorMessageSsIncompatibilityImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageSsIncompatibilityImpl copy13 = reader.read("mapErrorMessageSsIncompatibility", MAPErrorMessageSsIncompatibilityImpl.class); assertEquals(copy13.getErrorCode(), em13.getErrorCode()); assertEquals(copy13.getSSCode(), em13.getSSCode()); assertEquals(copy13.getBasicService(), em13.getBasicService()); // MAPErrorMessageSubscriberBusyForMtSms MAPErrorMessageSubscriberBusyForMtSmsImpl em14 = (MAPErrorMessageSubscriberBusyForMtSmsImpl) fact .createMAPErrorMessageSubscriberBusyForMtSms(MAPExtensionContainerTest.GetTestExtensionContainer(), true); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em14, "mapErrorMessageSubscriberBusyForMtSms", MAPErrorMessageSubscriberBusyForMtSmsImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageSubscriberBusyForMtSmsImpl copy14 = reader.read("mapErrorMessageSubscriberBusyForMtSms", MAPErrorMessageSubscriberBusyForMtSmsImpl.class); assertEquals(copy14.getErrorCode(), em14.getErrorCode()); assertEquals(copy14.getGprsConnectionSuspended(), em14.getGprsConnectionSuspended()); // MAPErrorMessageSystemFailure MAPErrorMessageSystemFailureImpl em15 = (MAPErrorMessageSystemFailureImpl) fact.createMAPErrorMessageSystemFailure(2, NetworkResource.plmn, null, null); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em15, "mapErrorMessageSystemFailure", MAPErrorMessageSystemFailureImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageSystemFailureImpl copy15 = reader.read("mapErrorMessageSystemFailure", MAPErrorMessageSystemFailureImpl.class); assertEquals(copy15.getErrorCode(), em15.getErrorCode()); assertEquals(copy15.getMapProtocolVersion(), em15.getMapProtocolVersion()); assertEquals(copy15.getNetworkResource(), em15.getNetworkResource()); assertEquals(copy15.getAdditionalNetworkResource(), em15.getAdditionalNetworkResource()); // MAPErrorMessageUnauthorizedLCSClient MAPErrorMessageUnauthorizedLCSClientImpl em16 = (MAPErrorMessageUnauthorizedLCSClientImpl) fact .createMAPErrorMessageUnauthorizedLCSClient(UnauthorizedLCSClientDiagnostic.callToClientNotSetup, MAPExtensionContainerTest.GetTestExtensionContainer()); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em16, "mapErrorMessageUnauthorizedLCSClient", MAPErrorMessageUnauthorizedLCSClientImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageUnauthorizedLCSClientImpl copy16 = reader.read("mapErrorMessageUnauthorizedLCSClient", MAPErrorMessageUnauthorizedLCSClientImpl.class); assertEquals(copy16.getErrorCode(), em16.getErrorCode()); assertEquals(copy16.getUnauthorizedLCSClientDiagnostic(), em16.getUnauthorizedLCSClientDiagnostic()); assertEquals(copy16.getExtensionContainer(), em16.getExtensionContainer()); // MAPErrorMessageUnknownSubscriberImpl MAPErrorMessageUnknownSubscriberImpl em17 = (MAPErrorMessageUnknownSubscriberImpl) fact .createMAPErrorMessageUnknownSubscriber(MAPExtensionContainerTest.GetTestExtensionContainer(), UnknownSubscriberDiagnostic.gprsSubscriptionUnknown); baos = new ByteArrayOutputStream(); writer = XMLObjectWriter.newInstance(baos); writer.setIndentation("\t"); // Optional (use tabulation for // indentation). writer.write(em17, "mapErrorMessageUnknownSubscriber", MAPErrorMessageUnknownSubscriberImpl.class); writer.close(); rawData = baos.toByteArray(); serializedEvent = new String(rawData); System.out.println(serializedEvent); bais = new ByteArrayInputStream(rawData); reader = XMLObjectReader.newInstance(bais); MAPErrorMessageUnknownSubscriberImpl copy17 = reader.read("mapErrorMessageUnknownSubscriber", MAPErrorMessageUnknownSubscriberImpl.class); assertEquals(copy17.getErrorCode(), em17.getErrorCode()); assertEquals(copy17.getUnknownSubscriberDiagnostic(), em17.getUnknownSubscriberDiagnostic()); assertEquals(copy17.getExtensionContainer(), em17.getExtensionContainer()); } private void assertParameter(Parameter p2, Parameter p1) { assertNotNull(p1); assertNotNull(p2); assertEquals(p2.getTagClass(), p1.getTagClass()); assertEquals(p2.getTag(), p1.getTag()); assertEquals(p2.isPrimitive(), p1.isPrimitive()); assertTrue(Arrays.equals(p1.getData(), p2.getData())); } }