net.kldp.beat.system.interceptor
Class MultipartInterceptor

java.lang.Object
  extended by net.kldp.beat.system.interceptor.MultipartInterceptor
All Implemented Interfaces:
Interceptor, SystemInterceptor

final class MultipartInterceptor
extends java.lang.Object
implements SystemInterceptor

Multipart인터셉터입니다. Multipart인터셉터가 작동하기 위해서는 사용자 요청이 Multipart/Form-data방식이어야 하며, 액션 클래스에


Field Summary
private static Log logger
           
 
Constructor Summary
MultipartInterceptor()
           
 
Method Summary
private  void addError(java.lang.Object action, MultipartRequest multipart, FileUploadException e)
          업로드 허용 크기를 초과한 경우 에러 메세지를 삽입합니다.
private  java.lang.Object[] addValue(java.lang.Object oldValue, java.lang.Object value)
          객체를 더한 배열을 리턴합니다. oldValue객체가 배열이라면 배열의 마지막에 추가하고, 그렇지 않으면 두 객체를 담은 배열을 리턴합니다.
private  ServletFileUpload getServletFileUpload()
          Apache commons upload의 객체를 생성합니다.
 void intercept(java.lang.Object action, ActionContext context, java.lang.annotation.Annotation annotation)
           
private  boolean isMultipart(HttpServletRequest servletRequest)
          현재 요청이 Multipart/Form-data인지 파악합니다.
private  java.util.Map<java.lang.String,java.lang.Object> multipartParser(HttpServletRequest request, MultipartRequest multipart)
          Request를 해석한 뒤에 파라미터를 맵으로 리턴합니다.
private  java.io.File saveFile(FileItem item)
          임시 디렉토리에 파일을 저장합니다.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

private static Log logger
Constructor Detail

MultipartInterceptor

MultipartInterceptor()
Method Detail

intercept

public void intercept(java.lang.Object action,
                      ActionContext context,
                      java.lang.annotation.Annotation annotation)
               throws InterceptorException
Specified by:
intercept in interface SystemInterceptor
Throws:
InterceptorException

multipartParser

private java.util.Map<java.lang.String,java.lang.Object> multipartParser(HttpServletRequest request,
                                                                         MultipartRequest multipart)
                                                                  throws FileUploadException,
                                                                         InterceptorException
Request를 해석한 뒤에 파라미터를 맵으로 리턴합니다. 이 파라미터는 ActionContext에 주입되고, ParameterMap을 대체합니다.

Parameters:
request -
multipart -
Returns:
parameterMap
Throws:
FileUploadException
InterceptorException

addValue

private java.lang.Object[] addValue(java.lang.Object oldValue,
                                    java.lang.Object value)
객체를 더한 배열을 리턴합니다. oldValue객체가 배열이라면 배열의 마지막에 추가하고, 그렇지 않으면 두 객체를 담은 배열을 리턴합니다.

Parameters:
oldValue -
value -
Returns:

saveFile

private java.io.File saveFile(FileItem item)
                       throws java.lang.Exception
임시 디렉토리에 파일을 저장합니다. 업로드 중복 방지를 위해 파일 확장자 뒤에 현재 시각이 덧붙여 집니다.

Parameters:
item -
Returns:
savedFile
Throws:
java.lang.Exception

getServletFileUpload

private ServletFileUpload getServletFileUpload()
Apache commons upload의 객체를 생성합니다.

Returns:

addError

private void addError(java.lang.Object action,
                      MultipartRequest multipart,
                      FileUploadException e)
               throws InterceptorException
업로드 허용 크기를 초과한 경우 에러 메세지를 삽입합니다. 만약 액션 클래스가 ValidationAware를 구현하지 않은 경우, 통상적인 업로드 예외로 처리됩니다.

Parameters:
action -
multipart -
e -
Throws:
InterceptorException

isMultipart

private boolean isMultipart(HttpServletRequest servletRequest)
현재 요청이 Multipart/Form-data인지 파악합니다.

Parameters:
servletRequest -
Returns: