/* * 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.smsc.slee.resources.persistence; import java.util.ArrayList; import org.mobicents.protocols.ss7.map.api.MAPApplicationContext; import org.mobicents.protocols.ss7.map.api.MAPException; import org.mobicents.protocols.ss7.map.api.MAPMessage; import org.mobicents.protocols.ss7.map.api.MAPProvider; import org.mobicents.protocols.ss7.map.api.MAPServiceBase; import org.mobicents.protocols.ss7.map.api.dialog.MAPDialogState; import org.mobicents.protocols.ss7.map.api.dialog.MAPUserAbortChoice; import org.mobicents.protocols.ss7.map.api.dialog.Reason; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessage; import org.mobicents.protocols.ss7.map.api.primitives.AddressString; 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.subscriberManagement.TeleserviceCode; import org.mobicents.protocols.ss7.map.api.service.sms.AlertReason; import org.mobicents.protocols.ss7.map.api.service.sms.LocationInfoWithLMSI; import org.mobicents.protocols.ss7.map.api.service.sms.MAPDialogSms; import org.mobicents.protocols.ss7.map.api.service.sms.MWStatus; import org.mobicents.protocols.ss7.map.api.service.sms.SMDeliveryOutcome; import org.mobicents.protocols.ss7.map.api.service.sms.SM_RP_DA; import org.mobicents.protocols.ss7.map.api.service.sms.SM_RP_MTI; import org.mobicents.protocols.ss7.map.api.service.sms.SM_RP_OA; import org.mobicents.protocols.ss7.map.api.service.sms.SM_RP_SMEA; import org.mobicents.protocols.ss7.map.api.service.sms.SmsSignalInfo; import org.mobicents.protocols.ss7.map.service.sms.ForwardShortMessageRequestImpl; import org.mobicents.protocols.ss7.map.service.sms.MtForwardShortMessageRequestImpl; import org.mobicents.protocols.ss7.map.service.sms.ReportSMDeliveryStatusRequestImpl; import org.mobicents.protocols.ss7.map.service.sms.SendRoutingInfoForSMRequestImpl; import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress; import org.mobicents.protocols.ss7.tcap.api.MessageType; import org.mobicents.protocols.ss7.tcap.asn.comp.Invoke; import org.mobicents.protocols.ss7.tcap.asn.comp.Problem; import org.mobicents.protocols.ss7.tcap.asn.comp.ReturnResult; import org.mobicents.protocols.ss7.tcap.asn.comp.ReturnResultLast; /** * * @author sergey vetyutnev * */ public class MAPDialogSmsProxy implements MAPDialogSms { private int responseCount = 0; private ArrayList<Long> errorList = new ArrayList<Long>(); private MAPServiceBaseProxy mapService = null; private MAPProvider mapProvider = null; private MAPApplicationContext appCntx; private SccpAddress origAddress; private SccpAddress destAddress; private ArrayList<MAPTestEvent> eventList = new ArrayList<MAPTestEvent>(); public MAPDialogSmsProxy(MAPServiceBaseProxy mapService, MAPApplicationContext appCntx, SccpAddress origAddress, SccpAddress destAddress) { this.mapService = mapService; this.mapProvider = mapService.getMAPProvider(); this.appCntx = appCntx; this.origAddress = origAddress; this.destAddress = destAddress; } public ArrayList<MAPTestEvent> getEventList() { return eventList; } public int getResponseCount() { return responseCount; } public ArrayList<Long> getErrorList() { return errorList; } @Override public MAPDialogState getState() { // TODO Auto-generated method stub return null; } @Override public SccpAddress getLocalAddress() { return this.origAddress; } @Override public void setLocalAddress(SccpAddress localAddress) { this.origAddress = localAddress; } @Override public SccpAddress getRemoteAddress() { return this.destAddress; } @Override public void setRemoteAddress(SccpAddress remoteAddress) { this.destAddress = remoteAddress; } @Override public void setReturnMessageOnError(boolean val) { // TODO Auto-generated method stub } @Override public boolean getReturnMessageOnError() { // TODO Auto-generated method stub return false; } @Override public MessageType getTCAPMessageType() { // TODO Auto-generated method stub return null; } @Override public AddressString getReceivedOrigReference() { // TODO Auto-generated method stub return null; } @Override public AddressString getReceivedDestReference() { // TODO Auto-generated method stub return null; } @Override public MAPExtensionContainer getReceivedExtensionContainer() { // TODO Auto-generated method stub return null; } @Override public void release() { // TODO Auto-generated method stub } @Override public void keepAlive() { // TODO Auto-generated method stub } @Override public Long getLocalDialogId() { // TODO Auto-generated method stub return null; } @Override public Long getRemoteDialogId() { // TODO Auto-generated method stub return null; } @Override public MAPServiceBase getService() { return mapService; } @Override public void setExtentionContainer(MAPExtensionContainer extContainer) { // TODO Auto-generated method stub } @Override public void send() throws MAPException { // TODO Auto-generated method stub this.eventList.add(new MAPTestEvent(MAPTestEventType.send, null)); } @Override public void close(boolean prearrangedEnd) throws MAPException { // TODO Auto-generated method stub } @Override public void sendDelayed() throws MAPException { // TODO Auto-generated method stub } @Override public void closeDelayed(boolean prearrangedEnd) throws MAPException { // TODO Auto-generated method stub } @Override public void abort(MAPUserAbortChoice mapUserAbortChoice) throws MAPException { // TODO Auto-generated method stub } @Override public void refuse(Reason reason) throws MAPException { // TODO Auto-generated method stub } @Override public void processInvokeWithoutAnswer(Long invokeId) { // TODO Auto-generated method stub } @Override public void sendInvokeComponent(Invoke invoke) throws MAPException { // TODO Auto-generated method stub } @Override public void sendReturnResultComponent(ReturnResult returnResult) throws MAPException { // TODO Auto-generated method stub } @Override public void sendReturnResultLastComponent(ReturnResultLast returnResultLast) throws MAPException { // TODO Auto-generated method stub } @Override public void sendErrorComponent(Long invokeId, MAPErrorMessage mapErrorMessage) throws MAPException { this.errorList.add(mapErrorMessage.getErrorCode()); } @Override public void sendRejectComponent(Long invokeId, Problem problem) throws MAPException { // TODO Auto-generated method stub } @Override public void resetInvokeTimer(Long invokeId) throws MAPException { // TODO Auto-generated method stub } @Override public boolean cancelInvocation(Long invokeId) throws MAPException { this.eventList.add(new MAPTestEvent(MAPTestEventType.cancelInvoke, null)); return false; } @Override public Object getUserObject() { // TODO Auto-generated method stub return null; } @Override public void setUserObject(Object userObject) { // TODO Auto-generated method stub } @Override public MAPApplicationContext getApplicationContext() { return this.appCntx; } public void setApplicationContext(MAPApplicationContext act) { this.appCntx = act; } @Override public int getMaxUserDataLength() { // TODO Auto-generated method stub return 250; } @Override public int getMessageUserDataLengthOnSend() throws MAPException { // TODO Auto-generated method stub return forwardSMLen; } @Override public int getMessageUserDataLengthOnClose(boolean prearrangedEnd) throws MAPException { // TODO Auto-generated method stub return 0; } @Override public void addEricssonData(IMSI imsi, AddressString vlrNo) { // TODO Auto-generated method stub } private int forwardSMLen; private void setForwardSMLen(int len) { forwardSMLen = len + 100; } @Override public Long addForwardShortMessageRequest(SM_RP_DA sm_RP_DA, SM_RP_OA sm_RP_OA, SmsSignalInfo sm_RP_UI, boolean moreMessagesToSend) throws MAPException { // TODO Auto-generated method stub byte[] data = sm_RP_UI.getData(); setForwardSMLen(data.length); ForwardShortMessageRequestImpl msg = new ForwardShortMessageRequestImpl(sm_RP_DA, sm_RP_OA, sm_RP_UI, moreMessagesToSend); this.eventList.add(new MAPTestEvent(MAPTestEventType.componentAdded, msg)); return 0L; } @Override public Long addForwardShortMessageRequest(int customInvokeTimeout, SM_RP_DA sm_RP_DA, SM_RP_OA sm_RP_OA, SmsSignalInfo sm_RP_UI, boolean moreMessagesToSend) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addForwardShortMessageResponse(long invokeId) throws MAPException { responseCount++; } @Override public Long addMoForwardShortMessageRequest(SM_RP_DA sm_RP_DA, SM_RP_OA sm_RP_OA, SmsSignalInfo sm_RP_UI, MAPExtensionContainer extensionContainer, IMSI imsi) throws MAPException { // TODO Auto-generated method stub return null; } @Override public Long addMoForwardShortMessageRequest(int customInvokeTimeout, SM_RP_DA sm_RP_DA, SM_RP_OA sm_RP_OA, SmsSignalInfo sm_RP_UI, MAPExtensionContainer extensionContainer, IMSI imsi) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addMoForwardShortMessageResponse(long invokeId, SmsSignalInfo sm_RP_UI, MAPExtensionContainer extensionContainer) throws MAPException { responseCount++; } @Override public Long addMtForwardShortMessageRequest(SM_RP_DA sm_RP_DA, SM_RP_OA sm_RP_OA, SmsSignalInfo sm_RP_UI, boolean moreMessagesToSend, MAPExtensionContainer extensionContainer) throws MAPException { // TODO Auto-generated method stub byte[] data = sm_RP_UI.getData(); setForwardSMLen(data.length); MtForwardShortMessageRequestImpl msg = new MtForwardShortMessageRequestImpl(sm_RP_DA, sm_RP_OA, sm_RP_UI, moreMessagesToSend, extensionContainer); this.eventList.add(new MAPTestEvent(MAPTestEventType.componentAdded, msg)); return 0L; } @Override public Long addMtForwardShortMessageRequest(int customInvokeTimeout, SM_RP_DA sm_RP_DA, SM_RP_OA sm_RP_OA, SmsSignalInfo sm_RP_UI, boolean moreMessagesToSend, MAPExtensionContainer extensionContainer) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addMtForwardShortMessageResponse(long invokeId, SmsSignalInfo sm_RP_UI, MAPExtensionContainer extensionContainer) throws MAPException { // TODO Auto-generated method stub } @Override public Long addSendRoutingInfoForSMRequest(ISDNAddressString msisdn, boolean sm_RP_PRI, AddressString serviceCentreAddress, MAPExtensionContainer extensionContainer, boolean gprsSupportIndicator, SM_RP_MTI sM_RP_MTI, SM_RP_SMEA sM_RP_SMEA, TeleserviceCode teleservice) throws MAPException { SendRoutingInfoForSMRequestImpl msg = new SendRoutingInfoForSMRequestImpl(msisdn, sm_RP_PRI, serviceCentreAddress, extensionContainer, gprsSupportIndicator, sM_RP_MTI, sM_RP_SMEA, teleservice); this.eventList.add(new MAPTestEvent(MAPTestEventType.componentAdded, msg)); return 0L; } @Override public Long addSendRoutingInfoForSMRequest(int customInvokeTimeout, ISDNAddressString msisdn, boolean sm_RP_PRI, AddressString serviceCentreAddress, MAPExtensionContainer extensionContainer, boolean gprsSupportIndicator, SM_RP_MTI sM_RP_MTI, SM_RP_SMEA sM_RP_SMEA, TeleserviceCode teleservice) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addSendRoutingInfoForSMResponse(long invokeId, IMSI imsi, LocationInfoWithLMSI locationInfoWithLMSI, MAPExtensionContainer extensionContainer, Boolean mwdSet) throws MAPException { // TODO Auto-generated method stub } @Override public Long addReportSMDeliveryStatusRequest(ISDNAddressString msisdn, AddressString serviceCentreAddress, SMDeliveryOutcome sMDeliveryOutcome, Integer absentSubscriberDiagnosticSM, MAPExtensionContainer extensionContainer, boolean gprsSupportIndicator, boolean deliveryOutcomeIndicator, SMDeliveryOutcome additionalSMDeliveryOutcome, Integer additionalAbsentSubscriberDiagnosticSM) throws MAPException { ReportSMDeliveryStatusRequestImpl msg = new ReportSMDeliveryStatusRequestImpl(this.getApplicationContext().getApplicationContextVersion().getVersion(), msisdn, serviceCentreAddress, sMDeliveryOutcome, absentSubscriberDiagnosticSM, extensionContainer, gprsSupportIndicator, deliveryOutcomeIndicator, additionalSMDeliveryOutcome, additionalAbsentSubscriberDiagnosticSM); this.eventList.add(new MAPTestEvent(MAPTestEventType.componentAdded, msg)); return 0L; } @Override public Long addReportSMDeliveryStatusRequest(int customInvokeTimeout, ISDNAddressString msisdn, AddressString serviceCentreAddress, SMDeliveryOutcome sMDeliveryOutcome, Integer absentSubscriberDiagnosticSM, MAPExtensionContainer extensionContainer, boolean gprsSupportIndicator, boolean deliveryOutcomeIndicator, SMDeliveryOutcome additionalSMDeliveryOutcome, Integer additionalAbsentSubscriberDiagnosticSM) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addReportSMDeliveryStatusResponse(long invokeId, ISDNAddressString storedMSISDN, MAPExtensionContainer extensionContainer) throws MAPException { // TODO Auto-generated method stub } @Override public Long addInformServiceCentreRequest(ISDNAddressString storedMSISDN, MWStatus mwStatus, MAPExtensionContainer extensionContainer, Integer absentSubscriberDiagnosticSM, Integer additionalAbsentSubscriberDiagnosticSM) throws MAPException { // TODO Auto-generated method stub return null; } @Override public Long addInformServiceCentreRequest(int customInvokeTimeout, ISDNAddressString storedMSISDN, MWStatus mwStatus, MAPExtensionContainer extensionContainer, Integer absentSubscriberDiagnosticSM, Integer additionalAbsentSubscriberDiagnosticSM) throws MAPException { // TODO Auto-generated method stub return null; } @Override public Long addAlertServiceCentreRequest(ISDNAddressString msisdn, AddressString serviceCentreAddress) throws MAPException { // TODO Auto-generated method stub return null; } @Override public Long addAlertServiceCentreRequest(int customInvokeTimeout, ISDNAddressString msisdn, AddressString serviceCentreAddress) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addAlertServiceCentreResponse(long invokeId) throws MAPException { // TODO Auto-generated method stub } @Override public Long addReadyForSMRequest(IMSI imsi, AlertReason alertReason, boolean alertReasonIndicator, MAPExtensionContainer extensionContainer, boolean additionalAlertReasonIndicator) throws MAPException { // TODO Auto-generated method stub return null; } @Override public Long addReadyForSMRequest(int customInvokeTimeout, IMSI imsi, AlertReason alertReason, boolean alertReasonIndicator, MAPExtensionContainer extensionContainer, boolean additionalAlertReasonIndicator) throws MAPException { // TODO Auto-generated method stub return null; } @Override public void addReadyForSMResponse(long invokeId, MAPExtensionContainer extensionContainer) throws MAPException { // TODO Auto-generated method stub } @Override public Long addNoteSubscriberPresentRequest(IMSI imsi) throws MAPException { // TODO Auto-generated method stub return null; } @Override public Long addNoteSubscriberPresentRequest(int customInvokeTimeout, IMSI imsi) throws MAPException { // TODO Auto-generated method stub return null; } public enum MAPTestEventType { componentAdded, send, cancelInvoke, } public class MAPTestEvent { public MAPTestEventType testEventType; public MAPMessage event; public MAPTestEvent(MAPTestEventType testEventType, MAPMessage event) { this.testEventType = testEventType; this.event = event; } public String toString() { return "MAPTestEvent[" + testEventType + "]"; } } @Override public int getNetworkId() { // TODO Auto-generated method stub return 0; } @Override public void setNetworkId(int arg0) { // TODO Auto-generated method stub } }