Package com.jalios.jcms.tools
Class AbstractFilePacker
- java.lang.Object
-
- com.jalios.jcms.tools.AbstractFilePacker
-
-
Field Summary
Fields Modifier and Type Field Description protected static Channel
channel
protected static java.lang.String
CHANNEL_PACKER_MINIFY_EXCLUSION_REGEX
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractFilePacker(java.lang.String extension)
Builds a new file packer using specified options.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.lang.String
getFilePack(java.lang.String[] relativeFilePaths)
Packs specified files into one and single string.protected static java.util.Set<java.lang.String>
getFilesInPack(java.lang.String urlPrefix, java.lang.String paramName, java.util.Collection<java.lang.String> files, java.lang.String browserName)
Workaround the browser limitation by distributing many js/css accross several pack.protected abstract org.apache.log4j.Logger
getLogger()
Returns the logger to be used for log messages.java.io.File
getMinifiedFile(java.io.File cssOrJsFile, java.lang.String relativeFilePath)
Retrieve the minified File associated to the specified CSS or JS file.protected boolean
isExcludedFromMinification(java.lang.String relativeFilePath)
Checks if given file should be excluded from minification due to exclusion regexps.boolean
minifyFile(java.io.File cssOrJsFile, boolean force)
Minify the specified CSS file into a compress version if it does not already exists in an up to date version.protected abstract boolean
perFileMinificationEnabled()
Check if minification should be performed on each file as opposed to the whole pack.protected abstract java.lang.String
processFileContent(java.lang.String relativeFilePath, java.io.File file, java.lang.String fileContent)
Process file content before adding it to the packprotected abstract java.lang.String
processPackContent(java.lang.String packContent)
Process the pack content before returning it the pack
-
-
-
Field Detail
-
channel
protected static final Channel channel
-
CHANNEL_PACKER_MINIFY_EXCLUSION_REGEX
protected static final java.lang.String CHANNEL_PACKER_MINIFY_EXCLUSION_REGEX
- See Also:
- Constant Field Values
-
-
Method Detail
-
getFilePack
public java.lang.String getFilePack(java.lang.String[] relativeFilePaths)
Packs specified files into one and single string.- Parameters:
relativeFilePaths
- an array of path relative to the webapp directory- Returns:
- a String containing path of all files to pack.
-
getMinifiedFile
public java.io.File getMinifiedFile(java.io.File cssOrJsFile, java.lang.String relativeFilePath)
Retrieve the minified File associated to the specified CSS or JS file.Example : If
new File("/test/foobar.css");
is specified as parameter, this method will returnnew File("/WEB-INF/jcmswork/min.css/test/foobar.css");
This method does not create the file, it simply retrieve the File instance.
- Parameters:
cssOrJsFile
- a valid CSS or JS filerelativeFilePath
- the path of the CSS or JS file relative to the webapp root- Returns:
- a new File instance
-
minifyFile
public boolean minifyFile(java.io.File cssOrJsFile, boolean force)
Minify the specified CSS file into a compress version if it does not already exists in an up to date version.For example, if
new File("/test/foobar.min.css");
is specified as parameter, this checks ifnew File("/test/foobar.min.css");
(as returned bygetMinifiedFile(File, String)
) exists and is up to date, if it is not it will create it.- Parameters:
cssOrJsFile
- the CSS File to compressforce
- set to true to force generation of minified file even if an up to date apparently exists- Returns:
- true if File was minified, false otherwise
-
isExcludedFromMinification
protected boolean isExcludedFromMinification(java.lang.String relativeFilePath)
Checks if given file should be excluded from minification due to exclusion regexps.Exclusion regexp can be declared using property "channel.packer.minify-exclusion-regex", or sub properties starting by "channel.packer.minify-exclusion-regex".
- Parameters:
relativeFilePath
- the file to check if it must be minified or not- Returns:
- true if file must be minified, false otherwise
- Since:
- jcms-10.0.1
-
getFilesInPack
protected static java.util.Set<java.lang.String> getFilesInPack(java.lang.String urlPrefix, java.lang.String paramName, java.util.Collection<java.lang.String> files, java.lang.String browserName)
Workaround the browser limitation by distributing many js/css accross several pack.- 2000 characters maximum for URL length : limit length of pack
- 288Kb per js/css file/pack on IE : limit size of pack
- Parameters:
urlPrefix
- the JS/CSS Packer URL previx, eg "css/csspacker.jsp?version=1234", "js/jspacker.jsp?"paramName
- the param name to use eg : "css" or "js"files
- the list of files to packbrowserName
- name of the browser used to find the properties 'channel.packer.xxx' defining the limit values. Ifnull
, use 'IE' because it's the most constraining.- Returns:
- a set of packed URL distributed with the maximum limits
-
processFileContent
protected abstract java.lang.String processFileContent(java.lang.String relativeFilePath, java.io.File file, java.lang.String fileContent)
Process file content before adding it to the pack- Parameters:
relativeFilePath
- the relative path of the file being processedfile
- the file being processedfileContent
- the fileContent as read by the AbstractFilePacker- Returns:
- the processed file content, must not return null.
-
processPackContent
protected abstract java.lang.String processPackContent(java.lang.String packContent)
Process the pack content before returning it the pack- Parameters:
packContent
- the whole pack content as computed by the AbstractFilePacker- Returns:
- the processed pack content, must not return null.
-
perFileMinificationEnabled
protected abstract boolean perFileMinificationEnabled()
Check if minification should be performed on each file as opposed to the whole pack.- Returns:
- true to use minified version of individual file, false if minification is disabled or enabled on whole pack
-
getLogger
protected abstract org.apache.log4j.Logger getLogger()
Returns the logger to be used for log messages. This methods must be implemented by the file packer.- Returns:
Logger
of this packer, must not return null.
-
-