diff -r 0cee67d100d6 java.source/src/org/netbeans/modules/java/JavaTemplateAttributesProvider.java --- a/java.source/src/org/netbeans/modules/java/JavaTemplateAttributesProvider.java Tue Jun 24 10:15:33 2008 +0200 +++ b/java.source/src/org/netbeans/modules/java/JavaTemplateAttributesProvider.java Tue Jun 24 12:20:24 2008 +0200 @@ -41,10 +41,14 @@ package org.netbeans.modules.java; -import java.util.Collections; +import java.util.HashMap; import java.util.Map; +import java.util.logging.Level; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.netbeans.api.java.classpath.ClassPath; +import org.netbeans.api.java.queries.SourceLevelQuery; import org.openide.filesystems.FileObject; import org.openide.loaders.CreateFromTemplateAttributesProvider; import org.openide.loaders.DataFolder; @@ -52,12 +56,23 @@ /** * Provides attributes that can be used inside scripting templates. - *
package
- *
attribute containing target folder as package.
+ *
+ *
package
+ *
attribute containing target folder as package.
+ *
javaSourceLevel
+ *
source level to be used for Java code (e.g. "1.5")
+ *
java15style
+ *
this attribute is defined only if java source level is + * greater or equal to "1.5" (so generics/annotations may be used)
+ *
* * @author Jan Pokorsky + * @author Petr Slechta */ public final class JavaTemplateAttributesProvider implements CreateFromTemplateAttributesProvider { + + private static final Logger LOG = Logger.getLogger(JavaTemplateAttributesProvider.class.getName()); + private static final Pattern JAVA_VER = Pattern.compile("(\\d+)\\.(\\d+).*"); public Map attributesFor(DataObject template, DataFolder target, String name) { FileObject templateFO = template.getPrimaryFile(); @@ -66,12 +81,41 @@ } FileObject targetFO = target.getPrimaryFile(); + Map result = new HashMap(); + + String sourceLevel = SourceLevelQuery.getSourceLevel(targetFO); + if (sourceLevel != null) { + result.put("javaSourceLevel", sourceLevel); // NOI18N + if (isJava15orLater(sourceLevel)) + result.put("java15style", Boolean.TRUE); // NOI18N + } + ClassPath cp = ClassPath.getClassPath(targetFO, ClassPath.SOURCE); if (cp == null) { - Logger.getLogger(JavaTemplateAttributesProvider.class.getName()).warning("No classpath was found for folder: " + target.getPrimaryFile()); // NOI18N - return Collections.emptyMap(); + LOG.warning("No classpath was found for folder: " + target.getPrimaryFile()); // NOI18N } - return Collections.singletonMap("package", cp.getResourceName(targetFO, '.', false)); // NOI18N + else { + result.put("package", cp.getResourceName(targetFO, '.', false)); // NOI18N + } + return result; } + private boolean isJava15orLater(String sourceLevel) { + Matcher m = JAVA_VER.matcher(sourceLevel); + if (m.matches()) { + try { + int major = Integer.parseInt(m.group(1)); + int minor = Integer.parseInt(m.group(2)); + return (major >= 1 && minor >= 5); + } + catch (NumberFormatException e) { + LOG.log(Level.WARNING, "Cannot parse java source level: "+sourceLevel, e); // NOI18N + } + } + else { + LOG.warning("Cannot parse java source level: "+sourceLevel); // NOI18N + } + return false; + } + } diff -r 0cee67d100d6 web.core/src/org/netbeans/modules/web/core/resources/templates/Servlet.template --- a/web.core/src/org/netbeans/modules/web/core/resources/templates/Servlet.template Tue Jun 24 10:15:33 2008 +0200 +++ b/web.core/src/org/netbeans/modules/web/core/resources/templates/Servlet.template Tue Jun 24 12:20:24 2008 +0200 @@ -55,6 +55,9 @@ * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ +<#if java15style??> + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); @@ -67,6 +70,9 @@ * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ +<#if java15style??> + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); @@ -76,6 +82,9 @@ * Returns a short description of the servlet. * @return a String containing servlet description */ +<#if java15style??> + @Override + public String getServletInfo() { return "Short description"; }//