/protocols/smpp/src/main/java/org/mobicents/protocols/smpp/version/VersionFactory.java
Java | 74 lines | 33 code | 4 blank | 37 comment | 12 complexity | 1c3a5c86ca842ac7ddfd0f59bb5d7dc6 MD5 | raw file
1/* 2 * JBoss, Home of Professional Open Source 3 * Copyright 2011, Red Hat, Inc. and individual contributors 4 * by the @authors tag. See the copyright.txt in the distribution for a 5 * full listing of individual contributors. 6 * 7 * This is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation; either version 2.1 of 10 * the License, or (at your option) any later version. 11 * 12 * This software is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this software; if not, write to the Free 19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 21 */ 22 23package org.mobicents.protocols.smpp.version; 24 25import org.mobicents.protocols.smpp.util.APIConfig; 26import org.mobicents.protocols.smpp.util.APIConfigFactory; 27import org.mobicents.protocols.smpp.util.PropertyNotFoundException; 28 29/** 30 * Factory class for SMPP versions. 31 * @version $Id: VersionFactory.java 452 2009-01-15 16:56:36Z orank $ 32 */ 33public class VersionFactory { 34 /** 35 * Get the default SMPP version implemented by this API. This APIs 36 * default is currently version 3.4. 37 * @return The default SMPP version. 38 */ 39 public static SMPPVersion getDefaultVersion() { 40 APIConfig cfg = APIConfigFactory.getConfig(); 41 try { 42 int versionNum = cfg.getInt(APIConfig.DEFAULT_VERSION); 43 return VersionFactory.getVersion(versionNum); 44 } catch (PropertyNotFoundException x) { 45 return SMPPVersion.VERSION_5_0; 46 } 47 } 48 49 /** 50 * Get the SMPP version for a particular version ID. 51 * @param id The version ID to get the SMPP version for, 52 * @return The matching SMPP version. 53 * @throws VersionException If the version ID is not known by this 54 * factory. 55 */ 56 public static SMPPVersion getVersion(int id) { 57 if (id == SMPPVersion.VERSION_3_3.getVersionID()) { 58 return SMPPVersion.VERSION_3_3; 59 } else if (id == SMPPVersion.VERSION_3_4.getVersionID()) { 60 return SMPPVersion.VERSION_3_4; 61 } else if (id == SMPPVersion.VERSION_5_0.getVersionID()) { 62 return SMPPVersion.VERSION_5_0; 63 } else { 64 APIConfig cfg = APIConfigFactory.getConfig(); 65 if (cfg.getBoolean(APIConfig.LAX_VERSIONS, false)) { 66 if (id >= 0x00 && id <= 0x32) { 67 return SMPPVersion.VERSION_3_3; 68 } 69 } 70 } 71 throw new VersionException("Unknown version id: 0x" 72 + Integer.toHexString(id)); 73 } 74}