public void endElement()

in src/main/java/org/apache/cxf/cwiki/Page.java [545:637]


        public void endElement(String uri, String localName, String qName) throws SAXException {
            if ("macro".equals(localName) || "structured-macro".equals(localName)) {
                switch (state) {
                case CHILDREN: {
                    String pageName = params.get("page");
                    String depth = params.get("depth");
                    if (depth == null || "".equals(depth.trim())) {
                        depth = "1";
                    }
                    if (page.childrenOf == null) {
                        page.childrenOf = new HashMap<String, Integer>();
                    }
                    if (pageName == null) {
                        page.childrenOf.put(page.title, Integer.parseInt(depth));                    
                    } else {
                        page.childrenOf.put(pageName, Integer.parseInt(depth));
                    }
                    params.clear();
                    state = State.NONE;
                    break;
                }
                case INCLUDE: {
                    if (page.includes == null) {
                        page.includes = new CopyOnWriteArraySet<String>();
                    }
                    String inc = params.get("default-parameter");
                    if (inc == null) {
                        inc = params.get("title");
                    }
                    if (inc == null) {
                        inc = params.get("");
                    }
                    if (inc == null) {
                        System.out.println(page.title + ": Did not find an include name " + params);
                    } else {
                        page.includes.add(inc);
                    }
                    state = State.NONE;
                    break;
                }
                case BLOG_POSTS:
                    page.hasBlog = true;
                    state = State.NONE;
                    break;
                case CODE: {
                    if (page.codeTypes == null) {
                        page.codeTypes = new ConcurrentSkipListSet<String>();
                    }
                    String lang = null;
                    for (Map.Entry<String, String> ent : params.entrySet()) {
                        if ("language".equals(ent.getKey())) {
                            lang = ent.getValue();
                        } else if (ent.getKey().contains(":")) {
                            String parts[] = ent.getKey().split(":");
                            for (String s : parts) {
                                if (("title".equals(s) && !params.containsKey("title"))
                                    || (!params.containsKey("language") 
                                        && ("xml".equals(s) || "java".equals(s)))) {
                                    System.out.println("WARNING Page " + page.title + " has a broken code block");
                                }
                            }
                        } else if ("default-parameter".equals(ent.getKey())) {
                            String s = ent.getValue();
                            if ("xml".equals(s) || "java".equals(s)) {
                                lang = s;
                            }
                        }
                    }
                    if (lang == null) {
                        lang = params.get("");
                        if (!StringUtils.isEmpty(lang)) {
                            page.codeTypes.add("java");
                        }
                    }
                    //System.out.println("l:  " + lang + "   " + params);
                    if (StringUtils.isEmpty(lang)) {
                        page.codeTypes.add("bash");
                        lang = "java";
                    }
                    page.codeTypes.add(lang);
                    state = State.NONE;
                    break;
                }                    
                default:
                    state = State.NONE;
                    break;
                }
            } else if ("parameter".equals(localName)) {
                paramName = null;
            } else if ("default-parameter".equals(localName)) {
                paramName = null;
            }            
        }