My Sling rewriter changes all HTML elements to full uppercase.

Before: <div><h1 class="page-header">Welcome</h1></div>

After: <DIV><H1 class="page-header">Welcome</H1></DIV>

Is there a way to prevent this?

Thank you,

Nate






On 7/28/15, 10:59 AM, "Julian Sedding" <[email protected]> wrote:

>Hi Nate
>
>You can look in the webconsole at /system/console/status-Services and
>use your browser search to find the string "pipeline.type". That will
>point you to all kind of implementations. To fully understand what
>each does, you may need to dive into the source.
>
>Regards
>Julian
>
>On Tue, Jul 28, 2015 at 6:59 PM, Nate Yolles <[email protected]> wrote:
>> Thank you Justin!
>>
>> After changing the generatorType to ³html-generator² and the
>> SerializerType to ³html-serializer² everything worked great.
>>
>> Are there other options for generator, serializer and transformer types?
>> If so, are there any docs that list all of the options?
>>
>> Thanks again,
>>
>> Nate
>>
>>
>>
>>
>> On 7/28/15, 9:11 AM, "Justin Edelson" <[email protected]> wrote:
>>
>>>Hi Nate,
>>>IIUC, in Sling, you need to use "html-generator". "htmlparser" refers to
>>>an
>>>AEM component.
>>>
>>>See
>>>https://github.com/apache/sling/blob/trunk/contrib/extensions/rewriter/s
>>>rc
>>>/main/java/org/apache/sling/rewriter/impl/components/HtmlGeneratorFactor
>>>y.
>>>java
>>>
>>>Regards,
>>>Justin
>>>
>>>On Tue, Jul 28, 2015 at 11:46 AM Nate Yolles <[email protected]> wrote:
>>>
>>>> Hello,
>>>>
>>>> I¹m trying to add a link rewriter into the pipeline but I¹m running
>>>>into
>>>> some trouble. I¹ve done this in AEM/CQ a few times but this is the
>>>>first
>>>> time I¹m attempting it in a pure Sling application. I¹m using
>>>> ³org.apache.sling.launchpad-7-standalone.jar² with Sightly. When I try
>>>>to
>>>> load a page I get the error ³Unable to get component of class
>>>>Œinterface
>>>> org.apache.sling.rewriter.Generator¹ with type Œhtmlparser¹.²
>>>>
>>>> Any guidance would be appreciated.
>>>>
>>>> Thank you!
>>>>
>>>>
>>>> 28.07.2015 08:07:26.341 *ERROR* [0:0:0:0:0:0:0:1 [1438096046286] GET
>>>> /content/blog/index.html HTTP/1.1]
>>>> org.apache.sling.servlets.resolver.internal.SlingServletResolver
>>>>Original
>>>> error class java.io.IOException
>>>>
>>>> java.io.IOException: Unable to get component of class 'interface
>>>> org.apache.sling.rewriter.Generator' with type 'htmlparser'.
>>>>
>>>> at
>>>>
>>>>org.apache.sling.rewriter.impl.PipelineImpl.getPipelineComponent(Pipeli
>>>>ne
>>>>Impl.java:160)
>>>>
>>>> at
>>>>org.apache.sling.rewriter.impl.PipelineImpl.init(PipelineImpl.java:85)
>>>>
>>>> at
>>>>
>>>>org.apache.sling.rewriter.impl.ProcessorManagerImpl.getProcessor(Proces
>>>>so
>>>>rManagerImpl.java:445)
>>>>
>>>> at
>>>>
>>>>org.apache.sling.rewriter.impl.RewriterResponse.getProcessor(RewriterRe
>>>>sp
>>>>onse.java:172)
>>>>
>>>> at
>>>>
>>>>org.apache.sling.rewriter.impl.RewriterResponse.getWriter(RewriterRespo
>>>>ns
>>>>e.java:110)
>>>>
>>>> at
>>>>
>>>>org.apache.sling.scripting.core.impl.helper.OnDemandWriter.getWriter(On
>>>>De
>>>>mandWriter.java:38)
>>>>
>>>> at
>>>>
>>>>org.apache.sling.scripting.core.impl.helper.OnDemandWriter.write(OnDema
>>>>nd
>>>>Writer.java:75)
>>>>
>>>> at java.io.PrintWriter.write(PrintWriter.java:456)
>>>>
>>>> at java.io.PrintWriter.write(PrintWriter.java:473)
>>>>
>>>> at
>>>>
>>>>libs.publick.pages.page.SightlyJava_html.render(SightlyJava_html.java:3
>>>>7)
>>>>
>>>> I have a configuration node under
>>>> /apps/mysite/config/rewriter/linkrewriter along with
>>>> /apps/mysite/config/rewriter/linkrewriter/generator-htmlparser
>>>>
>>>>
>>>> {
>>>>
>>>>     "jcr:primaryType": "sling:Folder",
>>>>
>>>>     "rewriter" : {
>>>>
>>>>         "jcr:primaryType": "sling:Folder",
>>>>
>>>>         "linkrewriter" : {
>>>>
>>>>             "jcr:primaryType" : "nt:unstructured",
>>>>
>>>>             "contentTypes" : [
>>>>
>>>>                 "text/html"
>>>>
>>>>             ],
>>>>
>>>>             "enabled" : true,
>>>>
>>>>             "generatorType" : "htmlparser",
>>>>
>>>>             "order" : 1,
>>>>
>>>>             "paths" : [
>>>>
>>>>                 "/content"
>>>>
>>>>             ],
>>>>
>>>>             "serializerType" : "htmlwriter",
>>>>
>>>>             "transformerTypes" : [
>>>>
>>>>                 "linkrewriter"
>>>>
>>>>             ],
>>>>
>>>>             "generator-htmlparser" : {
>>>>
>>>>                 "jcr:primaryType" : "nt:unstructured",
>>>>
>>>>                 "includeTags" : [
>>>>
>>>>                     "A",
>>>>
>>>>                     "/A"
>>>>
>>>>                 ]
>>>>
>>>>             }
>>>>
>>>>         }
>>>>
>>>>     }
>>>>
>>>> }
>>>>
>>>> Then I have the Transformer and TransformerFactory implementations:
>>>>
>>>>
>>>> import java.io.IOException;
>>>>
>>>> import java.util.Map;
>>>>
>>>>
>>>> import org.apache.felix.scr.annotations.Activate;
>>>>
>>>> import org.apache.felix.scr.annotations.Component;
>>>>
>>>> import org.apache.felix.scr.annotations.Deactivate;
>>>>
>>>> import org.apache.felix.scr.annotations.Properties;
>>>>
>>>> import org.apache.felix.scr.annotations.Property;
>>>>
>>>> import org.apache.felix.scr.annotations.Reference;
>>>>
>>>> import org.apache.felix.scr.annotations.Service;
>>>>
>>>> import org.apache.sling.api.SlingHttpServletRequest;
>>>>
>>>> import org.apache.sling.commons.osgi.PropertiesUtil;
>>>>
>>>> import org.apache.sling.rewriter.ProcessingComponentConfiguration;
>>>>
>>>> import org.apache.sling.rewriter.ProcessingContext;
>>>>
>>>> import org.apache.sling.rewriter.Transformer;
>>>>
>>>> import org.apache.sling.rewriter.TransformerFactory;
>>>>
>>>> import org.osgi.service.component.ComponentContext;
>>>>
>>>> import org.xml.sax.Attributes;
>>>>
>>>> import org.xml.sax.ContentHandler;
>>>>
>>>> import org.xml.sax.Locator;
>>>>
>>>> import org.xml.sax.SAXException;
>>>>
>>>> import org.xml.sax.helpers.AttributesImpl;
>>>>
>>>>
>>>> @Component
>>>>
>>>> @Service
>>>>
>>>> @Property(name="pipeline.type", value="linkrewriter",
>>>>propertyPrivate=true)
>>>>
>>>> public class LinkRewriterTransformerFactory implements
>>>>TransformerFactory {
>>>>
>>>>
>>>>     public Transformer createTransformer() {
>>>>
>>>>         return new LinkRewriterTransformer();
>>>>
>>>>     }
>>>>
>>>>
>>>>     @Activate
>>>>
>>>>     protected void activate(Map<String, Object> properties) {
>>>>
>>>>     }
>>>>
>>>>
>>>>     @Deactivate
>>>>
>>>>     protected void deactivate(ComponentContext ctx) {
>>>>
>>>>     }
>>>>
>>>>
>>>>     private class LinkRewriterTransformer implements Transformer {
>>>>
>>>>         private ContentHandler contentHandler;
>>>>
>>>>
>>>>         public void characters(char[] ch, int start, int length)
>>>>throws
>>>> SAXException {
>>>>
>>>>             contentHandler.characters(ch, start, length);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void dispose() {
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void endDocument() throws SAXException {
>>>>
>>>>             contentHandler.endDocument();
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void endElement(String uri, String localName, String
>>>>qName)
>>>> throws SAXException {
>>>>
>>>>             contentHandler.endElement(uri, localName, qName);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void endPrefixMapping(String prefix) throws
>>>>SAXException
>>>>{
>>>>
>>>>             contentHandler.endPrefixMapping(prefix);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void ignorableWhitespace(char[] ch, int start, int
>>>>length)
>>>> throws SAXException {
>>>>
>>>>             contentHandler.ignorableWhitespace(ch, start, length);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void init(ProcessingContext context,
>>>> ProcessingComponentConfiguration config) throws IOException {
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void processingInstruction(String target, String data)
>>>> throws SAXException {
>>>>
>>>>             contentHandler.processingInstruction(target, data);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void setContentHandler(ContentHandler handler) {
>>>>
>>>>             this.contentHandler = handler;
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void setDocumentLocator(Locator locator) {
>>>>
>>>>             contentHandler.setDocumentLocator(locator);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void skippedEntity(String name) throws SAXException {
>>>>
>>>>             contentHandler.skippedEntity(name);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void startDocument() throws SAXException {
>>>>
>>>>             contentHandler.startDocument();
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void startElement(String uri, String localName, String
>>>> qName, Attributes atts) throws SAXException {
>>>>
>>>>             contentHandler.startElement(uri, localName, qName, atts);
>>>>
>>>>
>>>>
>>>> //            final AttributesImpl attributes = new
>>>>AttributesImpl(atts);
>>>>
>>>> //            final String href = attributes.getValue("href");
>>>>
>>>> //            final boolean enableRewritePath = true;
>>>>
>>>> //
>>>>
>>>> //            if (href != null && href.startsWith("/")) {
>>>>
>>>> //
>>>>
>>>> //                for (int i = 0; i < attributes.getLength(); i++) {
>>>>
>>>> //                    if
>>>>("href".equalsIgnoreCase(attributes.getQName(i)))
>>>> {
>>>>
>>>> //                        attributes.setValue(i, enableRewritePath ?
>>>> rewritePath(href) : href);
>>>>
>>>> //                    }
>>>>
>>>> //                }
>>>>
>>>> //            }
>>>>
>>>> //
>>>>
>>>> //            contentHandler.startElement(uri, localName, qName,
>>>> attributes);
>>>>
>>>>         }
>>>>
>>>>
>>>>         public void startPrefixMapping(String prefix, String uri)
>>>>throws
>>>> SAXException {
>>>>
>>>>             contentHandler.startPrefixMapping(prefix, uri);
>>>>
>>>>         }
>>>>
>>>>
>>>>         private String rewritePath(final String href) {
>>>>
>>>>             return href.replace("/content", "");
>>>>
>>>>         }
>>>>
>>>>     }
>>>>
>>>> }
>>>>
>>

Reply via email to