Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * #%L
   * *********************************************************************************************************************
   *
   * NorthernWind - lightweight CMS
   * http://northernwind.tidalwave.it - hg clone https://bitbucket.org/tidalwave/northernwind-src
   * %%
   * Copyright (C) 2011 - 2013 Tidalwave s.a.s. (http://tidalwave.it)
   * %%
  * *********************************************************************************************************************
  *
  * 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.
  *
  * *********************************************************************************************************************
  *
  * $Id: DefaultContentRequestProcessor.java,v af2a69c0811e 2013/06/13 22:02:08 fabrizio $
  *
  * *********************************************************************************************************************
  * #L%
  */
 package it.tidalwave.northernwind.core.model.spi;
 
 import  javax.annotation.Nonnull;
 import  it.tidalwave.util.NotFoundException;
 import static org.springframework.core.Ordered.*;
 import static it.tidalwave.northernwind.core.model.SiteNode.SiteNode;
 import static it.tidalwave.northernwind.core.model.RequestProcessor.Status.*;

Author(s):
Fabrizio Giudici
Version:
$Id: DefaultContentRequestProcessor.java,v af2a69c0811e 2013/06/13 22:02:08 fabrizio $ /
 
 @Configurable @Scope(value = "session") @Order()
   {
     @Inject @Nonnull
     private Provider<SiteProvidersiteProvider;
 
     @Inject @Nonnull
     private SiteView siteView;
 
     @Inject @Nonnull
     private RequestHolder requestHolder;
 
     @Inject @Nonnull
     private RequestContext requestContext;

    
/
 
     @Override @Nonnull
     public Status process (final @Nonnull Request request)
       throws NotFoundException, IOExceptionHttpStatusException
       {
         try
           {
             final String relativeUri = request.getRelativeUri();
             final Site site = .get().getSite();
             final SiteNode node = site.find().withRelativeUri(relativeUri).result();
             .setNode(node);
             .renderSiteNode(node);
             //
             // Check *after* finding the SiteNode, since a "not found" must have been already handled here.
             //
             enforceTrailingSlash(relativeUrisite);
             return ;
           }
         finally
           {
             .clearNode();
           }
       }

    
If relativeUri doesn't end with a trailing slash, send a redirect to the proper Uri. /
    private void enforceTrailingSlash (final @Nonnull String relativeUrifinal @Nonnull Site site)
      throws HttpStatusException
      {
        final String originalRelativeUri = .get().getOriginalRelativeUri();
        if (!relativeUri.contains(".") && !originalRelativeUri.endsWith("/"))
          {
            throw new HttpStatusException(302).withHeader("Location"site.createLink(new ResourcePath(relativeUri)));
          }
      }
  }
New to GrepCode? Check out our FAQ X