/protocols/ss7/m3ua/impl/src/main/java/org/mobicents/protocols/ss7/m3ua/impl/fsm/Transition.java

http://mobicents.googlecode.com/ · Java · 77 lines · 31 code · 11 blank · 35 comment · 3 complexity · bf176f6bff0e7126fc54e28f29b77939 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. package org.mobicents.protocols.ss7.m3ua.impl.fsm;
  23. /**
  24. *
  25. * @author amit bhayani
  26. * @author kulikov
  27. *
  28. */
  29. public class Transition {
  30. private String name;
  31. protected State destination;
  32. private TransitionHandler handler;
  33. protected Transition(String name, State destination) {
  34. this.name = name;
  35. this.destination = destination;
  36. }
  37. public String getName() {
  38. return name;
  39. }
  40. public void setHandler(TransitionHandler handler) {
  41. this.handler = handler;
  42. }
  43. protected State process(State state) {
  44. // leave current state
  45. state.leave();
  46. // new Thread(this).start();
  47. if (handler != null) {
  48. if (!handler.process(state)) {
  49. // If handler couldn't process this transition successfully,
  50. // return the old state. But this means the LeaveAction could
  51. // have been executed and we are ok with that. Also we call
  52. // cancelLeave on State so as to assign back the last timeout
  53. // value
  54. state.cancelLeave();
  55. return state;
  56. }
  57. }
  58. // enter to the destination
  59. this.destination.enter();
  60. return this.destination;
  61. }
  62. @Override
  63. public String toString() {
  64. return name;
  65. }
  66. }