ro.isdc.wro.model.resource.processor.impl.css
Class AbstractCssUrlRewritingProcessor

java.lang.Object
  extended by ro.isdc.wro.model.resource.processor.impl.css.AbstractCssUrlRewritingProcessor
All Implemented Interfaces:
ImportAware, ResourcePostProcessor, ResourcePreProcessor
Direct Known Subclasses:
CssDataUriPreProcessor, CssUrlRewritingProcessor

@SupportedResourceType(value=CSS)
public abstract class AbstractCssUrlRewritingProcessor
extends Object
implements ResourcePreProcessor, ResourcePostProcessor, ImportAware

A processor responsible for rewriting url's from inside the css resources.

Author:
Alex Objelean

Constructor Summary
AbstractCssUrlRewritingProcessor()
           
 
Method Summary
protected  String cleanImageUrl(String imageUrl)
          Cleans the image url by triming result and removing \' or \" characters if such exists.
protected  String getUrlPrefix()
          This method has protected modifier in order to be accessed by unit test class.
 boolean isImportAware()
          
protected  boolean isReplaceNeeded(String url)
          Check if url must be replaced or not.
protected  CssUrlInspector newCssUrlInspector()
           
protected  void onProcessCompleted()
          Invoked when the process operation is completed.
protected  void onUrlReplaced(String replacedUrl)
          Invoked when an url is replaced.
 void process(Reader reader, Writer writer)
          Perform actual resource processing.
 void process(Resource resource, Reader reader, Writer writer)
          Process a content supplied by a reader and perform some sort of processing.
protected  String replaceDeclaration(String originalDeclaration, String modifiedDeclaration)
          Invoked to replace the entire css declaration.
protected abstract  String replaceImageUrl(String cssUri, String imageUrl)
          Replace provided url with the new url if needed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractCssUrlRewritingProcessor

public AbstractCssUrlRewritingProcessor()
Method Detail

process

public void process(Reader reader,
                    Writer writer)
             throws IOException
Perform actual resource processing. The content to be processed is read from source Reader and is written to destination Writer. It is the client responsibility to close both: Reader and writer.

Specified by:
process in interface ResourcePostProcessor
Parameters:
reader - source stream.
writer - destination stream.
Throws:
IOException

process

public final void process(Resource resource,
                          Reader reader,
                          Writer writer)
                   throws IOException
Process a content supplied by a reader and perform some sort of processing. It is important to know that you should use reader for processing instead of trying to access the resource original content using Resource, because this way you can ignore the other preProcessors from the chain.
It is not require to explicitly handle exception. When the processing fails, the following can happen:
It is not required to close the reader and writers, because these will be closed for you.

Specified by:
process in interface ResourcePreProcessor
Parameters:
resource - the original resource as it found in the model.
reader - Reader used to read processed resource content.
writer - Writer where used to write processed results.
Throws:
IOException - when an exception occurs. The future version will change the exception type to Exception, because any exception may occur during processing. The processing failure will be handled based on value of WroConfiguration.isIgnoreFailingProcessor() configuration flag.

newCssUrlInspector

protected CssUrlInspector newCssUrlInspector()

onProcessCompleted

protected void onProcessCompleted()
Invoked when the process operation is completed. Useful to invoke some post processing logic or for custom logging.


replaceDeclaration

protected String replaceDeclaration(String originalDeclaration,
                                    String modifiedDeclaration)
Invoked to replace the entire css declaration.

An example of css declaration:

 background: url(/image.png);
 
Useful when the css declaration should be changed. The use-case is: FallbackCssDataUriProcessor.

Parameters:
originalDeclaration - the original, unchanged declaration.
modifiedDeclaration - the changed expression.
Returns:
the expression to apply. By default the modifiedExpression will be returned.

onUrlReplaced

protected void onUrlReplaced(String replacedUrl)
Invoked when an url is replaced. Useful if you need to do something with newly replaced url.

Parameters:
replacedUrl - the newly computed url created as a result of url rewriting.

replaceImageUrl

protected abstract String replaceImageUrl(String cssUri,
                                          String imageUrl)
Replace provided url with the new url if needed.

Parameters:
cssUri - Uri of the parsed css.
imageUrl - to replace.
Returns:
replaced url.

cleanImageUrl

protected final String cleanImageUrl(String imageUrl)
Cleans the image url by triming result and removing \' or \" characters if such exists.

Parameters:
imageUrl - to clean.
Returns:
cleaned image URL.

isReplaceNeeded

protected boolean isReplaceNeeded(String url)
Check if url must be replaced or not. The replacement is not needed if the url of the image is absolute (can be resolved by urlResourceLocator) or if the url is a data uri (base64 encoded value).

Parameters:
url - to check.
Returns:
true if url needs to be replaced or remain unchanged.

getUrlPrefix

protected String getUrlPrefix()
This method has protected modifier in order to be accessed by unit test class.

Returns:
urlPrefix value.

isImportAware

public boolean isImportAware()

Specified by:
isImportAware in interface ImportAware
Returns:
flag indicating if the implementor of this interface should process also imported (referred by @import directive) resources.


Copyright © 2008-2013. All Rights Reserved.