Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
change: 用TempFile的新方法重新实现Upload适配器的几个注入器
- Loading branch information
Showing
7 changed files
with
80 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
src/org/nutz/mvc/upload/injector/AbstractUploadInjector.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,39 @@ | |||
package org.nutz.mvc.upload.injector; | |||
|
|||
import java.util.List; | |||
import java.util.Map; | |||
|
|||
import org.nutz.mvc.adaptor.ParamInjector; | |||
import org.nutz.mvc.upload.TempFile; | |||
|
|||
public abstract class AbstractUploadInjector implements ParamInjector { | |||
|
|||
protected String name; | |||
|
|||
public AbstractUploadInjector(String name) { | |||
this.name = name; | |||
} | |||
|
|||
@SuppressWarnings("unchecked") | |||
protected TempFile getTempFile(Object refer, String name) { | |||
if (refer == null) | |||
return null; | |||
Object obj = ((Map<String, Object>) refer).get(name); | |||
if (obj == null) | |||
return null; | |||
|
|||
// Map 中只有可能有两种值, TempFile 或者 List<TempFile> | |||
// 如果是单一对象直接返回 | |||
if (obj instanceof TempFile) { | |||
return (TempFile) obj; | |||
} | |||
// 如果是列表,则取第一项 | |||
else { | |||
List<?> list = (List<?>) obj; | |||
if (list.isEmpty()) | |||
return null; | |||
else | |||
return (TempFile) list.get(0); | |||
} | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,28 +1,25 @@ | |||
package org.nutz.mvc.upload.injector; | package org.nutz.mvc.upload.injector; | ||
|
|
||
import java.util.Map; | |||
|
|||
import javax.servlet.ServletContext; | import javax.servlet.ServletContext; | ||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||
|
|
||
import org.nutz.mvc.adaptor.ParamInjector; | |||
import org.nutz.mvc.upload.TempFile; | import org.nutz.mvc.upload.TempFile; | ||
|
|
||
@Deprecated | @Deprecated | ||
public class FileMetaInjector implements ParamInjector { | public class FileMetaInjector extends AbstractUploadInjector { | ||
|
|
||
public FileMetaInjector(String name) { | public FileMetaInjector(String name) { | ||
this.name = name; | super(name); | ||
} | } | ||
|
|
||
private String name; | |||
|
|||
@SuppressWarnings("unchecked") | |||
public Object get(ServletContext sc, HttpServletRequest req, HttpServletResponse resp, Object refer) { | public Object get(ServletContext sc, HttpServletRequest req, HttpServletResponse resp, Object refer) { | ||
if (refer == null) | if (refer == null) | ||
return null; | return null; | ||
return ((TempFile) ((Map<String, Object>) refer).get(name)).getMeta(); | TempFile tmp = getTempFile(refer, name); | ||
if (tmp == null) | |||
return null; | |||
return tmp.getMeta(); | |||
} | } | ||
|
|
||
} | } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,29 +1,34 @@ | |||
package org.nutz.mvc.upload.injector; | package org.nutz.mvc.upload.injector; | ||
|
|
||
import java.io.File; | import java.io.IOException; | ||
|
|
||
import javax.servlet.ServletContext; | import javax.servlet.ServletContext; | ||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||
|
|
||
import org.nutz.lang.Streams; | import org.nutz.lang.Lang; | ||
import org.nutz.mvc.upload.TempFile; | |||
|
|
||
@Deprecated | public class InputStreamInjector extends AbstractUploadInjector { | ||
public class InputStreamInjector extends FileInjector { | |||
|
|
||
public InputStreamInjector(String name) { | public InputStreamInjector(String name) { | ||
super(name); | super(name); | ||
} | } | ||
|
|
||
@Override | |||
public Object get( ServletContext sc, | public Object get( ServletContext sc, | ||
HttpServletRequest req, | HttpServletRequest req, | ||
HttpServletResponse resp, | HttpServletResponse resp, | ||
Object refer) { | Object refer) { | ||
if (refer == null) | if (refer == null) | ||
return null; | return null; | ||
File f = getFile(refer); | TempFile tmp = getTempFile(refer, name); | ||
return Streams.buff(Streams.fileIn(f)); | if (tmp == null) | ||
return null; | |||
try { | |||
return tmp.getInputStream(); | |||
} catch (IOException e) { | |||
throw Lang.wrapThrow(e); | |||
} | |||
} | } | ||
|
|
||
} | } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,32 +1,36 @@ | |||
package org.nutz.mvc.upload.injector; | package org.nutz.mvc.upload.injector; | ||
|
|
||
import java.io.File; | import java.io.IOException; | ||
import java.io.InputStreamReader; | |||
|
|
||
import javax.servlet.ServletContext; | import javax.servlet.ServletContext; | ||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||
|
|
||
import org.nutz.lang.Lang; | |||
import org.nutz.lang.Streams; | import org.nutz.lang.Streams; | ||
import org.nutz.mvc.upload.TempFile; | |||
|
|
||
/** | public class ReaderInjector extends AbstractUploadInjector { | ||
* @since 1.r.55开始使用与servlet 3.0+一致的Part接口,原方法标记为弃用. | |||
*/ | |||
@Deprecated | |||
public class ReaderInjector extends FileInjector { | |||
|
|
||
public ReaderInjector(String name) { | public ReaderInjector(String name) { | ||
super(name); | super(name); | ||
} | } | ||
|
|
||
@Override | |||
public Object get( ServletContext sc, | public Object get( ServletContext sc, | ||
HttpServletRequest req, | HttpServletRequest req, | ||
HttpServletResponse resp, | HttpServletResponse resp, | ||
Object refer) { | Object refer) { | ||
if (refer == null) | if (refer == null) | ||
return null; | return null; | ||
File f = getFile(refer); | TempFile tmp = getTempFile(refer, name); | ||
return Streams.buffr(Streams.fileInr(f)); | if (tmp == null) | ||
return null; | |||
try { | |||
return Streams.buffr(new InputStreamReader(tmp.getInputStream())); | |||
} catch (IOException e) { | |||
throw Lang.wrapThrow(e); | |||
} | |||
} | } | ||
|
|
||
} | } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,30 +1,19 @@ | |||
package org.nutz.mvc.upload.injector; | package org.nutz.mvc.upload.injector; | ||
|
|
||
import java.util.Map; | |||
|
|||
import javax.servlet.ServletContext; | import javax.servlet.ServletContext; | ||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||
|
|
||
import org.nutz.mvc.adaptor.ParamInjector; | |||
import org.nutz.mvc.upload.TempFile; | import org.nutz.mvc.upload.TempFile; | ||
|
|
||
public class TempFileInjector implements ParamInjector { | public class TempFileInjector extends AbstractUploadInjector { | ||
|
|
||
public TempFileInjector(String name) { | public TempFileInjector(String name) { | ||
this.name = name; | super(name); | ||
} | } | ||
|
|
||
private String name; | |||
|
|||
@SuppressWarnings("unchecked") | |||
public TempFile get(ServletContext sc, HttpServletRequest req, HttpServletResponse resp, Object refer) { | public TempFile get(ServletContext sc, HttpServletRequest req, HttpServletResponse resp, Object refer) { | ||
if (refer == null) | return getTempFile(refer, name); | ||
return null; | |||
Object tmp = ((Map<String, Object>) refer).get(name); | |||
if (tmp != null && tmp instanceof TempFile) | |||
return (TempFile)tmp; | |||
return null; | |||
} | } | ||
|
|
||
} | } |