Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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.apache.sling.urlrewriter.internal;
 
 
 
 import  org.osgi.service.component.ComponentContext;
 
     label = "Apache Sling URL Rewriter",
     description = "multi-purpose service for altering HTTP requests/responses based on Tuckey's UrlRewriteFilter",
     immediate = true,
     metatype = true,
     policy = .
 )
     @Property(
         name = .,
         value = "The Apache Software Foundation"
     ),
     @Property(
         name = .,
         value = "multi-purpose service for altering HTTP requests/responses based on Tuckey's UrlRewriteFilter"
     ),
     @Property(
         name = .,
         intValue = 0,
         propertyPrivate = false
     ),
     @Property(
         name = .,
         value = {
             .,
             .
         }
     )
 })
 public final class SlingUrlRewriteFilter implements Filter {
 
     private UrlRewriter rewriter;
 
     public static final String DEFAULT_REWRITE_RULES = "<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE urlrewrite PUBLIC \"-//tuckey.org//DTD UrlRewrite 4.0//EN\" \"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd\"><urlrewrite/>";
 
     @Property(value = )
     public static final String REWRITE_RULES_PARAMETER = "org.apache.sling.urlrewriter.rewrite.rules";
 
     private final Logger logger = LoggerFactory.getLogger(SlingUrlRewriteFilter.class);
 
    public SlingUrlRewriteFilter() {
        Log.setLevel("SLF4J");
    }
    @Activate
    private void activate(final ComponentContext context) {
        .debug("activate");
        configure(context);
    }
    @Modified
    private void modified(final ComponentContext context) {
        .debug("modified");
        configure(context);
    }
    @Deactivate
    private void deactivate() {
        .debug("deactivate");
        clearRewriter();
    }
    private void configure(final ComponentContext context) {
        .info("configuring URL rewriter");
        final Dictionary properties = context.getProperties();
        final String rules = PropertiesUtil.toString(properties.get(), );
        final Document document = createDocument(rules);
        if (document == null) {
            .error("creating rules document failed");
            return;
        }
        final Conf conf = new DocumentConf(document);
        conf.initialise();
        clearRewriter();
        if (conf.isOk()) {
            .info("rewrite configuration is ok");
        } else {
            .error("rewrite configuration is NOT ok");
            return;
        }
         = new UrlRewriter(conf);
        .info("rewrite engine is enabled: {}"conf.isEngineEnabled());
        if (conf.getRules() != null) {
            .info("number of rewrite rules: {}"conf.getRules().size());
        } else {
            .info("no rewrite rules");
        }
    }
    @Override
    public void destroy() {
        .debug("destroy()");
    }
    @Override
    public void init(final FilterConfig filterConfigthrows ServletException {
        .debug("init({})"filterConfig);
    }
    @Override
    public void doFilter(final ServletRequest servletRequestfinal ServletResponse servletResponsefinal FilterChain filterChainthrows IOExceptionServletException {
        .debug("do filter");
        if ( != null && servletRequest instanceof HttpServletRequest && servletResponse instanceof HttpServletResponse) {
            final HttpServletRequest httpServletRequest = (HttpServletRequestservletRequest;
            final HttpServletResponse httpServletResponse = (HttpServletResponseservletResponse;
            final boolean handled = .processRequest(httpServletRequesthttpServletResponsefilterChain);
            if (handled) {
                .debug("request handled by rewriter");
                return;
            }
        }
        .debug("request NOT handled by rewriter");
        filterChain.doFilter(servletRequestservletResponse);
    }
    private Document createDocument(final String rules) {
        if (StringUtils.isBlank(rules)) {
            .warn("given rules are blank");
            return null;
        }
        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(true);
        factory.setNamespaceAware(true);
        factory.setIgnoringComments(true);
        factory.setIgnoringElementContentWhitespace(true);
        try {
            final String systemId = "";
            final ConfHandler confHandler = new ConfHandler(systemId);
            final DocumentBuilder documentBuilder = factory.newDocumentBuilder();
            documentBuilder.setErrorHandler(confHandler);
            documentBuilder.setEntityResolver(confHandler);
            final InputStream inputStream = new ByteArrayInputStream(rules.getBytes("UTF-8"));
            final Document document = documentBuilder.parse(inputStream); // , systemId);
            IOUtils.closeQuietly(inputStream);
            return document;
        } catch (Exception e) {
            .error("error creating document from rules property"e);
            return null;
        }
    }
    private synchronized void clearRewriter() {
        if ( != null) {
            .destroy();
             = null;
        }
    }
    public class DocumentConf extends Conf {
        public DocumentConf(final Document rules) {
            processConfDoc(rules);
            // TODO check docProcessed
            initialise();
            // TODO set loadedDate
        }
    }
    // TODO
    public class ConfHandler extends DefaultHandler {
        protected final String systemId;
        public ConfHandler(final String systemId) {
            this. = systemId;
        }
    }
New to GrepCode? Check out our FAQ X