/* * Copyright (c) 1998-2011 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * * Free Software Foundation, Inc. * 59 Temple Place, Suite 330 * Boston, MA 02111-1307 USA * * @author Sam */ package com.caucho.netbeans.ide; import com.caucho.netbeans.util.JspNameUtil; import org.netbeans.modules.j2ee.deployment.plugins.spi.FindJSPServlet; import javax.enterprise.deploy.spi.DeploymentManager; import java.io.File; public final class ResinFindJSPServlet implements FindJSPServlet { private static final String WEB_INF_TAGS = "WEB-INF/tags/"; // NOI18N private static final String META_INF_TAGS = "META-INF/tags/"; // NOI18N public ResinFindJSPServlet(DeploymentManager manager) { } public File getServletTempDirectory(String moduleContextPath) { return new File("unimplemented"); // XXX: unimplemented } public String getServletResourcePath(String moduleContextPath, String jspResourcePath) { //String path = module.getWebURL(); //we expect .tag file; in other case, we expect .jsp file String path = getTagHandlerClassName(jspResourcePath); if (path != null) { // .tag path = path.replace('.', '/') + ".java"; } else { // .jsp path = getServletPackageName(jspResourcePath).replace('.', '/') + '/' + getServletClassName(jspResourcePath) + ".java"; // NOI18N } return path; //int lastDot = jspResourcePath.lastIndexOf('.'); //return jspResourcePath.substring(0, lastDot) + "$jsp.java"; // NOI18N } // copied from org.apache.jasper.JspCompilationContext private String getServletPackageName(String jspUri) { String dPackageName = getDerivedPackageName(jspUri); if (dPackageName.length() == 0) { return JspNameUtil.JSP_PACKAGE_NAME; } return JspNameUtil.JSP_PACKAGE_NAME + '.' + getDerivedPackageName(jspUri); } // copied from org.apache.jasper.JspCompilationContext private String getDerivedPackageName(String jspUri) { int iSep = jspUri.lastIndexOf('/'); return (iSep > 0) ? JspNameUtil.makeJavaPackage(jspUri.substring(0, iSep)) : ""; // NOI18N } // copied from org.apache.jasper.JspCompilationContext private String getServletClassName(String jspUri) { int iSep = jspUri.lastIndexOf('/') + 1; return JspNameUtil.makeJavaIdentifier(jspUri.substring(iSep)); } public String getServletEncoding(String moduleContextPath, String jspResourcePath) { return "UTF8"; // NOI18N } /** * Copied (and slightly modified) from org.apache.jasper.compiler.JspUtil * <p/> * Gets the fully-qualified class name of the tag handler corresponding to the * given tag file path. * * @param path Tag file path * * @return Fully-qualified class name of the tag handler corresponding to the * given tag file path */ private String getTagHandlerClassName(String path) { String className = null; int begin = 0; int index; index = path.lastIndexOf(".tag"); if (index == -1) { return null; } index = path.indexOf(WEB_INF_TAGS); if (index != -1) { className = "org.apache.jsp.tag.web."; // NIO18N begin = index + WEB_INF_TAGS.length(); } else { index = path.indexOf(META_INF_TAGS); if (index != -1) { className = "org.apache.jsp.tag.meta."; // NIO18N begin = index + META_INF_TAGS.length(); } else { return null; } } className += JspNameUtil.makeJavaPackage(path.substring(begin)); return className; } }