< prev index next >

src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java

Print this page




   9  * (the "License"); you may not use this file except in compliance with
  10  * the License.  You may obtain a copy of the License at
  11  *
  12  *      http://www.apache.org/licenses/LICENSE-2.0
  13  *
  14  * Unless required by applicable law or agreed to in writing, software
  15  * distributed under the License is distributed on an "AS IS" BASIS,
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17  * See the License for the specific language governing permissions and
  18  * limitations under the License.
  19  */
  20 package com.sun.org.apache.bcel.internal.classfile;
  21 
  22 import java.util.Stack;
  23 
  24 /**
  25  * Traverses a JavaClass with another Visitor object 'piggy-backed' that is
  26  * applied to all components of a JavaClass object. I.e. this class supplies the
  27  * traversal strategy, other classes can make use of it.
  28  *
  29  * @version $Id$
  30  */
  31 public class DescendingVisitor implements Visitor
  32 {
  33     private final JavaClass clazz;
  34 
  35     private final Visitor visitor;
  36 
  37     private final Stack<Object> stack = new Stack<>();
  38 
  39     /**
  40      * @return container of current entitity, i.e., predecessor during traversal
  41      */
  42     public Object predecessor()
  43     {
  44         return predecessor(0);
  45     }
  46 
  47     /**
  48      * @param level
  49      *            nesting level, i.e., 0 returns the direct predecessor


 486 
 487     /**
 488      * @since 6.0
 489      */
 490     @Override
 491     public void visitParameterAnnotation(final ParameterAnnotations obj)
 492     {
 493         stack.push(obj);
 494         obj.accept(visitor);
 495         stack.pop();
 496     }
 497 
 498     /**
 499      * @since 6.0
 500      */
 501     @Override
 502     public void visitMethodParameters(final MethodParameters obj)
 503     {
 504         stack.push(obj);
 505         obj.accept(visitor);















 506         stack.pop();
 507     }
 508 
 509     /** @since 6.0 */
 510     @Override
 511     public void visitConstantMethodType(final ConstantMethodType obj) {
 512         stack.push(obj);
 513         obj.accept(visitor);
 514         stack.pop();
 515     }
 516 
 517     /** @since 6.0 */
 518     @Override
 519     public void visitConstantMethodHandle(final ConstantMethodHandle obj) {
 520         stack.push(obj);
 521         obj.accept(visitor);
 522         stack.pop();
 523     }
 524 
 525     /** @since 6.0 */


 532 
 533     /** @since 6.1 */
 534     @Override
 535     public void visitConstantPackage(final ConstantPackage obj) {
 536         stack.push(obj);
 537         obj.accept(visitor);
 538         stack.pop();
 539     }
 540 
 541     /** @since 6.1 */
 542     @Override
 543     public void visitConstantModule(final ConstantModule obj) {
 544         stack.push(obj);
 545         obj.accept(visitor);
 546         stack.pop();
 547     }
 548 
 549     /** @since 6.3 */
 550     @Override
 551     public void visitConstantDynamic(final ConstantDynamic obj) {
























































































 552         stack.push(obj);
 553         obj.accept(visitor);
 554         stack.pop();
 555     }
 556 }


   9  * (the "License"); you may not use this file except in compliance with
  10  * the License.  You may obtain a copy of the License at
  11  *
  12  *      http://www.apache.org/licenses/LICENSE-2.0
  13  *
  14  * Unless required by applicable law or agreed to in writing, software
  15  * distributed under the License is distributed on an "AS IS" BASIS,
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17  * See the License for the specific language governing permissions and
  18  * limitations under the License.
  19  */
  20 package com.sun.org.apache.bcel.internal.classfile;
  21 
  22 import java.util.Stack;
  23 
  24 /**
  25  * Traverses a JavaClass with another Visitor object 'piggy-backed' that is
  26  * applied to all components of a JavaClass object. I.e. this class supplies the
  27  * traversal strategy, other classes can make use of it.
  28  *

  29  */
  30 public class DescendingVisitor implements Visitor
  31 {
  32     private final JavaClass clazz;
  33 
  34     private final Visitor visitor;
  35 
  36     private final Stack<Object> stack = new Stack<>();
  37 
  38     /**
  39      * @return container of current entitity, i.e., predecessor during traversal
  40      */
  41     public Object predecessor()
  42     {
  43         return predecessor(0);
  44     }
  45 
  46     /**
  47      * @param level
  48      *            nesting level, i.e., 0 returns the direct predecessor


 485 
 486     /**
 487      * @since 6.0
 488      */
 489     @Override
 490     public void visitParameterAnnotation(final ParameterAnnotations obj)
 491     {
 492         stack.push(obj);
 493         obj.accept(visitor);
 494         stack.pop();
 495     }
 496 
 497     /**
 498      * @since 6.0
 499      */
 500     @Override
 501     public void visitMethodParameters(final MethodParameters obj)
 502     {
 503         stack.push(obj);
 504         obj.accept(visitor);
 505         final MethodParameter[] table = obj.getParameters();
 506         for (final MethodParameter element : table) {
 507             element.accept(this);
 508         }
 509         stack.pop();
 510     }
 511 
 512     /**
 513      * @since 6.4.0
 514      */
 515     @Override
 516     public void visitMethodParameter(final MethodParameter obj)
 517     {
 518         stack.push(obj);
 519         obj.accept(visitor);
 520         stack.pop();
 521     }
 522 
 523     /** @since 6.0 */
 524     @Override
 525     public void visitConstantMethodType(final ConstantMethodType obj) {
 526         stack.push(obj);
 527         obj.accept(visitor);
 528         stack.pop();
 529     }
 530 
 531     /** @since 6.0 */
 532     @Override
 533     public void visitConstantMethodHandle(final ConstantMethodHandle obj) {
 534         stack.push(obj);
 535         obj.accept(visitor);
 536         stack.pop();
 537     }
 538 
 539     /** @since 6.0 */


 546 
 547     /** @since 6.1 */
 548     @Override
 549     public void visitConstantPackage(final ConstantPackage obj) {
 550         stack.push(obj);
 551         obj.accept(visitor);
 552         stack.pop();
 553     }
 554 
 555     /** @since 6.1 */
 556     @Override
 557     public void visitConstantModule(final ConstantModule obj) {
 558         stack.push(obj);
 559         obj.accept(visitor);
 560         stack.pop();
 561     }
 562 
 563     /** @since 6.3 */
 564     @Override
 565     public void visitConstantDynamic(final ConstantDynamic obj) {
 566         stack.push(obj);
 567         obj.accept(visitor);
 568         stack.pop();
 569     }
 570 
 571     /** @since 6.4.0 */
 572     @Override
 573     public void visitModule(final Module obj) {
 574         stack.push(obj);
 575         obj.accept(visitor);
 576         final ModuleRequires[] rtable = obj.getRequiresTable();
 577         for (final ModuleRequires element : rtable) {
 578             element.accept(this);
 579         }
 580         final ModuleExports[] etable = obj.getExportsTable();
 581         for (final ModuleExports element : etable) {
 582             element.accept(this);
 583         }
 584         final ModuleOpens[] otable = obj.getOpensTable();
 585         for (final ModuleOpens element : otable) {
 586             element.accept(this);
 587         }
 588         final ModuleProvides[] ptable = obj.getProvidesTable();
 589         for (final ModuleProvides element : ptable) {
 590             element.accept(this);
 591         }
 592         stack.pop();
 593     }
 594 
 595     /** @since 6.4.0 */
 596     @Override
 597     public void visitModuleRequires(final ModuleRequires obj) {
 598         stack.push(obj);
 599         obj.accept(visitor);
 600         stack.pop();
 601     }
 602 
 603     /** @since 6.4.0 */
 604     @Override
 605     public void visitModuleExports(final ModuleExports obj) {
 606         stack.push(obj);
 607         obj.accept(visitor);
 608         stack.pop();
 609     }
 610 
 611     /** @since 6.4.0 */
 612     @Override
 613     public void visitModuleOpens(final ModuleOpens obj) {
 614         stack.push(obj);
 615         obj.accept(visitor);
 616         stack.pop();
 617     }
 618 
 619     /** @since 6.4.0 */
 620     @Override
 621     public void visitModuleProvides(final ModuleProvides obj) {
 622         stack.push(obj);
 623         obj.accept(visitor);
 624         stack.pop();
 625     }
 626 
 627     /** @since 6.4.0 */
 628     @Override
 629     public void visitModulePackages(final ModulePackages obj) {
 630         stack.push(obj);
 631         obj.accept(visitor);
 632         stack.pop();
 633     }
 634 
 635     /** @since 6.4.0 */
 636     @Override
 637     public void visitModuleMainClass(final ModuleMainClass obj) {
 638         stack.push(obj);
 639         obj.accept(visitor);
 640         stack.pop();
 641     }
 642 
 643     /** @since 6.4.0 */
 644     @Override
 645     public void visitNestHost(final NestHost obj) {
 646         stack.push(obj);
 647         obj.accept(visitor);
 648         stack.pop();
 649     }
 650 
 651     /** @since 6.4.0 */
 652     @Override
 653     public void visitNestMembers(final NestMembers obj) {
 654         stack.push(obj);
 655         obj.accept(visitor);
 656         stack.pop();
 657     }
 658 }
< prev index next >