PageRenderTime 39ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/servers/jain-slee/resources/diameter-base/common/ra/src/main/java/org/mobicents/slee/resource/diameter/base/DiameterAvpFactoryImpl.java

http://mobicents.googlecode.com/
Java | 414 lines | 180 code | 54 blank | 180 comment | 0 complexity | 050028443a2079e0358dabb4f113342f MD5 | raw file
Possible License(s): LGPL-3.0, GPL-3.0, LGPL-2.1, GPL-2.0, CC-BY-SA-3.0, CC0-1.0, Apache-2.0, BSD-3-Clause
  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. package org.mobicents.slee.resource.diameter.base;
  23. import java.net.InetAddress;
  24. import java.util.Date;
  25. import net.java.slee.resource.diameter.base.DiameterAvpFactory;
  26. import net.java.slee.resource.diameter.base.NoSuchAvpException;
  27. import net.java.slee.resource.diameter.base.events.DiameterCommand;
  28. import net.java.slee.resource.diameter.base.events.avp.AvpNotAllowedException;
  29. import net.java.slee.resource.diameter.base.events.avp.AvpUtilities;
  30. import net.java.slee.resource.diameter.base.events.avp.DiameterAvp;
  31. import net.java.slee.resource.diameter.base.events.avp.DiameterAvpCodes;
  32. import net.java.slee.resource.diameter.base.events.avp.DiameterIdentity;
  33. import net.java.slee.resource.diameter.base.events.avp.Enumerated;
  34. import net.java.slee.resource.diameter.base.events.avp.ExperimentalResultAvp;
  35. import net.java.slee.resource.diameter.base.events.avp.FailedAvp;
  36. import net.java.slee.resource.diameter.base.events.avp.ProxyInfoAvp;
  37. import net.java.slee.resource.diameter.base.events.avp.VendorSpecificApplicationIdAvp;
  38. import org.mobicents.slee.resource.diameter.base.events.DiameterCommandImpl;
  39. import org.mobicents.slee.resource.diameter.base.events.avp.ExperimentalResultAvpImpl;
  40. import org.mobicents.slee.resource.diameter.base.events.avp.FailedAvpImpl;
  41. import org.mobicents.slee.resource.diameter.base.events.avp.GroupedAvpImpl;
  42. import org.mobicents.slee.resource.diameter.base.events.avp.ProxyInfoAvpImpl;
  43. import org.mobicents.slee.resource.diameter.base.events.avp.VendorSpecificApplicationIdAvpImpl;
  44. /**
  45. *
  46. * <br>Super project: mobicents
  47. * <br>7:52:06 PM May 13, 2008
  48. * <br>
  49. * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
  50. * @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a>
  51. * @author Erick Svenson
  52. */
  53. public class DiameterAvpFactoryImpl implements DiameterAvpFactory
  54. {
  55. // RFC3588 - Page 40
  56. // Unless otherwise noted, AVPs will have the following default AVP
  57. // Flags field settings:
  58. // The ?M? bit MUST be set. The ?V? bit MUST NOT be set.
  59. private final static long BASE_VENDOR_ID = 0L;
  60. /*
  61. * (non-Javadoc)
  62. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createCommand(int, int, java.lang.String, java.lang.String, boolean, boolean)
  63. */
  64. public DiameterCommand createCommand( int commandCode, int applicationId, String shortName, String longName, boolean isRequest, boolean isProxiable )
  65. {
  66. return new DiameterCommandImpl( commandCode, applicationId, shortName, longName, isRequest, isProxiable );
  67. }
  68. // Generic AVP Creators
  69. /*
  70. * (non-Javadoc)
  71. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, net.java.slee.resource.diameter.base.events.avp.DiameterAvp[])
  72. */
  73. public DiameterAvp createAvp( int avpCode, DiameterAvp[] avps ) throws NoSuchAvpException, AvpNotAllowedException
  74. {
  75. return createAvp((int)BASE_VENDOR_ID, avpCode, avps);
  76. }
  77. /*
  78. * (non-Javadoc)
  79. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, net.java.slee.resource.diameter.base.events.avp.DiameterAvp[])
  80. */
  81. public DiameterAvp createAvp( int vendorId, int avpCode, DiameterAvp[] avps ) throws NoSuchAvpException, AvpNotAllowedException
  82. {
  83. GroupedAvpImpl avp = (GroupedAvpImpl) AvpUtilities.createAvp( avpCode, vendorId, GroupedAvpImpl.class );
  84. avp.setExtensionAvps( avps );
  85. return avp;
  86. }
  87. /*
  88. * (non-Javadoc)
  89. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, byte[])
  90. */
  91. public DiameterAvp createAvp( int avpCode, byte[] value ) throws NoSuchAvpException
  92. {
  93. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  94. }
  95. /*
  96. * (non-Javadoc)
  97. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, byte[])
  98. */
  99. public DiameterAvp createAvp( int vendorId, int avpCode, byte[] value ) throws NoSuchAvpException
  100. {
  101. return AvpUtilities.createAvp(avpCode, vendorId, value);
  102. }
  103. /*
  104. * (non-Javadoc)
  105. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int)
  106. */
  107. public DiameterAvp createAvp( int avpCode, int value ) throws NoSuchAvpException
  108. {
  109. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  110. }
  111. /*
  112. * (non-Javadoc)
  113. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, int)
  114. */
  115. public DiameterAvp createAvp( int vendorId, int avpCode, int value ) throws NoSuchAvpException
  116. {
  117. return AvpUtilities.createAvp(avpCode, vendorId, value);
  118. }
  119. /*
  120. * (non-Javadoc)
  121. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, long)
  122. */
  123. public DiameterAvp createAvp( int avpCode, long value ) throws NoSuchAvpException
  124. {
  125. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  126. }
  127. /*
  128. * (non-Javadoc)
  129. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, long)
  130. */
  131. public DiameterAvp createAvp( int vendorId, int avpCode, long value ) throws NoSuchAvpException
  132. {
  133. return AvpUtilities.createAvp(avpCode, vendorId, value);
  134. }
  135. /*
  136. * (non-Javadoc)
  137. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, float)
  138. */
  139. public DiameterAvp createAvp( int avpCode, float value ) throws NoSuchAvpException
  140. {
  141. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  142. }
  143. /*
  144. * (non-Javadoc)
  145. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, float)
  146. */
  147. public DiameterAvp createAvp( int vendorId, int avpCode, float value ) throws NoSuchAvpException
  148. {
  149. return AvpUtilities.createAvp(avpCode, vendorId, value);
  150. }
  151. /*
  152. * (non-Javadoc)
  153. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, double)
  154. */
  155. public DiameterAvp createAvp( int avpCode, double value ) throws NoSuchAvpException
  156. {
  157. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  158. }
  159. /*
  160. * (non-Javadoc)
  161. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, double)
  162. */
  163. public DiameterAvp createAvp( int vendorId, int avpCode, double value ) throws NoSuchAvpException
  164. {
  165. return AvpUtilities.createAvp(avpCode, vendorId, value);
  166. }
  167. /*
  168. * (non-Javadoc)
  169. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, java.net.InetAddress)
  170. */
  171. public DiameterAvp createAvp( int avpCode, InetAddress value ) throws NoSuchAvpException
  172. {
  173. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  174. }
  175. /*
  176. * (non-Javadoc)
  177. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, java.net.InetAddress)
  178. */
  179. public DiameterAvp createAvp( int vendorId, int avpCode, InetAddress value ) throws NoSuchAvpException
  180. {
  181. return AvpUtilities.createAvp(avpCode, vendorId, value);
  182. }
  183. /*
  184. * (non-Javadoc)
  185. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, java.util.Date)
  186. */
  187. public DiameterAvp createAvp( int avpCode, Date value ) throws NoSuchAvpException
  188. {
  189. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  190. }
  191. /*
  192. * (non-Javadoc)
  193. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, java.util.Date)
  194. */
  195. public DiameterAvp createAvp( int vendorId, int avpCode, Date value ) throws NoSuchAvpException
  196. {
  197. return AvpUtilities.createAvp(avpCode, vendorId, value);
  198. }
  199. /*
  200. * (non-Javadoc)
  201. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, java.lang.String)
  202. */
  203. public DiameterAvp createAvp( int avpCode, String value ) throws NoSuchAvpException
  204. {
  205. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  206. }
  207. /*
  208. * (non-Javadoc)
  209. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, java.lang.String)
  210. */
  211. public DiameterAvp createAvp( int vendorId, int avpCode, String value ) throws NoSuchAvpException
  212. {
  213. return AvpUtilities.createAvp(avpCode, vendorId, value);
  214. }
  215. /*
  216. * (non-Javadoc)
  217. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, net.java.slee.resource.diameter.base.events.avp.Enumerated)
  218. */
  219. public DiameterAvp createAvp( int avpCode, Enumerated value ) throws NoSuchAvpException
  220. {
  221. return createAvp((int)BASE_VENDOR_ID, avpCode, value);
  222. }
  223. /*
  224. * (non-Javadoc)
  225. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createAvp(int, int, net.java.slee.resource.diameter.base.events.avp.Enumerated)
  226. */
  227. public DiameterAvp createAvp( int vendorId, int avpCode, Enumerated value ) throws NoSuchAvpException
  228. {
  229. return AvpUtilities.createAvp(avpCode, vendorId, value);
  230. }
  231. // Custom Grouped AVP Creators
  232. /*
  233. * (non-Javadoc)
  234. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createExperimentalResult(long, long)
  235. */
  236. public ExperimentalResultAvp createExperimentalResult( long vendorId, long experimentalResultCode )
  237. {
  238. ExperimentalResultAvp experimentalResultAvp = createExperimentalResult();
  239. experimentalResultAvp.setVendorIdAVP(vendorId);
  240. experimentalResultAvp.setExperimentalResultCode(experimentalResultCode);
  241. return experimentalResultAvp;
  242. }
  243. /*
  244. * (non-Javadoc)
  245. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createExperimentalResult()
  246. */
  247. public ExperimentalResultAvp createExperimentalResult()
  248. {
  249. return createExperimentalResult( new DiameterAvp[0] );
  250. }
  251. /*
  252. * (non-Javadoc)
  253. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createExperimentalResult(net.java.slee.resource.diameter.base.events.avp.DiameterAvp)
  254. */
  255. public ExperimentalResultAvp createExperimentalResult( DiameterAvp avp ) throws AvpNotAllowedException
  256. {
  257. return createExperimentalResult( new DiameterAvp[]{ avp } );
  258. }
  259. /*
  260. * (non-Javadoc)
  261. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createExperimentalResult(net.java.slee.resource.diameter.base.events.avp.DiameterAvp[])
  262. */
  263. public ExperimentalResultAvp createExperimentalResult( DiameterAvp[] avps ) throws AvpNotAllowedException
  264. {
  265. return (ExperimentalResultAvp) AvpUtilities.createAvp( DiameterAvpCodes.EXPERIMENTAL_RESULT, avps, ExperimentalResultAvpImpl.class );
  266. }
  267. /*
  268. * (non-Javadoc)
  269. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createFailedAvp()
  270. */
  271. public FailedAvp createFailedAvp()
  272. {
  273. return createFailedAvp( new DiameterAvp[0] );
  274. }
  275. /*
  276. * (non-Javadoc)
  277. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createFailedAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp)
  278. */
  279. public FailedAvp createFailedAvp( DiameterAvp avp )
  280. {
  281. return createFailedAvp( new DiameterAvp[]{ avp } );
  282. }
  283. /*
  284. * (non-Javadoc)
  285. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createFailedAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp[])
  286. */
  287. public FailedAvp createFailedAvp( DiameterAvp[] avps )
  288. {
  289. return (FailedAvp) AvpUtilities.createAvp( DiameterAvpCodes.FAILED_AVP, avps, FailedAvpImpl.class );
  290. }
  291. /*
  292. * (non-Javadoc)
  293. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createProxyInfo(net.java.slee.resource.diameter.base.events.avp.DiameterIdentity, byte[])
  294. */
  295. public ProxyInfoAvp createProxyInfo( DiameterIdentity proxyHost, byte[] proxyState )
  296. {
  297. ProxyInfoAvp proxyInfo = createProxyInfo();
  298. proxyInfo.setProxyHost( proxyHost );
  299. proxyInfo.setProxyState( proxyState );
  300. return proxyInfo;
  301. }
  302. /*
  303. * (non-Javadoc)
  304. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createProxyInfo()
  305. */
  306. public ProxyInfoAvp createProxyInfo()
  307. {
  308. return createProxyInfo(new DiameterAvp[0]);
  309. }
  310. /*
  311. * (non-Javadoc)
  312. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createProxyInfo(net.java.slee.resource.diameter.base.events.avp.DiameterAvp)
  313. */
  314. public ProxyInfoAvp createProxyInfo( DiameterAvp avp )
  315. {
  316. return createProxyInfo( new DiameterAvp[]{avp} );
  317. }
  318. /*
  319. * (non-Javadoc)
  320. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createProxyInfo(net.java.slee.resource.diameter.base.events.avp.DiameterAvp[])
  321. */
  322. public ProxyInfoAvp createProxyInfo( DiameterAvp[] avps )
  323. {
  324. return (ProxyInfoAvp) AvpUtilities.createAvp( DiameterAvpCodes.PROXY_INFO, avps, ProxyInfoAvpImpl.class );
  325. }
  326. /*
  327. * (non-Javadoc)
  328. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createVendorSpecificApplicationId(long)
  329. */
  330. public VendorSpecificApplicationIdAvp createVendorSpecificApplicationId( long vendorId )
  331. {
  332. VendorSpecificApplicationIdAvp vsaidAvp = createVendorSpecificApplicationId();
  333. vsaidAvp.setVendorIdAvp(vendorId);
  334. return vsaidAvp;
  335. }
  336. /*
  337. * (non-Javadoc)
  338. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createVendorSpecificApplicationId()
  339. */
  340. public VendorSpecificApplicationIdAvp createVendorSpecificApplicationId()
  341. {
  342. return createVendorSpecificApplicationId( new DiameterAvp[0] );
  343. }
  344. /*
  345. * (non-Javadoc)
  346. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createVendorSpecificApplicationId(net.java.slee.resource.diameter.base.events.avp.DiameterAvp)
  347. */
  348. public VendorSpecificApplicationIdAvp createVendorSpecificApplicationId( DiameterAvp avp ) throws AvpNotAllowedException
  349. {
  350. return createVendorSpecificApplicationId( new DiameterAvp[]{avp} );
  351. }
  352. /*
  353. * (non-Javadoc)
  354. * @see net.java.slee.resource.diameter.base.DiameterAvpFactory#createVendorSpecificApplicationId(net.java.slee.resource.diameter.base.events.avp.DiameterAvp[])
  355. */
  356. public VendorSpecificApplicationIdAvp createVendorSpecificApplicationId( DiameterAvp[] avps ) throws AvpNotAllowedException
  357. {
  358. return (VendorSpecificApplicationIdAvp) AvpUtilities.createAvp( DiameterAvpCodes.VENDOR_SPECIFIC_APPLICATION_ID, avps, VendorSpecificApplicationIdAvpImpl.class );
  359. }
  360. }