001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Sam
028: */
029:
030: package com.caucho.netbeans.ide;
031:
032: import com.caucho.netbeans.util.JspNameUtil;
033:
034: import org.netbeans.modules.j2ee.deployment.plugins.spi.FindJSPServlet;
035:
036: import javax.enterprise.deploy.spi.DeploymentManager;
037: import java.io.File;
038:
039: public final class ResinFindJSPServlet implements FindJSPServlet {
040:
041: private static final String WEB_INF_TAGS = "WEB-INF/tags/"; // NOI18N
042: private static final String META_INF_TAGS = "META-INF/tags/"; // NOI18N
043:
044: public ResinFindJSPServlet(DeploymentManager manager) {
045: }
046:
047: public File getServletTempDirectory(String moduleContextPath) {
048: return new File("unimplemented"); // XXX: unimplemented
049: }
050:
051: public String getServletResourcePath(String moduleContextPath,
052: String jspResourcePath) {
053: //String path = module.getWebURL();
054:
055: //we expect .tag file; in other case, we expect .jsp file
056: String path = getTagHandlerClassName(jspResourcePath);
057: if (path != null) { // .tag
058: path = path.replace('.', '/') + ".java";
059: } else { // .jsp
060: path = getServletPackageName(jspResourcePath).replace('.',
061: '/')
062: + '/'
063: + getServletClassName(jspResourcePath)
064: + ".java"; // NOI18N
065: }
066: return path;
067:
068: //int lastDot = jspResourcePath.lastIndexOf('.');
069: //return jspResourcePath.substring(0, lastDot) + "$jsp.java"; // NOI18N
070: }
071:
072: // copied from org.apache.jasper.JspCompilationContext
073: private String getServletPackageName(String jspUri) {
074: String dPackageName = getDerivedPackageName(jspUri);
075: if (dPackageName.length() == 0) {
076: return JspNameUtil.JSP_PACKAGE_NAME;
077: }
078: return JspNameUtil.JSP_PACKAGE_NAME + '.'
079: + getDerivedPackageName(jspUri);
080: }
081:
082: // copied from org.apache.jasper.JspCompilationContext
083: private String getDerivedPackageName(String jspUri) {
084: int iSep = jspUri.lastIndexOf('/');
085: return (iSep > 0) ? JspNameUtil.makeJavaPackage(jspUri
086: .substring(0, iSep)) : ""; // NOI18N
087: }
088:
089: // copied from org.apache.jasper.JspCompilationContext
090: private String getServletClassName(String jspUri) {
091: int iSep = jspUri.lastIndexOf('/') + 1;
092: return JspNameUtil.makeJavaIdentifier(jspUri.substring(iSep));
093: }
094:
095: public String getServletEncoding(String moduleContextPath,
096: String jspResourcePath) {
097: return "UTF8"; // NOI18N
098: }
099:
100: /**
101: * Copied (and slightly modified) from org.apache.jasper.compiler.JspUtil
102: * <p/>
103: * Gets the fully-qualified class name of the tag handler corresponding to the
104: * given tag file path.
105: *
106: * @param path Tag file path
107: *
108: * @return Fully-qualified class name of the tag handler corresponding to the
109: * given tag file path
110: */
111: private String getTagHandlerClassName(String path) {
112:
113: String className = null;
114: int begin = 0;
115: int index;
116:
117: index = path.lastIndexOf(".tag");
118: if (index == -1) {
119: return null;
120: }
121:
122: index = path.indexOf(WEB_INF_TAGS);
123: if (index != -1) {
124: className = "org.apache.jsp.tag.web."; // NIO18N
125: begin = index + WEB_INF_TAGS.length();
126: } else {
127: index = path.indexOf(META_INF_TAGS);
128: if (index != -1) {
129: className = "org.apache.jsp.tag.meta."; // NIO18N
130: begin = index + META_INF_TAGS.length();
131: } else {
132: return null;
133: }
134: }
135:
136: className += JspNameUtil.makeJavaPackage(path.substring(begin));
137:
138: return className;
139: }
140:
141: }
|