magoffin.matt.ma2.image.jmagick
Class JpegMediaHandler

java.lang.Object
  extended by magoffin.matt.ma2.support.AbstractMediaHandler
      extended by magoffin.matt.ma2.image.BaseImageMediaHandler
          extended by magoffin.matt.ma2.image.jmagick.BaseJMagickMediaHandler
              extended by magoffin.matt.ma2.image.jmagick.JpegMediaHandler
All Implemented Interfaces:
MediaHandler, MediaHandlerDelegate
Direct Known Subclasses:
PngMediaHandler

public class JpegMediaHandler
extends BaseJMagickMediaHandler
implements MediaHandlerDelegate

JPEG media handler using JMagick.

The configurable properties of this class are:

useJpeg2000
If true then serve re-sized images as JPEG2000 files (.jp2). Otherwise serve re-sized iamges as normal JPEG files. Defaults to false.
jpeg2000UserAgentPatterns
If configured, then only serve JPEG2000 files to user agents that match any of the regular expressions configured in this list. This list can also be set via the jpeg2000UserAgentRegExp property. If not configured then all re-sized images will be served as JPEG2000 (assuming the useJpeg200 property is configured as true). The regular expression matching will use the Matcher.find() method for evauluation.

Version:
$Revision: 43 $ $Date: 2007-10-21 11:10:01 +1300 (Sun, 21 Oct 2007) $
Author:
Matt Magoffin (spamsqr@msqr.us)

Field Summary
 
Fields inherited from class magoffin.matt.ma2.image.jmagick.BaseJMagickMediaHandler
DEFAULT_OUTPUT_DEPTH
 
Fields inherited from class magoffin.matt.ma2.image.BaseImageMediaHandler
DEFAULT_ORIENTATION_180_VALUE, DEFAULT_ORIENTATION_90_CLOCKWISE_VALUE, DEFAULT_ORIENTATION_90_COUNTER_CLOCKWISE_VALUE, DEFAULT_ORIENTATION_METADATA_KEY, ROTATE_180, ROTATE_90_CCW, ROTATE_90_CW
 
Fields inherited from class magoffin.matt.ma2.support.AbstractMediaHandler
log, METADATA_PARAMETER_KEY
 
Constructor Summary
  JpegMediaHandler()
          Default constructor.
protected JpegMediaHandler(java.lang.String mimeType)
          Construct with a different MIME type.
 
Method Summary
 java.lang.String getDelegateFileExtension(org.springframework.core.io.Resource mediaResource, java.lang.String mimeType, MediaItem item, MediaRequest request)
          Get the preferred file extension for this handler.
 java.lang.String getFileExtension(MediaItem item, MediaRequest request)
          Get the file extension.
 java.util.List<java.util.regex.Pattern> getJpeg2000UserAgentPatterns()
           
protected  java.lang.String getResponseMime(MediaItem item, MediaRequest request, org.springframework.core.io.Resource itemResource)
          Get the MIME type to set in the response.
 void handleDelegateMediaRequest(org.springframework.core.io.Resource mediaResource, java.lang.String mimeType, MediaItem item, MediaRequest request, MediaResponse response)
          Handle a delegate media request.
 boolean isUseJpeg2000()
           
 void setJpeg2000UserAgentPatterns(java.util.List<java.util.regex.Pattern> jpeg2000UserAgentPatterns)
           
 void setJpeg2000UserAgentRegExp(java.lang.String[] regExps)
          Set the JPEG2000 user agent regular expression matches as a String array.
 void setUseJpeg2000(boolean useJpeg2000)
           
 
Methods inherited from class magoffin.matt.ma2.image.jmagick.BaseJMagickMediaHandler
createNewMediaItem, defaultHandleRequest, defaultHandleResource, getEffect, getJmagickMediaEffectMap, getOutputDepth, handleMediaRequest, setJmagickMediaEffectMap, setOutputDepth, setupBaseItemProperties
 
Methods inherited from class magoffin.matt.ma2.image.BaseImageMediaHandler
getOrientation180Value, getOrientation90ClockwiseValue, getOrientation90CounterClockwiseValue, getOrientationMetadataKey, handleMetadata, needToRotate, setOrientation180Value, setOrientation90ClockwiseValue, setOrientation90CounterClockwiseValue, setOrientationMetadataKey
 
