|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.apache.jasper.compiler; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import javax.servlet.jsp.tagext.PageData; import org.openide.ErrorManager; import org.apache.jasper.JasperException; /** This class is similar to org.apache.jasper.compiler.Validator, it only * allows getting access to the XML view of the page. * * @author Petr Jiricka */ public class NbValidator { private static Method validateXmlViewM; private static Field bufF; static { initReflection(); } private static void initReflection() { try { validateXmlViewM = Validator.class.getDeclaredMethod("validateXmlView", new Class[] {PageData.class, Compiler.class}); validateXmlViewM.setAccessible(true); bufF = PageDataImpl.class.getDeclaredField("buf"); bufF.setAccessible(true); } catch (NoSuchMethodException e) { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); } catch (NoSuchFieldException e) { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); } } /** Returns the XML view of the page. */ public static String validate(Compiler compiler, Node.Nodes page) throws JasperException { /* * Visit the page/tag directives first, as they are global to the page * and are position independent. */ page.visit(new Validator.DirectiveVisitor(compiler)); // Determine the default output content type PageInfo pageInfo = compiler.getPageInfo(); String contentType = pageInfo.getContentType(); if (contentType == null || contentType.indexOf("charset=") < 0) { boolean isXml = page.getRoot().isXmlSyntax(); String defaultType; if (contentType == null) { defaultType = isXml? "text/xml": "text/html"; } else { defaultType = contentType; } String charset = null; if (isXml) { charset = "UTF-8"; } else { if (!page.getRoot().isDefaultPageEncoding()) { charset = page.getRoot().getPageEncoding(); } } if (charset != null) { pageInfo.setContentType(defaultType + ";charset=" + charset); } else { pageInfo.setContentType(defaultType); } } /* * Validate all other nodes. * This validation step includes checking a custom tag's mandatory and * optional attributes against information in the TLD (first validation * step for custom tags according to JSP.10.5). */ page.visit(new Validator.ValidateVisitor(compiler)); /* * Invoke TagLibraryValidator classes of all imported tags * (second validation step for custom tags according to JSP.10.5). */ // validateXmlView(new PageDataImpl(page, compiler), compiler); try { PageDataImpl pdi = new PageDataImpl(page, compiler); validateXmlViewM.invoke(null, new Object[] {pdi, compiler}); /* * Invoke TagExtraInfo method isValid() for all imported tags * (third validation step for custom tags according to JSP.10.5). */ page.visit(new Validator.TagExtraInfoVisitor(compiler)); StringBuffer buf = (StringBuffer)bufF.get(pdi); return buf.toString(); } catch (IllegalAccessException e) { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); throw new JasperException(e.getMessage()); } catch (InvocationTargetException e) { Throwable target = e.getTargetException(); if (target instanceof JasperException) { throw (JasperException)target; } else { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); throw new JasperException(e.getMessage()); } } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.