TestSmppServerHandler.java

package fr.sii.ogham.testing.sms.simulator.cloudhopper;

import java.util.HashSet;
import java.util.Set;

import com.cloudhopper.smpp.SmppConstants;
import com.cloudhopper.smpp.SmppServerHandler;
import com.cloudhopper.smpp.SmppServerSession;
import com.cloudhopper.smpp.SmppSessionConfiguration;
import com.cloudhopper.smpp.impl.PollableSmppSessionHandler;
import com.cloudhopper.smpp.pdu.BaseBind;
import com.cloudhopper.smpp.pdu.BaseBindResp;
import com.cloudhopper.smpp.type.SmppProcessingException;

public class TestSmppServerHandler implements SmppServerHandler {
	private Set<SmppServerSession> sessions = new HashSet<>();
	private PollableSmppSessionHandler sessionHandler = new PollableSmppSessionHandler();

	private String systemId;
	private String password;

	public TestSmppServerHandler(String systemId, String password) {
		super();
		this.systemId = systemId;
		this.password = password;
	}

	@Override
	@SuppressWarnings("rawtypes")
	public void sessionBindRequested(Long sessionId, SmppSessionConfiguration sessionConfiguration, final BaseBind bindRequest) throws SmppProcessingException {
		// test name change of sessions
		sessionConfiguration.setName("Test1");

		if (!systemId.equals(bindRequest.getSystemId())) {
			throw new SmppProcessingException(SmppConstants.STATUS_INVSYSID);
		}

		if (!password.equals(bindRequest.getPassword())) {
			throw new SmppProcessingException(SmppConstants.STATUS_INVPASWD);
		}
	}

	@Override
	public void sessionCreated(Long sessionId, SmppServerSession session, BaseBindResp preparedBindResponse) {
		sessions.add(session);
		// need to do something it now (flag we're ready)
		session.serverReady(sessionHandler);
	}

	@Override
	public void sessionDestroyed(Long sessionId, SmppServerSession session) {
		sessions.remove(session);
	}

	public Set<SmppServerSession> getSessions() {
		return sessions;
	}

	public PollableSmppSessionHandler getSessionHandler() {
		return sessionHandler;
	}

	public String getSystemId() {
		return systemId;
	}

	public String getPassword() {
		return password;
	}
}