1. /*
  2. * @(#)POAIdPOAView.java 1.5 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. // @(#)POAIdPOAView.java 1.5 03/01/23
  8. package com.sun.corba.se.internal.ior ;
  9. import java.util.Iterator ;
  10. import java.util.Stack ;
  11. import org.omg.CORBA_2_3.portable.OutputStream ;
  12. import org.omg.CORBA.INTERNAL ;
  13. import com.sun.corba.se.internal.ior.POAView ;
  14. import com.sun.corba.se.internal.ior.POAIdBase ;
  15. public class POAIdPOAView extends POAIdBase {
  16. private final POAView poa ;
  17. public POAIdPOAView( POAView poa )
  18. {
  19. if (poa == null)
  20. throw new INTERNAL() ;
  21. this.poa = poa ;
  22. }
  23. public int getNumLevels()
  24. {
  25. return poa.getNumLevels() ;
  26. }
  27. public Iterator iterator()
  28. {
  29. final Stack stack = new Stack() ;
  30. POAView current = poa ;
  31. POAView root = null ;
  32. while ((root = current.getParent()) != null) {
  33. stack.push( current.the_name() ) ;
  34. current = root ;
  35. }
  36. return new Iterator() {
  37. public boolean hasNext() {
  38. return !stack.empty() ;
  39. }
  40. public Object next() {
  41. return stack.pop() ;
  42. }
  43. public void remove()
  44. {
  45. throw new UnsupportedOperationException() ;
  46. }
  47. } ;
  48. }
  49. }