|
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-2002 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.web.core.syntax; import java.io.IOException; import java.io.InputStream; import javax.swing.text.Document; import java.net.URLClassLoader; import java.util.Iterator; import java.util.Map; import java.util.HashMap; import java.util.StringTokenizer; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.text.CloneableEditorSupport; import org.netbeans.modules.web.jsps.parserapi.JspParserFactory; import org.netbeans.modules.web.jsps.parserapi.JspParserAPI; import org.netbeans.modules.web.core.syntax.spi.JSPColoringData; import org.netbeans.modules.web.core.syntax.spi.JspContextInfo; import org.openide.ErrorManager; public class JspUtils { public static final String TAG_MIME_TYPE = "text/x-tag"; // NOI18N /** Returns the MIME type of the content language for this page set in this file's attributes. * If nothing is set, defaults to 'text/html'. */ public static String getContentLanguage() { /*try { String contentLanguage = (String)getPrimaryFile ().getAttribute (EA_CONTENT_LANGUAGE); if (contentLanguage != null) { return contentLanguage; } } catch (Exception ex) { // null pointer or IOException }*/ return "text/html"; // NOI18N } /** Returns the MIME type of the scripting language for this page set in this file's attributes. * If nothing is set, defaults to 'text/x-java'. */ public static String getScriptingLanguage() { /*try { String scriptingLanguage = (String)getPrimaryFile ().getAttribute (EA_SCRIPTING_LANGUAGE); if (scriptingLanguage != null) { return scriptingLanguage; } } catch (Exception ex) { // null pointer or IOException }*/ return "text/x-java"; // NOI18N } public static JSPColoringData getJSPColoringData (Document doc, FileObject fo) { return JspContextInfo.getContextInfo ().getJSPColoringData (doc, fo); } public static JspParserAPI.ParseResult getCachedParseResult(Document doc, FileObject fo, boolean successfulOnly, boolean preferCurrent) { return JspContextInfo.getContextInfo ().getCachedParseResult (doc, fo, successfulOnly, preferCurrent); } public static URLClassLoader getModuleClassLoader(Document doc, FileObject fo) { return JspContextInfo.getContextInfo ().getModuleClassLoader (doc, fo); } /** Returns the root of the web module containing the given file object. * If the resource belongs to the subtree of the project's web module, * returns this module's document base directory. * Otherwise (or if the project parameter is null), it checks for the WEB-INF directory, * and determines the root accordingly. If WEB-INF is not found, returns null. * * @param fo the resource for which to find the web module root * @param doc document in which is fileobject editted. * @return the root of the web module, or null if a directory containing WEB-INF * is not on the path from resource to the root */ public static FileObject guessWebModuleRoot (Document doc, FileObject fo) { return JspContextInfo.getContextInfo ().guessWebModuleRoot (doc, fo); } /** Returns the taglib map as returned by the parser, taking data from the editor as parameters. * Returns null in case of a failure (exception, no web module, no parser etc.) */ public static Map getTaglibMap(Document doc, FileObject fo) { return JspContextInfo.getContextInfo ().getTaglibMap (doc, fo); } /** This method returns an image, which is displayed for the FileObject in the explorer. * @param doc This is the documet, in which the icon will be used (for exmaple for completion). * @param fo file object for which the icon is looking for * @return an Image which is dislayed in the explorer for the file. */ public static java.awt.Image getIcon(Document doc, FileObject fo){ return JspContextInfo.getContextInfo ().getIcon (doc, fo); } /** Returns an absolute context URL (starting with '/') for a relative URL and base URL. * @param relativeTo url to which the relative URL is related. Treated as directory iff * ends with '/' * @param url the relative URL by RFC 2396 * @exception IllegalArgumentException if url is not absolute and relativeTo * can not be related to, or if url is intended to be a directory */ public static String resolveRelativeURL(String relativeTo, String url) { //System.out.println("- resolving " + url + " relative to " + relativeTo); String result; if (url.startsWith("/")) { // NOI18N result = "/"; // NOI18N url = url.substring(1); } else { // canonize relativeTo if ((relativeTo == null) || (!relativeTo.startsWith("/"))) // NOI18N throw new IllegalArgumentException(); relativeTo = resolveRelativeURL(null, relativeTo); int lastSlash = relativeTo.lastIndexOf('/'); if (lastSlash == -1) throw new IllegalArgumentException(); result = relativeTo.substring(0, lastSlash + 1); } // now url does not start with '/' and result starts with '/' and ends with '/' StringTokenizer st = new StringTokenizer(url, "/", true); // NOI18N while(st.hasMoreTokens()) { String tok = st.nextToken(); //System.out.println("token : \"" + tok + "\""); // NOI18N if (tok.equals("/")) { // NOI18N if (!result.endsWith("/")) // NOI18N result = result + "/"; // NOI18N } else if (tok.equals("")) // NOI18N ; // do nohing else if (tok.equals(".")) // NOI18N ; // do nohing else if (tok.equals("..")) { // NOI18N String withoutSlash = result.substring(0, result.length() - 1); int ls = withoutSlash.lastIndexOf("/"); // NOI18N if (ls != -1) result = withoutSlash.substring(0, ls + 1); } else { // some file result = result + tok; } //System.out.println("result : " + result); // NOI18N } //System.out.println("- resolved to " + result); return result; } // helper methods for help implement toString() public static String mapToString(Map m, String indent) { StringBuffer sb = new StringBuffer(); Iterator it = m.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); sb.append(indent).append(key).append(" -> ").append(m.get(key)).append("\n"); } return sb.toString(); } /** Decides whether a given file is in the subtree defined by the given folder. * Similar to |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 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.