/**

* MKCOLメソッドの処理. boxインストールを行う.

* @param uriInfo UriInfo

* @param pCredHeader dcCredHeader

* @param contentType Content-Typeヘッダの値

* @param contentLength Content-Lengthヘッダの値

* @param requestKey イベントログに出力するRequestKeyフィールドの値

* @param inStream HttpリクエストのInputStream

* @return JAX-RS Response

*/

@WriteAPI

@WebDAVMethod.MKCOL

public Response mkcol(

@Context final UriInfo uriInfo,

@HeaderParam(PersoniumCoreUtils.HttpHeaders.X_PERSONIUM_CREDENTIAL) final String pCredHeader,

@HeaderParam(HttpHeaders.CONTENT_TYPE) final String contentType,

@HeaderParam(HttpHeaders.CONTENT_LENGTH) final String contentLength,

@HeaderParam(PersoniumCoreUtils.HttpHeaders.X_PERSONIUM_REQUESTKEY) String requestKey,

final InputStream inStream) {

PersoniumEventBus eventBus = new PersoniumEventBus(this.cell);

Event event = null;

Response res = null;

try {

// ログファイル出力

JSONEvent reqBody = new JSONEvent();

reqBody.setAction(WebDAVMethod.MKCOL.toString());

reqBody.setLevel(LEVEL.INFO);

reqBody.setObject(this.cell.getUrl() + boxName);

reqBody.setResult("");

// X-Personium-RequestKeyの解析(指定なしの場合にデフォルト値を補充)

requestKey = EventResource.validateXPersoniumRequestKey(requestKey);

// TODO findBugs対策↓

log.debug(requestKey);

event = EventResource.createEvent(reqBody, requestKey, this.accessContext);

// eventBus.outputEventLog(event);

if (Box.DEFAULT_BOX_NAME.equals(this.boxName)) {

throw PersoniumCoreException.Misc.METHOD_NOT_ALLOWED;

}

// Boxを作成するためにCellCtlResource、ODataEntityResource(ODataProducer)が必要

// この時点では "X-Personium-Credential" ヘッダーは不要なのでnullを指定する

CellCtlResource cellctl = new CellCtlResource(this.accessContext, null, this.cellRsCmp);

String keyName = "'" + this.boxName + "'";

ODataEntityResource odataEntity = new ODataEntityResource(cellctl, Box.EDM_TYPE_NAME, keyName);

Map headers = new HashMap();

headers.put(HttpHeaders.CONTENT_TYPE, contentType);

headers.put(HttpHeaders.CONTENT_LENGTH, contentLength);

// X-Personium-RequestKeyの解析(指定なしの場合にデフォルト値を補充)

BarFileInstaller installer =

new BarFileInstaller(this.cell, this.boxName, odataEntity, uriInfo);

res = installer.barFileInstall(headers, inStream, event.getRequestKey());

event.setResult(Integer.toString(res.getStatus()));

} catch (RuntimeException e) {

// TODO 内部イベントの正式対応が必要

if (e instanceof PersoniumCoreException) {

event.setResult(Integer.toString(((PersoniumCoreException) e).getStatus()));

if (((PersoniumCoreException) e).getStatus() < HttpStatus.SC_INTERNAL_SERVER_ERROR) {

event.setLevel(LEVEL.INFO);

} else {

event.setLevel(LEVEL.ERROR);

}

} else {

event.setResult(Integer.toString(HttpStatus.SC_INTERNAL_SERVER_ERROR));

event.setLevel(LEVEL.ERROR);

}

throw e;

} finally {

// 終了ログファイル出力

eventBus.outputEventLog(event);

}

return res;

}

java httpresponse headres属性,Java HttpHeaders.CONTENT_TYPE属性代码示例相关推荐

  1. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  2. java打印心_使用java打印心型与圆形图案实现代码示例

    本篇文章小编给大家分享一下使用java打印心型与圆形图案实现代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 相信对于打印三角形都没什么难度,只 ...

  3. Java 泛型(generics)详解及代码示例、Java 类型通配符详解及代码示例

    Java 泛型(generics)详解及代码示例.Java 类型通配符详解及代码示例 - 概念 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制 ...

  4. java double用法_Java Double doubleToLongBits()用法及代码示例

    Java Double类的java.lang.Double.doubleToLongBits()方法是Java中的内置函数,该函数根据IEEE 754浮点"double format&quo ...

  5. Java 7:项目代币中的代码示例

    该博客通过代码示例介绍了一些新的Java 7功能,这些功能在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更改确实简化了Java语言 ...

  6. Netcdf 文件多属性,按照时间段导出代码示例

    由于个人即是java初学者,又是netcdf文件小白,所以为了实现最终效果,可以对一个初始nc文件进行筛选指定变量,并且可以设定时间区间,花得时间比想象的要多,最终实现了效果,代码示例如下: @Get ...

  7. java 使用nullable_Java Stream ofNullable(T)用法及代码示例

    如果此流不为null,则ofNullable(T)方法将返回包含单个元素的顺序Stream,否则该方法将返回空Stream.它有助于处理空流和NullPointerException. 用法: sta ...

  8. java numberformat 方法_Java NumberFormat parse()用法及代码示例

    parse(str)方法是java.text.NumberFormat的内置方法,该方法从给定字符串的开头解析文本以产生数字.该方法可能不使用给定字符串的整个文本 用法: public Number ...

  9. python color属性_Python turtle.color方法代码示例

    本文整理汇总了Python中turtle.color方法的典型用法代码示例.如果您正苦于以下问题:Python turtle.color方法的具体用法?Python turtle.color怎么用?P ...

最新文章

  1. 神经网络AI加速器技术
  2. KMP中next数组的理解
  3. 复合页( Compound Page )
  4. 15b万用表怎么测电容_FLUKE-15B+型数字万用表操作规程
  5. 扒皮 || 优衣库X KAWS凭什么会被疯抢??!!!
  6. GDT,LDT,GDTR,LDTR 详解
  7. 广告竞价中为什么采用二价计费
  8. 计算机添加本地安全组用户名和密码错误,u租号总是密码错误-共享用户名和密码正确总提示错误...
  9. 欢迎大家加入我的Q群
  10. 苹果手机人脸识别不了是什么原因_iPhone和安卓手机的人脸识别有什么区别?
  11. J2EE高级开发框架小课程之Spring框架2——Spring容器作用域,生命周期,Spring管理对象之间依赖关系
  12. python语法速记, Python 3 Cheat Sheet
  13. 单片机读取EEPROM(AT24C64)值为0xff问题解决方法
  14. 大学生必备:用Python实现shua课自由,又是美好的一天
  15. Java精品项目源码第47期房屋租赁管理系统
  16. 美国纽约大学计算机专业排名,纽约大学计算机科学排名怎么样?专业好不好?
  17. 2021年Java面试心得:java短信模板设计
  18. 环信通信(即时通信)
  19. AUTOSAR架构学习之EcuM
  20. 车载监控平台(VIMS)介绍

热门文章

  1. java占位符打印_什么是 Java 构造器?
  2. 获取会话名称时错误 5_2019Java面试宝典系列|基础篇5
  3. 在windows环境中关于 pycharm配置 anaconda 虚拟环境
  4. java io流缓冲理解
  5. Filter过滤器实现同一地址手机和电脑页面不同
  6. UVA 11198 Dancing Digits
  7. mysql %3e -u -r_mysql基础
  8. Nginx之虚拟服务器配置
  9. Spark源码分析之BlockManagerMaster
  10. Spark源码分析之DAGScheduler以及stage的划分