1 /* 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.tools.internal.ws.processor.model; 27 28 import java.util.Iterator; 29 30 /** 31 * 32 * A model visitor incorporating all the logic required to walk through the model. 33 * 34 * @author WS Development Team 35 */ 36 public class ExtendedModelVisitor { 37 38 public ExtendedModelVisitor() {} 39 40 public void visit(Model model) throws Exception { 41 preVisit(model); 42 for (Service service : model.getServices()) { 43 preVisit(service); 44 for (Port port : service.getPorts()) { 45 preVisit(port); 46 if (shouldVisit(port)) { 47 for (Operation operation : port.getOperations()) { 48 preVisit(operation); 49 Request request = operation.getRequest(); 50 if (request != null) { 51 preVisit(request); 52 for (Iterator iter4 = request.getHeaderBlocks(); 53 iter4.hasNext();) { 54 55 Block block = (Block) iter4.next(); 56 visitHeaderBlock(block); 57 } 58 for (Iterator iter4 = request.getBodyBlocks(); 59 iter4.hasNext();) { 60 61 Block block = (Block) iter4.next(); 62 visitBodyBlock(block); 63 } 64 for (Iterator iter4 = request.getParameters(); 65 iter4.hasNext();) { 66 67 Parameter parameter = (Parameter) iter4.next(); 68 visit(parameter); 69 } 70 postVisit(request); 71 } 72 73 Response response = operation.getResponse(); 74 if (response != null) { 75 preVisit(response); 76 for (Iterator iter4 = response.getHeaderBlocks(); 77 iter4.hasNext();) { 78 79 Block block = (Block) iter4.next(); 80 visitHeaderBlock(block); 81 } 82 for (Iterator iter4 = response.getBodyBlocks(); 83 iter4.hasNext();) { 84 85 Block block = (Block) iter4.next(); 86 visitBodyBlock(block); 87 } 88 for (Iterator iter4 = response.getParameters(); 89 iter4.hasNext();) { 90 91 Parameter parameter = (Parameter) iter4.next(); 92 visit(parameter); 93 } 94 postVisit(response); 95 } 96 97 for (Iterator iter4 = operation.getFaults(); 98 iter4.hasNext();) { 99 100 Fault fault = (Fault) iter4.next(); 101 preVisit(fault); 102 visitFaultBlock(fault.getBlock()); 103 postVisit(fault); 104 } 105 postVisit(operation); 106 } 107 } 108 postVisit(port); 109 } 110 postVisit(service); 111 } 112 postVisit(model); 113 } 114 115 protected boolean shouldVisit(Port port) { 116 return true; 117 } 118 119 // these methods are intended for subclasses 120 protected void preVisit(Model model) throws Exception {} 121 protected void postVisit(Model model) throws Exception {} 122 protected void preVisit(Service service) throws Exception {} 123 protected void postVisit(Service service) throws Exception {} 124 protected void preVisit(Port port) throws Exception {} 125 protected void postVisit(Port port) throws Exception {} 126 protected void preVisit(Operation operation) throws Exception {} 127 protected void postVisit(Operation operation) throws Exception {} 128 protected void preVisit(Request request) throws Exception {} 129 protected void postVisit(Request request) throws Exception {} 130 protected void preVisit(Response response) throws Exception {} 131 protected void postVisit(Response response) throws Exception {} 132 protected void preVisit(Fault fault) throws Exception {} 133 protected void postVisit(Fault fault) throws Exception {} 134 protected void visitBodyBlock(Block block) throws Exception {} 135 protected void visitHeaderBlock(Block block) throws Exception {} 136 protected void visitFaultBlock(Block block) throws Exception {} 137 protected void visit(Parameter parameter) throws Exception {} 138 }