Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011 SpringSource
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.codehaus.groovy.grails.compiler.web;
 
 import java.net.URL;
 import java.util.List;
 
Enhances controller classes with the appropriate API at compile time.

Author(s):
Graeme Rocher
Since:
2.0
 
 
     public static Pattern CONTROLLER_PATTERN = Pattern.compile(".+/" +
              . + "/controllers/(.+)Controller\\.groovy");
 
     @Override
     public Class<?> getInstanceImplementation() {
         return ControllersApi.class;
     }
 
     @Override
     public Class<?> getStaticImplementation() {
         return null;  // No static api
     }
 
     public boolean shouldInject(URL url) {
         return url != null && .matcher(url.getFile()).find();
     }
 
     @Override
     protected void performInjectionInternal(String apiInstanceProperty,
             SourceUnit sourceClassNode classNode) {
         if (isControllerClassNode(classNode)) {
             super.performInjectionInternal(apiInstancePropertysourceclassNode);
 
             List<MethodNodestaticInit = classNode.getDeclaredMethods("<clinit>");
             if (!staticInit.isEmpty()) {
                 MethodNode methodNode = staticInit.get(0);
                 GrailsASTUtils.wrapMethodBodyInTryCatchDebugStatements(methodNode);
             }
         }
     }
 
     @Override
     protected AnnotationNode getMarkerAnnotation() {
         return new AnnotationNode(new ClassNode(ControllerMethod.class).getPlainNodeReference());
     }
 
     @Override
     protected String getArtefactType() {
         return .;
     }
 
     @Override
     public void performInjection(SourceUnit sourceGeneratorContext contextClassNode classNode) {
         if (isControllerClassNode(classNode)) {
             super.performInjection(sourcecontextclassNode);
         }
     }
 
     @Override
     public void performInjection(SourceUnit sourceClassNode classNode) {
         if (isControllerClassNode(classNode)) {
             super.performInjection(sourceclassNode);
         }
     }
 
     protected boolean isControllerClassNode(ClassNode classNode) {
        return classNode.getName().endsWith("Controller");
    }
New to GrepCode? Check out our FAQ X