Methods inherited from class magoffin.matt.ma2.support.AbstractMediaHandler
applyEffects, createMetadataList, defaultHandleRequestOriginal, getDomainObjectFactory, getMediaBiz, getMediaMetadataInstance, getMime, getNoWatermarkSizes, getPreferredFileExtension, getRequestEffects, getSmetaPropertyMap, getUserBiz, needToAlter, setDomainObjectFactory, setMediaBiz, setMime, setNoWatermarkSizes, setPreferredFileExtension, setSmetaPropertyMap, setUserBiz
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JpegMediaHandler

public JpegMediaHandler()
Default constructor.


JpegMediaHandler

protected JpegMediaHandler(java.lang.String mimeType)
Construct with a different MIME type.

Parameters:
mimeType - the MIME type
Method Detail

getFileExtension

public java.lang.String getFileExtension(MediaItem item,
                                         MediaRequest request)
Description copied from class: AbstractMediaHandler
Get the file extension.

This method simply returns AbstractMediaHandler.getPreferredFileExtension(). Extending class may override this for request-specific handling.

Specified by:
getFileExtension in interface MediaHandler
Overrides:
getFileExtension in class AbstractMediaHandler
Parameters:
item - the media item to process
request - the request
Returns:
a file extension, without the period

handleDelegateMediaRequest

public void handleDelegateMediaRequest(org.springframework.core.io.Resource mediaResource,
                                       java.lang.String mimeType,
                                       MediaItem item,
                                       MediaRequest request,
                                       MediaResponse response)
Description copied from interface: MediaHandlerDelegate
Handle a delegate media request.

The mediaResource is not the original MediaItem resource, rather it is the media resource extracted from the MediaItem, e.g. the metadata resource.

Specified by:
handleDelegateMediaRequest in interface MediaHandlerDelegate
Parameters:
mediaResource - the media data to process
mimeType - the MIME type of the media data in mediaResource
item - the MediaItem being processed
request - the request
response - the response

getResponseMime

protected java.lang.String getResponseMime(MediaItem item,
                                           MediaRequest request,
                                           org.springframework.core.io.Resource itemResource)
Description copied from class: BaseJMagickMediaHandler
Get the MIME type to set in the response.

This implementation merely calls AbstractMediaHandler.getMime() but extending classes may need to override this.

Overrides:
getResponseMime in class BaseJMagickMediaHandler
Parameters:
item - the MediaItem being processed
request - the request
itemResource - the item resource being processed
Returns:
MIME

getDelegateFileExtension

public java.lang.String getDelegateFileExtension(org.springframework.core.io.Resource mediaResource,
                                                 java.lang.String mimeType,
                                                 MediaItem item,
                                                 MediaRequest request)
Description copied from interface: MediaHandlerDelegate
Get the preferred file extension for this handler.

The mediaResource is not the original MediaItem resource, rather it is the media resource extracted from the MediaItem, e.g. the metadata resource.

Some handlers might return a different file extension for a given request then the default file extension for their type (for example a PNG image handler that returns JPEG images when resizing the images.

Specified by:
getDelegateFileExtension in interface MediaHandlerDelegate
Parameters:
mediaResource - the media data to process
mimeType - the MIME type of the media data in mediaResource
item - the MediaItem being processed
request - the request
Returns:
a file extension, without the period

setJpeg2000UserAgentRegExp

public void setJpeg2000UserAgentRegExp(java.lang.String[] regExps)
Set the JPEG2000 user agent regular expression matches as a String array.

This will compile each string into a Pattern and place that onto the getJpeg2000UserAgentPatterns() list. This is mostly for the benefit of configuring the patterns. The regular expressions are compiled with the Pattern.CASE_INSENSITIVE flag.

Parameters:
regExps - the regular expression patterns to use

getJpeg2000UserAgentPatterns

public java.util.List<java.util.regex.Pattern> getJpeg2000UserAgentPatterns()
Returns:
the jpeg2000UserAgentPatterns

setJpeg2000UserAgentPatterns

public void setJpeg2000UserAgentPatterns(java.util.List<java.util.regex.Pattern> jpeg2000UserAgentPatterns)
Parameters:
jpeg2000UserAgentPatterns - the jpeg2000UserAgentPatterns to set

isUseJpeg2000

public boolean isUseJpeg2000()
Returns:
the useJpeg2000

setUseJpeg2000

public void setUseJpeg2000(boolean useJpeg2000)
Parameters:
useJpeg2000 - the useJpeg2000 to set