Cq5.5 aplicando um filtro de servlet a um caminho específico

Estou trabalhando em um manipulador de formulário personalizado no cq5.5 e tudo está indo muito bem. Agora estou trabalhando para bloquear parte da segurança e uma das minhas tarefas é implementar um filtro de controle de solicitações no caminho dos manipuladores de formulários.

Atualmente eu tenho algo como

@Component(immediate = true, metatype = true)

@Service(javax.servlet.Filter.class)

@Properties({
  @Property(name="service.pid", value="com.xxxxxx.cq.core.filter.FormFilter",propertyPrivate=false),
  @Property(name="service.description",value="FormFilter", propertyPrivate=false),
  @Property(name="service.vendor",value="xxxxxx - Microsites", propertyPrivate=false),
  @Property(name = "filter.scope", value = "request"),
  @Property(name = "sling.filter.scope", value = "request"),
  @Property(name = "service.ranking", intValue = 100001)
})

public class FormFilter implements javax.servlet.Filter {
  private Logger LOGGER = LoggerFactory.getLogger(TrackingFilter.class.getName());
  private static final Object lock = new Object();

  @Override
  public void doFilter(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException {
      //my filter stuff
  }
}

Isso funciona bem, mas eu gostaria de bloqueá-lo para executar apenas em um caminho específico.

obrigado por todas as idéias.

---- EDIT ----- Depois de fazer mais pesquisas, encontrei algumas postagens informando que não há como registrar um filtro em um caminho especificado para o manipulador ServletFilter padrão. Basicamente, as duas soluções para esse problema que encontrei foram criar um novo pacote OSGI para o filtro e registrá-lo usando o ExtHTTPService ou o Whiteboard:

http://felix.apache.org/documentation/subprojects/apache-felix-http-service.html

OU

Filtre o URL dentro do próprio filtro. Então, basicamente, adicione uma verificação para o caminho especificado no meu filtro.

ou seja:

  @Override
  public void doFilter(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException {

      String path = pRequest.getContextPath();

      if (path.contains("my/matching/path")
      {
        //my filter stuff
      }
  }

Gostaria de ver se existem soluções adicionais para esse problema, mas gostaria de compartilhar o que consegui encontrar até agora, na esperança de que isso ajude a estimular mais idéias ou até mesmo ajude alguém com o mesmo problema a economizar alguns tempo na pesquisa do google.

obrigada Brodie

questionAnswers(2)

yourAnswerToTheQuestion