Problema

¿Se puede comprobar si el código se está ejecutando en un autor o en una instancia de publicación?

Solución

La mejor manera de comprobar si su código se está ejecutando en el entorno de creación en CQ es la siguiente.
DeliveryHttpServletRequest cqRequest = (DeliveryHttpServletRequest) request; // flag para indicar si la aplicación es Author o Publish boolean isAdmin = !cqRequest.getCmsService().getDisplayControlSet(cqRequest).equals(DisplayControlSet.SHOW); // para indicar si la aplicación está en modo previsualización/mostrar boolean isShowMode = (cqRequest.getCmsService().getDisplayControlSet(cqRequest).equals(DisplayControlSet.SHOWMODE) ||| "ShowMode".equals(cqRequest.getParameter("Show")) );

Este método es mejor que comprobar la URL, porque este código no se basa en un contexto específico, que puede cambiar. Además, el servidor de autor puede cambiarse a modo de publicación ajustando el parámetro “Mostrar” a 1 en la petición. Así, la petición a /author/somepage.html?Show=1 se renderiza como pública. Por lo tanto, confiar en el contexto no es una solución fiable.