Преглед изворни кода

修复httpStatus的执行错误

zhourui пре 5 година
родитељ
комит
108e3bc5ee
100 измењених фајлова са 22 додато и 11856 уклоњено
  1. 21 5
      o2server/x_calendar_assemble_control/src/main/webapp/describe/sources/com/x/calendar/assemble/control/service/CalendarService.java
  2. 1 1
      o2server/x_console/src/main/java/com/x/server/console/action/ActionControl.java
  3. 0 6501
      o2server/x_file_assemble_control/src/main/webapp/describe/describe.json
  4. 0 24
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/AbstractFactory.java
  5. 0 33
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/ApplicationServletContextListener.java
  6. 0 100
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/Business.java
  7. 0 226
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/FileUtil.java
  8. 0 37
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/ThisApplication.java
  9. 0 83
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/Attachment2Factory.java
  10. 0 106
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/AttachmentFactory.java
  11. 0 34
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/FileFactory.java
  12. 0 123
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/Folder2Factory.java
  13. 0 77
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/FolderFactory.java
  14. 0 35
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/OriginFileFactory.java
  15. 0 47
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/RecycleFactory.java
  16. 0 106
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/ShareFactory.java
  17. 0 34
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/ActionApplication.java
  18. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/Attachment2JaxrsFilter.java
  19. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/AttachmentJaxrsFilter.java
  20. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/ComplexJaxrsFilter.java
  21. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/EditorJaxrsFilter.java
  22. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/FileJaxrsFilter.java
  23. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/Folder2JaxrsFilter.java
  24. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/FolderJaxrsFilter.java
  25. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/RecycleJaxrsFilter.java
  26. 0 10
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/ShareJaxrsFilter.java
  27. 0 54
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionDelete.java
  28. 0 119
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionDownload.java
  29. 0 119
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionDownloadStream.java
  30. 0 54
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGet.java
  31. 0 46
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGetBase64.java
  32. 0 66
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGetImageScaleBase64.java
  33. 0 73
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGetImageWidthHeightBase64.java
  34. 0 37
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListTop.java
  35. 0 54
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListWithEditor.java
  36. 0 48
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListWithFolder.java
  37. 0 54
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListWithShare.java
  38. 0 108
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpdate.java
  39. 0 83
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpdateContent.java
  40. 0 94
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpdateContentCallback.java
  41. 0 100
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpload.java
  42. 0 109
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUploadCallback.java
  43. 0 379
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/AttachmentAction.java
  44. 0 45
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/BaseAction.java
  45. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAllocateStorageMaaping.java
  46. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAllocateStorageMaapingCallback.java
  47. 0 14
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentAccessDenied.java
  48. 0 16
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentAccessDeniedCallback.java
  49. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentNotExist.java
  50. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentNotExistCallback.java
  51. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionEmptyExtension.java
  52. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionEmptyExtensionCallback.java
  53. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionExtensionNotMatch.java
  54. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionExtensionNotMatchCallback.java
  55. 0 14
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderAccessDenied.java
  56. 0 15
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderAccessDeniedCallback.java
  57. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderNotExist.java
  58. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderNotExistCallback.java
  59. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionSameNameFileExist.java
  60. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionSameNameFileExistCallback.java
  61. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionStorageNotExist.java
  62. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionStorageNotExistCallback.java
  63. 0 32
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionCheckFileExist.java
  64. 0 63
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDelete.java
  65. 0 120
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDownload.java
  66. 0 98
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDownloadImageWidthHeight.java
  67. 0 120
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDownloadStream.java
  68. 0 53
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGet.java
  69. 0 48
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGetBase64.java
  70. 0 67
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGetImageScaleBase64.java
  71. 0 92
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGetImageWidthHeightBase64.java
  72. 0 99
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListFileTypePaging.java
  73. 0 37
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListTop.java
  74. 0 54
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithEditor.java
  75. 0 38
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithFilter.java
  76. 0 47
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithFolder.java
  77. 0 54
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithShare.java
  78. 0 89
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionOfficePreview.java
  79. 0 57
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpdate.java
  80. 0 82
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpdateContent.java
  81. 0 93
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpdateContentCallback.java
  82. 0 125
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpload.java
  83. 0 134
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUploadCallback.java
  84. 0 31
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUseCapacity.java
  85. 0 443
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/Attachment2Action.java
  86. 0 45
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/BaseAction.java
  87. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAllocateStorageMaaping.java
  88. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAllocateStorageMaapingCallback.java
  89. 0 19
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentAccessDenied.java
  90. 0 23
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentAccessDeniedCallback.java
  91. 0 13
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNone.java
  92. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNoneCallback.java
  93. 0 15
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNotExist.java
  94. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNotExistCallback.java
  95. 0 17
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionEmptyExtension.java
  96. 0 17
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionEmptyExtensionCallback.java
  97. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionExtensionNotMatch.java
  98. 0 12
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionExtensionNotMatchCallback.java
  99. 0 13
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionFolderAccessDenied.java
  100. 0 15
      o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionFolderAccessDeniedCallback.java

+ 21 - 5
o2server/x_calendar_assemble_control/src/main/webapp/describe/sources/com/x/calendar/assemble/control/service/CalendarService.java

@@ -167,9 +167,9 @@ public class CalendarService {
 	public List<String> listWithCondition( EntityManagerContainer emc,  String name, String type, String source, String createor,
 			 List<String> inFilterCalendarIds, String personName, List<String> unitNames, List<String> groupNames ) throws Exception {
 		Business business =  new Business( emc );
-		//如果用户没有自己可管理的日历,则创建一个新的日历
+
+		//同步,避免前端的连续调用导致多条个人日历
 		List<String> ids = business.calendarFactory().listMyCalender( personName );
-		
 		if( ListTools.isEmpty( ids ) ) {
 			//创建一个自己的默认日历
 			Calendar calendar = new Calendar();
@@ -186,16 +186,32 @@ public class CalendarService {
 			calendar.setManageablePersonList( new ArrayList<>() );
 			calendar.setPublishablePersonList( new ArrayList<>() );
 			calendar.setViewablePersonList( new ArrayList<>() );
-			
+
 			addStringToList( personName, calendar.getManageablePersonList() );
 			addStringToList( personName, calendar.getPublishablePersonList() );
 			addStringToList( personName, calendar.getViewablePersonList() );
-			
+
+			queryForAddNewPersonalDefaultCalendar(emc, personName,calendar );
+
+		}
+		return business.calendarFactory().listWithCondition( name, type, source, createor, inFilterCalendarIds, personName, unitNames, groupNames );
+	}
+
+	/**
+	 * 同步方法,避免前端的连续调用导致多条个人日历信息
+	 * @param emc
+	 * @param personName
+	 * @param calendar
+	 * @throws Exception
+	 */
+	private synchronized void queryForAddNewPersonalDefaultCalendar(EntityManagerContainer emc, String personName, Calendar calendar) throws Exception {
+		Business business =  new Business( emc );
+		List<String> ids = business.calendarFactory().listMyCalender( personName );
+		if( ListTools.isEmpty( ids )){
 			emc.beginTransaction( Calendar.class );
 			emc.persist( calendar, CheckPersistType.all );
 			emc.commit();
 		}
-		return business.calendarFactory().listWithCondition( name, type, source, createor, inFilterCalendarIds, personName, unitNames, groupNames );
 	}
 
 	/**

+ 1 - 1
o2server/x_console/src/main/java/com/x/server/console/action/ActionControl.java

@@ -113,7 +113,7 @@ public class ActionControl extends ActionBase {
 	}
 
 	private static Option hsOption() {
-		return Option.builder("ts").longOpt("httpStatus").argName("repeat").optionalArg(true).hasArgs()
+		return Option.builder("hs").longOpt("httpStatus").argName("repeat").optionalArg(true).hasArgs()
 				.desc("Http服务线程状态,间隔5秒.").build();
 	}
 

+ 0 - 6501
o2server/x_file_assemble_control/src/main/webapp/describe/describe.json

@@ -1,6501 +0,0 @@
-{
-  "jaxrs": [
-    {
-      "name": "Attachment2Action",
-      "className": "com.x.file.assemble.control.jaxrs.attachment2.Attachment2Action",
-      "description": "附件操作",
-      "methods": [
-        {
-          "name": "checkFileExist",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionCheckFileExist",
-          "description": "根据文件的md5值查找附件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/exist/file/{fileMd5}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "fileMd5",
-              "type": "String",
-              "description": "附件md5值"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionDelete",
-          "description": "删除附件.",
-          "type": "DELETE",
-          "path": "jaxrs/attachment2/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "download",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionDownload",
-          "description": "获取附件内容,输出头信息",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "downloadImageWidthHeight",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionDownloadImageWidthHeight",
-          "description": "下载图片设定宽高后的(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/download/image/width/{width}/height/{height}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "width",
-              "type": "Integer",
-              "description": "宽度"
-            },
-            {
-              "name": "height",
-              "type": "Integer",
-              "description": "高度"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "downloadStream",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionDownloadStream",
-          "description": "获取附件内容.不输出头信息",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/download/stream",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionGet",
-          "description": "获取指定人员共享给我的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录."
-            },
-            {
-              "name": "originFile",
-              "type": "String",
-              "isCollection": false,
-              "description": "真实文件id."
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "getBase64",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionGetBase64",
-          "description": "获取文件Base64编码后的内容.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/binary/base64",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "getImageScaleBase64",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionGetImageScaleBase64",
-          "description": "获取图片缩放后的base64内容(png格式).scale(0-200)百分比缩放比例.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/image/scale/{scale}/binary/base64",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "scale",
-              "type": "Integer",
-              "description": "缩放比例"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "getImageWidthHeightBase64",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionGetImageWidthHeightBase64",
-          "description": "获取图片设定宽高后的base64内容(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/image/width/{width}/height/{height}/binary/base64",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "width",
-              "type": "Integer",
-              "description": "宽度"
-            },
-            {
-              "name": "height",
-              "type": "Integer",
-              "description": "高度"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "getUseCapacity",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionUseCapacity",
-          "description": "获取当前用户或指定用户(管理员权限)使用容量.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/user/capacity",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [
-            {
-              "name": "person",
-              "type": "String",
-              "description": "查询用户"
-            }
-          ],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Long",
-              "isCollection": false,
-              "description": "长整型值"
-            }
-          ]
-        },
-        {
-          "name": "listFileTypePaging",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionListFileTypePaging",
-          "description": "按附件类型分页显示.",
-          "type": "POST",
-          "path": "jaxrs/attachment2/list/type/{page}/size/{size}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "page",
-              "type": "Integer",
-              "description": "分页"
-            },
-            {
-              "name": "size",
-              "type": "Integer",
-              "description": "数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件分类:图片(image)|文档(office)|音乐(music)|视频(movie)|其它(other)",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录."
-            },
-            {
-              "name": "originFile",
-              "type": "String",
-              "isCollection": false,
-              "description": "真实文件id."
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listTop",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionListTop",
-          "description": "获取当前人员的顶层文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/list/top",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录."
-            },
-            {
-              "name": "originFile",
-              "type": "String",
-              "isCollection": false,
-              "description": "真实文件id."
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithEditor",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionListWithEditor",
-          "description": "获取指定人员共享给我编辑的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/list/editor/{owner}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "owner",
-              "type": "String",
-              "description": "文件所有人"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithFilter",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionListWithFilter",
-          "description": "根据文件名称查找当前用户的附件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/list/filter/{name}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "name",
-              "type": "String",
-              "description": "目录标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录."
-            },
-            {
-              "name": "originFile",
-              "type": "String",
-              "isCollection": false,
-              "description": "真实文件id."
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithFolder",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionListWithFolder",
-          "description": "获取当前人员在指定文件夹下的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/list/folder/{folderId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录."
-            },
-            {
-              "name": "originFile",
-              "type": "String",
-              "isCollection": false,
-              "description": "真实文件id."
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithShare",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionListWithShare",
-          "description": "获取指定人员共享给我的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment2/list/share/{owner}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "owner",
-              "type": "String",
-              "description": "文件所有人"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "officePreview",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionOfficePreview",
-          "description": "预览文件,输出html或pdf文件头信息,支持word、ppt、excel、pdf类型文件",
-          "type": "GET",
-          "path": "jaxrs/attachment2/{id}/office/preview/type/{type}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "description": "输出文件类型:html|pdf"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "postDownload",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionDownload",
-          "description": "获取附件内容,输出头信息,,使用POST方法访问.",
-          "type": "POST",
-          "path": "jaxrs/attachment2/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": true,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "postDownloadStream",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionDownloadStream",
-          "description": "获取附件内容.不输出头信息,使用POST方法访问.",
-          "type": "POST",
-          "path": "jaxrs/attachment2/{id}/download/stream",
-          "contentType": "application/json",
-          "useJsonElementParameter": true,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "update",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionUpdate",
-          "description": "更新Attachment",
-          "type": "PUT",
-          "path": "jaxrs/attachment2/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "upload",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionUpload",
-          "description": "创建Attachment的内容",
-          "type": "POST",
-          "path": "jaxrs/attachment2/upload/folder/{folderId}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            },
-            {
-              "name": "fileMd5",
-              "type": "String",
-              "description": "附件md5值"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "description": "附件名称"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "uploadCallback",
-          "className": "com.x.file.assemble.control.jaxrs.attachment2.ActionUploadCallback",
-          "description": "创建Attachment的内容并返回回调.",
-          "type": "POST",
-          "path": "jaxrs/attachment2/upload/folder/{folderId}/callback/{callback}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "text/html; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录"
-            },
-            {
-              "name": "callback",
-              "type": "String",
-              "description": "回调函数名"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            },
-            {
-              "name": "fileMd5",
-              "type": "String",
-              "description": "附件md5值"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "description": "附件名称"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "callbackName",
-              "type": "String",
-              "isCollection": false,
-              "description": "回调函数名"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "AttachmentAction",
-      "className": "com.x.file.assemble.control.jaxrs.attachment.AttachmentAction",
-      "description": "附件操作",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionDelete",
-          "description": "删除附件.",
-          "type": "DELETE",
-          "path": "jaxrs/attachment/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "download",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionDownload",
-          "description": "获取附件内容,输出头信息",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "downloadStream",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionDownloadStream",
-          "description": "获取附件内容.不输出头信息",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}/download/stream",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionGet",
-          "description": "获取指定人员共享给我的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "getBase64",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionGetBase64",
-          "description": "获取文件Base64编码后的内容.",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}/binary/base64",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "getImageScaleBase64",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionGetImageScaleBase64",
-          "description": "获取图片缩放后的base64内容(png格式).scale(0-200)百分比缩放比例.",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}/image/scale/{scale}/binary/base64",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "scale",
-              "type": "Integer",
-              "description": "缩放比例"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "getImageWidthHeightBase64",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionGetImageWidthHeightBase64",
-          "description": "获取图片设定宽高后的base64内容(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}/image/width/{width}/height/{height}/binary/base64",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "width",
-              "type": "Integer",
-              "description": "宽度"
-            },
-            {
-              "name": "height",
-              "type": "Integer",
-              "description": "高度"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "listTop",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionListTop",
-          "description": "获取当前人员的顶层文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment/list/top",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithEditor",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionListWithEditor",
-          "description": "获取指定人员共享给我编辑的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment/list/editor/{owner}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "owner",
-              "type": "String",
-              "description": "文件所有人"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithFolder",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionListWithFolder",
-          "description": "获取当前人员在指定文件夹下的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment/list/folder/{folderId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithShare",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionListWithShare",
-          "description": "获取指定人员共享给我的文件.",
-          "type": "GET",
-          "path": "jaxrs/attachment/list/share/{owner}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "owner",
-              "type": "String",
-              "description": "文件所有人"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员"
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "postDownload",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionDownload",
-          "description": "获取附件内容,输出头信息,,使用POST方法访问.",
-          "type": "POST",
-          "path": "jaxrs/attachment/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": true,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "postDownloadStream",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionDownloadStream",
-          "description": "获取附件内容.不输出头信息,使用POST方法访问.",
-          "type": "POST",
-          "path": "jaxrs/attachment/{id}/download/stream",
-          "contentType": "application/json",
-          "useJsonElementParameter": true,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "update",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionUpdate",
-          "description": "更新Attachment",
-          "type": "PUT",
-          "path": "jaxrs/attachment/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "shareList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员",
-              "isBaseType": true
-            },
-            {
-              "name": "editorList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "可编辑人员",
-              "isBaseType": true
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "updateContent",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionUpdateContent",
-          "description": "更新Attachment的内容",
-          "type": "PUT",
-          "path": "jaxrs/attachment/{id}/update",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "updateContentCallback",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionUpdateContentCallback",
-          "description": "更新Attachment的内容并返回回调.,使用callback方式,为了与前台兼容使用POST方法",
-          "type": "POST",
-          "path": "jaxrs/attachment/{id}/update/callback/{callback}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "text/html; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            },
-            {
-              "name": "callback",
-              "type": "String",
-              "description": "回调函数名"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "callbackName",
-              "type": "String",
-              "isCollection": false,
-              "description": "回调函数名"
-            }
-          ]
-        },
-        {
-          "name": "upload",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionUpload",
-          "description": "创建Attachment的内容",
-          "type": "POST",
-          "path": "jaxrs/attachment/upload/folder/{folderId}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "description": "附件名称"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "uploadCallback",
-          "className": "com.x.file.assemble.control.jaxrs.attachment.ActionUploadCallback",
-          "description": "创建Attachment的内容并返回回调.",
-          "type": "POST",
-          "path": "jaxrs/attachment/upload/folder/{folderId}/callback/{callback}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "text/html; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录"
-            },
-            {
-              "name": "callback",
-              "type": "String",
-              "description": "回调函数名"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "description": "附件名称"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "callbackName",
-              "type": "String",
-              "isCollection": false,
-              "description": "回调函数名"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "CacheAction",
-      "className": "com.x.base.core.project.jaxrs.cache.CacheAction",
-      "description": "缓存操作",
-      "methods": [
-        {
-          "name": "configFlush",
-          "className": "com.x.base.core.project.jaxrs.cache.ActionConfigFlush",
-          "description": "接收config flush 信号.",
-          "type": "GET",
-          "path": "jaxrs/cache/config/flush",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "receive",
-          "className": "com.x.base.core.project.jaxrs.cache.ActionReceive",
-          "description": "接收Cache刷新信息.",
-          "type": "PUT",
-          "path": "jaxrs/cache",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "nodeName",
-              "type": "String",
-              "isCollection": false,
-              "description": "节点名",
-              "isBaseType": true
-            },
-            {
-              "name": "className",
-              "type": "String",
-              "isCollection": false,
-              "description": "类名",
-              "isBaseType": true
-            },
-            {
-              "name": "keys",
-              "type": "List\u003cObject\u003e",
-              "isCollection": true,
-              "description": "关键字",
-              "isBaseType": false
-            }
-          ],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "ComplexAction",
-      "className": "com.x.file.assemble.control.jaxrs.complex.ComplexAction",
-      "description": "复合操作",
-      "methods": [
-        {
-          "name": "getTop",
-          "className": "com.x.file.assemble.control.jaxrs.complex.ActionTop",
-          "description": "获取指定个人的顶层文件.",
-          "type": "GET",
-          "path": "jaxrs/complex/top",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": []
-        },
-        {
-          "name": "getWithFolderSubDirect",
-          "className": "com.x.file.assemble.control.jaxrs.complex.ActionFolder",
-          "description": "获取个人在指定分类下的文件.",
-          "type": "GET",
-          "path": "jaxrs/complex/folder/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "文件夹标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": []
-        }
-      ]
-    },
-    {
-      "name": "EchoAction",
-      "className": "com.x.base.core.project.jaxrs.echo.EchoAction",
-      "description": "响应",
-      "methods": [
-        {
-          "name": "get",
-          "className": "com.x.base.core.project.jaxrs.echo.ActionGet",
-          "description": "获取应答.",
-          "type": "GET",
-          "path": "jaxrs/echo",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "servletContextName",
-              "type": "String",
-              "isCollection": false,
-              "description": "上下文根"
-            },
-            {
-              "name": "serverTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "服务器时间"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "EditorAction",
-      "className": "com.x.file.assemble.control.jaxrs.editor.EditorAction",
-      "description": "编辑",
-      "methods": [
-        {
-          "name": "list",
-          "className": "com.x.file.assemble.control.jaxrs.editor.ActionList",
-          "description": "获取他人共享给我编辑的文件.",
-          "type": "GET",
-          "path": "jaxrs/editor/list",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称"
-            },
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "值"
-            },
-            {
-              "name": "count",
-              "type": "Long",
-              "isCollection": false,
-              "description": "数量"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "FileAction",
-      "className": "com.x.file.assemble.control.jaxrs.file.FileAction",
-      "description": "File操作",
-      "methods": [
-        {
-          "name": "copy",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionCopy",
-          "description": "将Attachment的附件复制到File中,关联到referenceType和reference.",
-          "type": "GET",
-          "path": "jaxrs/file/copy/attachment/{attachmentId}/referencetype/{referenceType}/reference/{reference}/scale/{scale}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "attachmentId",
-              "type": "String",
-              "description": "Attachment标识"
-            },
-            {
-              "name": "referenceType",
-              "type": "String",
-              "description": "参考类型"
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "description": "参考"
-            },
-            {
-              "name": "scale",
-              "type": "Integer",
-              "description": "缩放"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionDelete",
-          "description": "根据referenceType和reference删除File.",
-          "type": "DELETE",
-          "path": "jaxrs/file/referencetype/{referenceType}/reference/{reference}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "referenceType",
-              "type": "String",
-              "description": "参考类型"
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "description": "参考"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "download",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionDownload",
-          "description": "下载文件,输出contentType头.",
-          "type": "GET",
-          "path": "jaxrs/file/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "文件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "downloadStream",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionDownloadStream",
-          "description": "下载文件,以附件方式,不输出contentType头.",
-          "type": "GET",
-          "path": "jaxrs/file/{id}/download/stream",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "文件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionGet",
-          "description": "获取指定File.",
-          "type": "GET",
-          "path": "jaxrs/file/{id}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNext",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListNext",
-          "description": "列示当前用户下的所有File,下一页.",
-          "type": "GET",
-          "path": "jaxrs/file/list/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextAll",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListNextAll",
-          "description": "列示所有File,下一页.",
-          "type": "GET",
-          "path": "jaxrs/file/list/{id}/next/{count}/all",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextWithReferenceType",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListNextWithReferenceType",
-          "description": "列示当前用户指定referenceType下的所有File,下一页.",
-          "type": "GET",
-          "path": "jaxrs/file/list/{id}/next/{count}/referencetype/{referenceType}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "数量"
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "description": "参考类型"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listPrev",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListPrev",
-          "description": "列示当前用户下的所有File,上一页.",
-          "type": "GET",
-          "path": "jaxrs/file/list/{id}/prev/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listPrevAll",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListPrevAll",
-          "description": "列示有File,上一页.",
-          "type": "GET",
-          "path": "jaxrs/file/list/{id}/prev/{count}/all",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listPrevWithReferenceType",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListPrevWithReferenceType",
-          "description": "列示当前用户指定referenceType下的所有File,上一页.",
-          "type": "GET",
-          "path": "jaxrs/file/list/{id}/prev/{count}/referencetype/{referenceType}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "数量"
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "description": "参考类型"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listReference",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListReferenceType",
-          "description": "列示当前用户的ReferenceType.",
-          "type": "GET",
-          "path": "jaxrs/file/list/referencetype",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称"
-            },
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "值"
-            },
-            {
-              "name": "count",
-              "type": "Long",
-              "isCollection": false,
-              "description": "数量"
-            }
-          ]
-        },
-        {
-          "name": "listWithReferenceTypeWithReference",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionListWithReferenceTypeWithReference",
-          "description": "根据指定的referenceType和reference列示所有的File.",
-          "type": "GET",
-          "path": "jaxrs/file/list/referencetype/{referenceType}/reference/{reference}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "referenceType",
-              "type": "String",
-              "description": "参考类型"
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "description": "参考"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "rank",
-              "type": "Long",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "referenceType",
-              "type": "ReferenceType",
-              "isCollection": false,
-              "description": "关联类型."
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联ID."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "存储器的名称,也就是多个存放节点的名字."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastNotExistedTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "postDownload",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionDownload",
-          "description": "下载文件,输出contentType头,使用POST方法访问.",
-          "type": "POST",
-          "path": "jaxrs/file/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": true,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "文件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "postDownloadStream",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionDownloadStream",
-          "description": "下载文件,以附件方式,不输出contentType头,使用POST方法访问.",
-          "type": "POST",
-          "path": "jaxrs/file/{id}/download/stream",
-          "contentType": "application/json",
-          "useJsonElementParameter": true,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "文件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "upload",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionUpload",
-          "description": "上传文件,并进行压缩,如果文件大小小于指定宽度或者宽度\u003c0,则不进行压缩.",
-          "type": "PUT",
-          "path": "jaxrs/file/upload/referencetype/{referenceType}/reference/{reference}/scale/{scale}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "referenceType",
-              "type": "String",
-              "description": "文件类型"
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "description": "关联id"
-            },
-            {
-              "name": "scale",
-              "type": "Integer",
-              "description": "缩放"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "uploadCallback",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionUploadCallback",
-          "description": "创建Attachment的内容并返回回调.",
-          "type": "POST",
-          "path": "jaxrs/file/upload/referencetype/{referenceType}/reference/{reference}/scale/{scale}/callback/{callback}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "text/html; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "referenceType",
-              "type": "String",
-              "description": "文件类型"
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "description": "关联id"
-            },
-            {
-              "name": "scale",
-              "type": "Integer",
-              "description": "缩放"
-            },
-            {
-              "name": "callback",
-              "type": "String",
-              "description": "回调函数名"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "callbackName",
-              "type": "String",
-              "isCollection": false,
-              "description": "回调函数名"
-            }
-          ]
-        },
-        {
-          "name": "uploadPostOctetStream",
-          "className": "com.x.file.assemble.control.jaxrs.file.ActionUploadOctetStream",
-          "description": "上传文件,并进行压缩,如果文件大小小于指定宽度或者宽度\u003c0,则不进行压缩.为了兼容前台增加的POST方法.",
-          "type": "POST",
-          "path": "jaxrs/file/upload/referencetype/{referenceType}/reference/{reference}/scale/{scale}",
-          "contentType": "application/octet-stream",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "referenceType",
-              "type": "String",
-              "description": "文件类型"
-            },
-            {
-              "name": "reference",
-              "type": "String",
-              "description": "关联id"
-            },
-            {
-              "name": "scale",
-              "type": "Integer",
-              "description": "缩放"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "FireScheduleAction",
-      "className": "com.x.base.core.project.jaxrs.fireschedule.FireScheduleAction",
-      "description": "触发任务",
-      "methods": [
-        {
-          "name": "execute",
-          "className": "com.x.base.core.project.jaxrs.fireschedule.ActionExecute",
-          "description": "接受x_program_center发送过来的运行schedule.",
-          "type": "GET",
-          "path": "jaxrs/fireschedule/classname/{className}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "className",
-              "type": "String",
-              "description": "运行类"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "Folder2Action",
-      "className": "com.x.file.assemble.control.jaxrs.folder2.Folder2Action",
-      "description": "目录",
-      "methods": [
-        {
-          "name": "batchDownload",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionBatchDownload",
-          "description": "打包所有指定的附件或目录下的附件,输出头信息",
-          "type": "GET",
-          "path": "jaxrs/folder2/batch/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [
-            {
-              "name": "attIds",
-              "type": "List",
-              "description": "附件ID列表"
-            },
-            {
-              "name": "folderIds",
-              "type": "List",
-              "description": "目录ID列表"
-            }
-          ],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "create",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionCreate",
-          "description": "创建文件夹.",
-          "type": "POST",
-          "path": "jaxrs/folder2",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。",
-              "isBaseType": true
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除",
-              "isBaseType": true
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionDelete",
-          "description": "删除分类,同时删除所有下属的文件和文件夹.",
-          "type": "DELETE",
-          "path": "jaxrs/folder2/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "download",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionDownload",
-          "description": "获取文件夹所有附件并打包为zip,输出头信息",
-          "type": "GET",
-          "path": "jaxrs/folder2/{id}/download",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionGet",
-          "description": "获取文件夹对象。只能由Folder的所有者进行操作,并返回文件夹的下文件的数量和总字节。",
-          "type": "GET",
-          "path": "jaxrs/folder2/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "attachmentCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "附件数量"
-            },
-            {
-              "name": "size",
-              "type": "Long",
-              "isCollection": false,
-              "description": "字节数"
-            },
-            {
-              "name": "folderCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "目录数量"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listTop",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionListTop",
-          "description": "获取当前人员顶层文件夹。",
-          "type": "GET",
-          "path": "jaxrs/folder2/list/top",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "attachmentCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "附件数量"
-            },
-            {
-              "name": "size",
-              "type": "Long",
-              "isCollection": false,
-              "description": "字节数"
-            },
-            {
-              "name": "folderCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "目录数量"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithFolder",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionListWithFolder",
-          "description": "获取当前人员指定文件夹下的直属文件夹。",
-          "type": "GET",
-          "path": "jaxrs/folder2/list/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "attachmentCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "附件数量"
-            },
-            {
-              "name": "size",
-              "type": "Long",
-              "isCollection": false,
-              "description": "字节数"
-            },
-            {
-              "name": "folderCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "目录数量"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "put",
-          "className": "com.x.file.assemble.control.jaxrs.folder2.ActionUpdate",
-          "description": "更新文件夹,不能重名",
-          "type": "PUT",
-          "path": "jaxrs/folder2/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。",
-              "isBaseType": true
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除",
-              "isBaseType": true
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "FolderAction",
-      "className": "com.x.file.assemble.control.jaxrs.folder.FolderAction",
-      "description": "目录",
-      "methods": [
-        {
-          "name": "create",
-          "className": "com.x.file.assemble.control.jaxrs.folder.ActionCreate",
-          "description": "创建文件夹.",
-          "type": "POST",
-          "path": "jaxrs/folder",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.folder.ActionDelete",
-          "description": "删除分类,同时删除所有下属的文件和文件夹.",
-          "type": "DELETE",
-          "path": "jaxrs/folder/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.folder.ActionGet",
-          "description": "获取文件夹对象。只能由Folder的所有者进行操作,并返回文件夹的下文件的数量和总字节。",
-          "type": "GET",
-          "path": "jaxrs/folder/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "attachmentCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "附件数量"
-            },
-            {
-              "name": "size",
-              "type": "Long",
-              "isCollection": false,
-              "description": "字节数"
-            },
-            {
-              "name": "folderCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "目录数量"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listTop",
-          "className": "com.x.file.assemble.control.jaxrs.folder.ActionListTop",
-          "description": "获取当前人员顶层文件夹。",
-          "type": "GET",
-          "path": "jaxrs/folder/list/top",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "attachmentCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "附件数量"
-            },
-            {
-              "name": "size",
-              "type": "Long",
-              "isCollection": false,
-              "description": "字节数"
-            },
-            {
-              "name": "folderCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "目录数量"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithFolder",
-          "className": "com.x.file.assemble.control.jaxrs.folder.ActionListWithFolder",
-          "description": "获取当前人员指定文件夹下的直属文件夹。",
-          "type": "GET",
-          "path": "jaxrs/folder/list/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "attachmentCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "附件数量"
-            },
-            {
-              "name": "size",
-              "type": "Long",
-              "isCollection": false,
-              "description": "字节数"
-            },
-            {
-              "name": "folderCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "目录数量"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "put",
-          "className": "com.x.file.assemble.control.jaxrs.folder.ActionUpdate",
-          "description": "更新文件夹,不能重名",
-          "type": "PUT",
-          "path": "jaxrs/folder/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "LoggerAction",
-      "className": "com.x.base.core.project.jaxrs.logger.LoggerAction",
-      "description": "日志操作",
-      "methods": [
-        {
-          "name": "debug",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionDebug",
-          "description": "设置日志级别为DEBUG.",
-          "type": "GET",
-          "path": "jaxrs/logger/debug",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionGet",
-          "description": "获取当前日志级别.",
-          "type": "GET",
-          "path": "jaxrs/logger",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "info",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionInfo",
-          "description": "设置日志级别为INFO",
-          "type": "GET",
-          "path": "jaxrs/logger/info",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "trace",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionTrace",
-          "description": "设置日志级别为TRACE.",
-          "type": "GET",
-          "path": "jaxrs/logger/trace",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "warn",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionWarn",
-          "description": "设置日志级别为WARN",
-          "type": "GET",
-          "path": "jaxrs/logger/warn",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "RecycleAction",
-      "className": "com.x.file.assemble.control.jaxrs.recycle.RecycleAction",
-      "description": "回收站",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.recycle.ActionDelete",
-          "description": "删除回收站的文件.",
-          "type": "DELETE",
-          "path": "jaxrs/recycle/{id}/delete",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "empty",
-          "className": "com.x.file.assemble.control.jaxrs.recycle.ActionEmpty",
-          "description": "清空回收站的文件.",
-          "type": "DELETE",
-          "path": "jaxrs/recycle/empty",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.recycle.ActionGet",
-          "description": "获取回收站的文件对象。",
-          "type": "GET",
-          "path": "jaxrs/recycle/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "删除的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "删除的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "保存到时间"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "list",
-          "className": "com.x.file.assemble.control.jaxrs.recycle.ActionList",
-          "description": "获取回收站所有文件.",
-          "type": "GET",
-          "path": "jaxrs/recycle/list",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "删除的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "删除的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "保存到时间"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "resume",
-          "className": "com.x.file.assemble.control.jaxrs.recycle.ActionResume",
-          "description": "从回收站恢复数据",
-          "type": "POST",
-          "path": "jaxrs/recycle/{id}/resume",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "共享文件ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "ShareAction",
-      "className": "com.x.file.assemble.control.jaxrs.share.ShareAction",
-      "description": "共享",
-      "methods": [
-        {
-          "name": "create",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionCreate",
-          "description": "分享文件.",
-          "type": "POST",
-          "path": "jaxrs/share",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称.",
-              "isBaseType": true
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id.",
-              "isBaseType": true
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder).",
-              "isBaseType": true
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传.",
-              "isBaseType": true
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小.",
-              "isBaseType": true
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member).",
-              "isBaseType": true
-            },
-            {
-              "name": "password",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享密码.",
-              "isBaseType": true
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间",
-              "isBaseType": true
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间",
-              "isBaseType": true
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员",
-              "isBaseType": true
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织",
-              "isBaseType": true
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionDelete",
-          "description": "删除分享的文件.",
-          "type": "DELETE",
-          "path": "jaxrs/share/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "download",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionDownload",
-          "description": "获取附件内容,输出头信息.",
-          "type": "GET",
-          "path": "jaxrs/share/download/share/{shareId}/file/{fileId}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "shareId",
-              "type": "String",
-              "description": "共享文件ID"
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "description": "转存附件ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [
-            {
-              "name": "password",
-              "type": "String",
-              "description": "共享密码"
-            }
-          ],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionGet",
-          "description": "获取分享的文件对象。",
-          "type": "GET",
-          "path": "jaxrs/share/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [
-            {
-              "name": "password",
-              "type": "String",
-              "description": "共享密码"
-            }
-          ],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member)."
-            },
-            {
-              "name": "password",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享密码."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织"
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "getWithPassword",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionGetWithPassword",
-          "description": "根据密码获取分享的文件对象。",
-          "type": "GET",
-          "path": "jaxrs/share/{id}/password/{password}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            },
-            {
-              "name": "password",
-              "type": "String",
-              "description": "共享密码"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member)."
-            },
-            {
-              "name": "password",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享密码."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织"
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listAttWithFolder",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionListAttWithFolder",
-          "description": "获取共享文件指定文件夹下的附件.",
-          "type": "GET",
-          "path": "jaxrs/share/list/att/share/{shareId}/folder/{folderId}/",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "shareId",
-              "type": "String",
-              "description": "共享文件ID"
-            },
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件名称."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属分类."
-            },
-            {
-              "name": "folder",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属目录."
-            },
-            {
-              "name": "originFile",
-              "type": "String",
-              "isCollection": false,
-              "description": "真实文件id."
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "lastUpdatePerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "最后更新人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listFolderWithFolder",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionListFolderWithFolder",
-          "description": "获取共享文件指定文件夹下的直属文件夹.",
-          "type": "GET",
-          "path": "jaxrs/share/list/folder/share/{shareId}/folder/{folderId}/",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "shareId",
-              "type": "String",
-              "description": "共享文件ID"
-            },
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "目录ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分类名称."
-            },
-            {
-              "name": "superior",
-              "type": "String",
-              "isCollection": false,
-              "description": "上级分类ID,为空代表顶级分类。"
-            },
-            {
-              "name": "status",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件状态:正常|已删除"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listMyShare",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionListMyShare",
-          "description": "获取我共享的文件QueryParam.",
-          "type": "GET",
-          "path": "jaxrs/share/list/my",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [
-            {
-              "name": "shareType",
-              "type": "String",
-              "description": "分享类型:密码分享(password)|指定分享(member)"
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "description": "分享的文件类型:文件(attachment)|目录(folder)"
-            }
-          ],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member)."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织"
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listMyShare2",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionListMyShare",
-          "description": "获取我共享的文件2.",
-          "type": "GET",
-          "path": "jaxrs/share/list/my2/{shareType}/{fileType}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "shareType",
-              "type": "String",
-              "description": "分享类型:密码分享(password)|指定分享(member)|全部({0})"
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "description": "分享的文件类型:文件(attachment)|目录(folder)|全部({0})"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member)."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织"
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listShare",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionList",
-          "description": "获取他人共享给我的文件V1.",
-          "type": "GET",
-          "path": "jaxrs/share/list",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "名称"
-            },
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "值"
-            },
-            {
-              "name": "count",
-              "type": "Long",
-              "isCollection": false,
-              "description": "数量"
-            }
-          ]
-        },
-        {
-          "name": "listShareToMe",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionListShareToMe",
-          "description": "获取他人共享给我的文件.",
-          "type": "GET",
-          "path": "jaxrs/share/list/to/me",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [
-            {
-              "name": "fileType",
-              "type": "String",
-              "description": "分享的文件类型:文件(attachment)|目录(folder)"
-            }
-          ],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member)."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织"
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listShareToMe2",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionListShareToMe",
-          "description": "获取他人共享给我的文件2.",
-          "type": "GET",
-          "path": "jaxrs/share/list/to/me2/{fileType}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "fileType",
-              "type": "String",
-              "description": "分享的文件类型:文件(attachment)|目录(folder)|全部({0})"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类型"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "person",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属用户."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件或目录名称."
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件或目录id."
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享的文件类型:文件(attachment)|目录(folder)."
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名,必须要有扩展名的文件才允许上传."
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "shareType",
-              "type": "String",
-              "isCollection": false,
-              "description": "分享类型:密码分享(password)|指定分享个人或组织(member)."
-            },
-            {
-              "name": "validTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "有效时间"
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "shareUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享人员"
-            },
-            {
-              "name": "shareOrgList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "共享组织"
-            },
-            {
-              "name": "shieldUserList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "屏蔽人员"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "saveToFolder",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionSaveToFolder",
-          "description": "保存到网盘",
-          "type": "POST",
-          "path": "jaxrs/share/share/{shareId}/file/{fileId}/folder/{folderId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "shareId",
-              "type": "String",
-              "description": "共享文件ID"
-            },
-            {
-              "name": "fileId",
-              "type": "String",
-              "description": "转存文件ID"
-            },
-            {
-              "name": "folderId",
-              "type": "String",
-              "description": "转存目录ID"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "password",
-              "type": "String",
-              "description": "共享密码"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "shield",
-          "className": "com.x.file.assemble.control.jaxrs.share.ActionShield",
-          "description": "屏蔽共享给我的文件",
-          "type": "GET",
-          "path": "jaxrs/share/shield/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "共享文件ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "SysResourceAction",
-      "className": "com.x.base.core.project.jaxrs.sysresource.SysResourceAction",
-      "description": "系统资源",
-      "methods": [
-        {
-          "name": "listResource",
-          "className": "com.x.base.core.project.jaxrs.sysresource.ActionListResource",
-          "description": "获取静态资源信息.",
-          "type": "GET",
-          "path": "jaxrs/sysresource/filePath/{filePath}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "filePath",
-              "type": "String",
-              "description": "查找路径(根路径:(0))"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": []
-        },
-        {
-          "name": "uploadResource",
-          "className": "com.x.base.core.project.jaxrs.sysresource.ActionUploadResource",
-          "description": "上传静态资源(仅上传到当前服务器)",
-          "type": "POST",
-          "path": "jaxrs/sysresource/upload/resource/as/new/{asNew}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "asNew",
-              "type": "Boolean",
-              "description": "覆盖类型:true删除原文件然后上传,false覆盖原文件"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "description": "附件名称"
-            },
-            {
-              "name": "filePath",
-              "type": "String",
-              "description": "附件存放目录(可以为空)"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}

+ 0 - 24
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/AbstractFactory.java

@@ -1,24 +0,0 @@
-package com.x.file.assemble.control;
-
-import com.x.base.core.container.EntityManagerContainer;
-
-public abstract class AbstractFactory {
-
-	private Business business;
-
-	public AbstractFactory(Business business) throws Exception {
-		try {
-			if (null == business) {
-				throw new Exception("business can not be null.");
-			}
-			this.business = business;
-		} catch (Exception e) {
-			throw new Exception("can not instantiating factory.");
-		}
-	}
-
-	public EntityManagerContainer entityManagerContainer() throws Exception {
-		return this.business.entityManagerContainer();
-	}
-
-}

+ 0 - 33
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/ApplicationServletContextListener.java

@@ -1,33 +0,0 @@
-package com.x.file.assemble.control;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-import javax.servlet.annotation.WebListener;
-
-import com.x.base.core.project.Context;
-
-@WebListener
-public class ApplicationServletContextListener implements ServletContextListener {
-
-	@Override
-	public void contextInitialized(ServletContextEvent servletContextEvent) {
-		try {
-			ThisApplication.context = Context.concrete(servletContextEvent);
-			ThisApplication.init();
-			ThisApplication.context().regist();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	public void contextDestroyed(ServletContextEvent servletContextEvent) {
-		try {
-			ThisApplication.destroy();
-			ThisApplication.context.destrory(servletContextEvent);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}

+ 0 - 100
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/Business.java

@@ -1,100 +0,0 @@
-package com.x.file.assemble.control;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.file.assemble.control.factory.*;
-import com.x.organization.core.express.Organization;
-
-public class Business {
-
-	private EntityManagerContainer emc;
-
-	public Business(EntityManagerContainer emc) throws Exception {
-		this.emc = emc;
-	}
-
-	public EntityManagerContainer entityManagerContainer() {
-		return this.emc;
-	}
-
-	private AttachmentFactory attachment;
-
-	public AttachmentFactory attachment() throws Exception {
-		if (null == this.attachment) {
-			this.attachment = new AttachmentFactory(this);
-		}
-		return attachment;
-	}
-
-	private Attachment2Factory attachment2;
-
-	public Attachment2Factory attachment2() throws Exception {
-		if (null == this.attachment2) {
-			this.attachment2 = new Attachment2Factory(this);
-		}
-		return attachment2;
-	}
-
-	private FolderFactory folder;
-
-	public FolderFactory folder() throws Exception {
-		if (null == this.folder) {
-			this.folder = new FolderFactory(this);
-		}
-		return folder;
-	}
-
-	private Folder2Factory folder2;
-
-	public Folder2Factory folder2() throws Exception {
-		if (null == this.folder2) {
-			this.folder2 = new Folder2Factory(this);
-		}
-		return folder2;
-	}
-
-	private FileFactory file;
-
-	public FileFactory file() throws Exception {
-		if (null == this.file) {
-			this.file = new FileFactory(this);
-		}
-		return file;
-	}
-
-	private OriginFileFactory originFile;
-
-	public OriginFileFactory originFile() throws Exception {
-		if (null == this.originFile) {
-			this.originFile = new OriginFileFactory(this);
-		}
-		return originFile;
-	}
-
-	private ShareFactory share;
-
-	public ShareFactory share() throws Exception {
-		if (null == this.share) {
-			this.share = new ShareFactory(this);
-		}
-		return share;
-	}
-
-	private RecycleFactory recycle;
-
-	public RecycleFactory recycle() throws Exception {
-		if (null == this.recycle) {
-			this.recycle = new RecycleFactory(this);
-		}
-		return recycle;
-	}
-
-	private Organization organization;
-
-	public Organization organization() throws Exception {
-		if (null == this.organization) {
-			this.organization = new Organization(ThisApplication.context());
-		}
-		return organization;
-	}
-
-}

+ 0 - 226
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/FileUtil.java

@@ -1,226 +0,0 @@
-package com.x.file.assemble.control;
-
-import java.io.*;
-import java.math.BigInteger;
-import java.security.MessageDigest;
-import java.util.HashMap;
-
-/**
- * 文件上传下载
- */
-public class FileUtil {
-
-    // 缓存文件头信息-文件头信息
-    public static final HashMap<String, String> mFileTypes = new HashMap<String, String>();
-    static {
-        // images
-        mFileTypes.put("FFD8FF", "jpg");
-        mFileTypes.put("89504E47", "png");
-        mFileTypes.put("47494638", "gif");
-        mFileTypes.put("49492A00", "tif");
-        mFileTypes.put("424D", "bmp");
-        //
-        mFileTypes.put("41433130", "dwg"); // CAD
-        mFileTypes.put("38425053", "psd");
-        mFileTypes.put("7B5C727466", "rtf"); // 日记本
-        mFileTypes.put("3C3F786D6C", "xml");
-        mFileTypes.put("68746D6C3E", "html");
-        mFileTypes.put("44656C69766572792D646174653A", "eml"); // 邮件
-        mFileTypes.put("D0CF11E0", "doc");
-        mFileTypes.put("D0CF11E0", "xls");//excel2003版本文件
-        mFileTypes.put("5374616E64617264204A", "mdb");
-        mFileTypes.put("252150532D41646F6265", "ps");
-        mFileTypes.put("255044462D312E", "pdf");
-        mFileTypes.put("504B0304", "docx");
-        mFileTypes.put("504B0304", "xlsx");//excel2007以上版本文件
-        mFileTypes.put("52617221", "rar");
-        mFileTypes.put("57415645", "wav");
-        mFileTypes.put("41564920", "avi");
-        mFileTypes.put("2E524D46", "rm");
-        mFileTypes.put("000001BA", "mpg");
-        mFileTypes.put("000001B3", "mpg");
-        mFileTypes.put("6D6F6F76", "mov");
-        mFileTypes.put("3026B2758E66CF11", "asf");
-        mFileTypes.put("4D546864", "mid");
-        mFileTypes.put("1F8B08", "gz");
-    }
-
-    /**
-     * <p>Title:getFileType </p>
-     * <p>Description: 根据文件路径获取文件头信息</p>
-     * @param filePath  文件路径
-     * @return 文件头信息
-     */
-    public static String getFileType(String filePath) {
-        System.out.println(getFileHeader(filePath));  //返回十六进制  如:504B0304
-        //System.out.println(mFileTypes.get(getFileHeader(filePath)));  //xlsx
-        return mFileTypes.get(getFileHeader(filePath));
-    }
-    /**
-     * <p>Title:getFileTypeByFileInputStream </p>
-     * <p>Description: 根据文件流获取文件头信息</p>
-     * @param is   文件流
-     * @return  文件头信息
-     */
-    public static String getFileTypeByFileInputStream(FileInputStream is) {
-        return mFileTypes.get(getFileHeaderByFileInputStream(is));
-    }
-
-    /**
-     * <p>Title:getFileHeader </p>
-     * <p>Description: 根据文件路径获取文件头信息 </p>
-     * @param filePath 文件路径
-     * @return 十六进制文件头信息
-     */
-    public static String getFileHeader(String filePath) {
-        FileInputStream is = null;
-        String value = null;
-        try {
-            is = new FileInputStream(filePath);
-            byte[] b = new byte[7];
-            /*
-             * int read() 从此输入流中读取一个数据字节。int read(byte[] b) 从此输入流中将最多 b.length
-             * 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len)
-             * 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
-             */
-            is.read(b, 0, b.length);
-            value = bytesToHexString(b);
-        } catch (Exception e) {
-        } finally {
-            if (null != is) {
-                try {
-                    is.close();
-                } catch (IOException e) {
-                }
-            }
-        }
-        return value;
-    }
-    /**
-     * <p>Title:getFileHeaderByFileInputStream </p>
-     * <p>Description: 根据文件流获取文件头信息</p>
-     * @param is  文件流
-     * @return  十六进制文件头信息
-     */
-    public static String getFileHeaderByFileInputStream(FileInputStream is) {
-        String value = null;
-        try {
-            byte[] b = new byte[7];
-            /*
-             * int read() 从此输入流中读取一个数据字节。int read(byte[] b) 从此输入流中将最多 b.length
-             * 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len)
-             * 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
-             */
-            is.read(b, 0, b.length);
-            value = bytesToHexString(b);
-        } catch (Exception e) {
-        } finally {
-            if (null != is) {
-                try {
-                    is.close();
-                } catch (IOException e) {
-                }
-            }
-        }
-        System.out.println(value);
-        return value;
-    }
-
-    /**
-     * <p>Title:bytesToHexString </p>
-     * <p>Description: 将要读取文件头信息的文件的byte数组转换成string类型表示 </p>
-     * @param src 要读取文件头信息的文件的byte数组
-     * @return  文件头信息
-     */
-    private static String bytesToHexString(byte[] src) {
-        StringBuilder builder = new StringBuilder();
-        if (src == null || src.length <= 0) {
-            return null;
-        }
-        String hv;
-        for (int i = 0; i < src.length; i++) {
-            // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写
-            hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();
-            if (hv.length() < 2) {
-                builder.append(0);
-            }
-            builder.append(hv);
-        }
-        //System.out.println(builder.toString());
-        return builder.toString();
-    }
-
-    /**
-     * <p>Title:main </p>
-     * <p>Description: 测试</p>
-     * @param args
-     * @throws Exception
-     * @author 鲁东顺
-     * @date 2016-11-23上午10:11:37
-     */
-    public static void main(String[] args) throws Exception {
-        /*//测试1...根据文件全路径
-        final String fileType = getFileType("E:\\服务申请模板.xlsx");
-        System.out.println(fileType);  */
-
-        //测试2...根据流
-        FileInputStream is = null;
-        is = new FileInputStream("C:\\temp\\WechatIMG149.jpeg");
-        final String fileType2 = getFileTypeByFileInputStream(is);
-        System.out.println(fileType2);
-    }
-
-    /**
-     * 获取指定文件的大小
-     */
-    public static long getFileSize(File file) throws Exception {
-        long size = 0;
-        if (file.exists()) {
-            FileInputStream fis = null;
-            fis = new FileInputStream(file);
-            size = fis.available();
-        } else {
-            file.createNewFile();
-        }
-        return size;
-    }
-
-    /**
-     * 压缩后的文件名
-     */
-    private static String zipName(String name) {
-        String prefix = "";
-        if (name.indexOf(".") != -1) {
-            prefix = name.substring(0, name.lastIndexOf("."));
-        } else {
-            prefix = name;
-        }
-        return prefix + ".zip";
-    }
-
-    /**
-     * 获取文件的 MD5
-     */
-    public static String getFileMD5(byte[] bytes) {
-        if (bytes == null) {
-            return null;
-        }
-        MessageDigest digest = null;
-        InputStream in = null;
-        byte buffer[] = new byte[1024];
-        int len;
-        try {
-            digest = MessageDigest.getInstance("MD5");
-            in = new ByteArrayInputStream(bytes);
-            while ((len = in.read(buffer, 0, 1024)) != -1) {
-                digest.update(buffer, 0, len);
-            }
-            in.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-        BigInteger bigInt = new BigInteger(1, digest.digest());
-        return bigInt.toString(16);
-    }
-}

+ 0 - 37
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/ThisApplication.java

@@ -1,37 +0,0 @@
-package com.x.file.assemble.control;
-
-import com.x.base.core.project.Context;
-import com.x.base.core.project.config.Config;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.base.core.project.message.MessageConnector;
-import com.x.file.assemble.control.jaxrs.file.FileRemoveQueue;
-
-public class ThisApplication {
-
-	public static FileRemoveQueue fileRemoveQueue;
-
-	protected static Context context;
-
-	public static Context context() {
-		return context;
-	}
-
-	public static void init() {
-		try {
-			LoggerFactory.setLevel(Config.logLevel().x_file_assemble_control());
-			fileRemoveQueue = new FileRemoveQueue();
-			MessageConnector.start(context());
-			context().startQueue(fileRemoveQueue);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public static void destroy() {
-		try {
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}

+ 0 - 83
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/Attachment2Factory.java

@@ -1,83 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment2;
-import com.x.file.core.entity.personal.Attachment2_;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.List;
-
-public class Attachment2Factory extends AbstractFactory {
-
-	public Attachment2Factory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<String> listTopWithPerson(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.person), person);
-		p = cb.and(p, cb.equal(root.get(Attachment2_.status), "正常"));
-		p = cb.and(p, cb.or(cb.isNull(root.get(Attachment2_.folder)), cb.equal(root.get(Attachment2_.folder), "")));
-		cq.select(root.get(Attachment2_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listWithFolder(String folder, String status) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.folder), folder);
-		if (StringUtils.isNotEmpty(status)) {
-			p = cb.and(p, cb.equal(root.get(Attachment2_.status), status));
-		}
-		cq.select(root.get(Attachment2_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listWithName(String person, String name) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.person), person);
-		p = cb.and(p, cb.equal(root.get(Attachment2_.status), "正常"));
-		p = cb.and(p, cb.like(root.get(Attachment2_.name), "%" + name + "%"));
-		cq.select(root.get(Attachment2_.id)).where(p);
-		return em.createQuery(cq).setMaxResults(100).getResultList();
-	}
-
-	public long getUseCapacity(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.person), person);
-		p = cb.and(p, cb.equal(root.get(Attachment2_.status), "正常"));
-		cq.select(cb.sum(root.get(Attachment2_.length))).where(p);
-		Long sum = em.createQuery(cq).getSingleResult();
-		return sum == null ? 0 : sum;
-	}
-
-	public List<Attachment2> listWithFolder2(String folder, String status) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Attachment2> cq = cb.createQuery(Attachment2.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.folder), folder);
-		if (StringUtils.isNotEmpty(status)) {
-			p = cb.and(p, cb.equal(root.get(Attachment2_.status), status));
-		}
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-}

+ 0 - 106
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/AttachmentFactory.java

@@ -1,106 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Attachment_;
-
-public class AttachmentFactory extends AbstractFactory {
-
-	public AttachmentFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<String> listTopWithPerson(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.equal(root.get(Attachment_.person), person);
-		p = cb.and(p, cb.or(cb.isNull(root.get(Attachment_.folder)), cb.equal(root.get(Attachment_.folder), "")));
-		cq.select(root.get(Attachment_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listWithFolder(String folder) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.equal(root.get(Attachment_.folder), folder);
-		cq.select(root.get(Attachment_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listPersonWithShare(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.isMember(person, root.get(Attachment_.shareList));
-		cq.distinct(true).select(root.get(Attachment_.person)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listPersonWithEditor(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.isMember(person, root.get(Attachment_.editorList));
-		cq.distinct(true).select(root.get(Attachment_.person)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public Long countWithPersonWithShare(String owner, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.isMember(person, root.get(Attachment_.shareList));
-		p = cb.and(p, cb.equal(root.get(Attachment_.person), owner));
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-
-	public Long countWithPersonWithEditor(String owner, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.isMember(person, root.get(Attachment_.editorList));
-		p = cb.and(p, cb.equal(root.get(Attachment_.person), owner));
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-
-	public List<String> listWithPersonWithShare(String owner, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.isMember(person, root.get(Attachment_.shareList));
-		p = cb.and(p, cb.equal(root.get(Attachment_.person), owner));
-		cq.select(root.get(Attachment_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listWithPersonWithEditor(String owner, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.isMember(person, root.get(Attachment_.editorList));
-		p = cb.and(p, cb.equal(root.get(Attachment_.person), owner));
-		cq.select(root.get(Attachment_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-}

+ 0 - 34
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/FileFactory.java

@@ -1,34 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.open.File;
-import com.x.file.core.entity.open.File_;
-import com.x.file.core.entity.open.ReferenceType;
-
-public class FileFactory extends AbstractFactory {
-
-	public FileFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<String> listWithReferenceTypeWithReference(ReferenceType referenceType, String reference)
-			throws Exception {
-		EntityManager em = this.entityManagerContainer().get(File.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<File> root = cq.from(File.class);
-		Predicate p = cb.equal(root.get(File_.reference), reference);
-		p = cb.and(p, cb.equal(root.get(File_.referenceType), referenceType));
-		cq.select(root.get(File_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
-	}
-}

+ 0 - 123
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/Folder2Factory.java

@@ -1,123 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Folder2;
-import com.x.file.core.entity.personal.Folder2_;
-import org.apache.commons.collections4.set.ListOrderedSet;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.ArrayList;
-import java.util.List;
-
-public class Folder2Factory extends AbstractFactory {
-
-	public Folder2Factory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<String> listTopWithPerson(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Folder2> root = cq.from(Folder2.class);
-		Predicate p = cb.equal(root.get(Folder2_.person), person);
-		p = cb.and(p, cb.equal(root.get(Folder2_.status), "正常"));
-		p = cb.and(p, cb.or(cb.isNull(root.get(Folder2_.superior)), cb.equal(root.get(Folder2_.superior), "")));
-		cq.select(root.get(Folder2_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listWithPersonWithSuperior(String person, String superior, String status) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Folder2> root = cq.from(Folder2.class);
-		Predicate p = cb.equal(root.get(Folder2_.person), person);
-		p = cb.and(p, cb.equal(root.get(Folder2_.superior), superior));
-		if (StringUtils.isNotEmpty(status)) {
-			p = cb.and(p, cb.equal(root.get(Folder2_.status), status));
-		}
-		cq.select(root.get(Folder2_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listSubNested(String id, String status) throws Exception {
-		ListOrderedSet<String> list = new ListOrderedSet<>();
-		List<String> subs = this.listSubDirect(id, status);
-		for (String str : subs) {
-			if (!list.contains(str)) {
-				list.add(str);
-				list.addAll(this.listSubNested(str, status));
-			}
-		}
-		return list.asList();
-	}
-
-	public List<String> listSubDirect(String id, String status) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Folder2> root = cq.from(Folder2.class);
-		Predicate p = cb.equal(root.get(Folder2_.superior), id);
-		if (StringUtils.isNotEmpty(status)) {
-			p = cb.and(p, cb.equal(root.get(Folder2_.status), status));
-		}
-		cq.select(root.get(Folder2_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<Folder2> listSubNested1(String id, String status) throws Exception {
-		List<Folder2> list = new ArrayList<>();
-		List<Folder2> subs = this.listSubDirect1(id, status);
-		for (Folder2 folder : subs) {
-			list.add(folder);
-			list.addAll(this.listSubNested1(folder.getId(), status));
-		}
-		return list;
-	}
-
-	public List<Folder2> listSubDirect1(String id, String status) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Folder2> cq = cb.createQuery(Folder2.class);
-		Root<Folder2> root = cq.from(Folder2.class);
-		Predicate p = cb.equal(root.get(Folder2_.superior), id);
-		if (StringUtils.isNotEmpty(status)) {
-			p = cb.and(p, cb.equal(root.get(Folder2_.status), status));
-		}
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public Long countSubDirect(String id) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Folder2> root = cq.from(Folder2.class);
-		Predicate p = cb.equal(root.get(Folder2_.superior), id);
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-
-	public boolean exist(String person, String name, String superior, String excludeId) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Folder2> root = cq.from(Folder2.class);
-		Predicate p = cb.equal(root.get(Folder2_.person), person);
-		p = cb.and(p, cb.equal(root.get(Folder2_.name), name));
-		p = cb.and(p, cb.equal(root.get(Folder2_.superior), StringUtils.trimToEmpty(superior)));
-		p = cb.and(p, cb.equal(root.get(Folder2_.status), "正常"));
-		if (StringUtils.isNotEmpty(excludeId)) {
-			p = cb.and(p, cb.notEqual(root.get(Folder2_.id), excludeId));
-		}
-		cq.select(cb.count(root)).where(p);
-		long count = em.createQuery(cq).getSingleResult();
-		return count > 0;
-	}
-}

+ 0 - 77
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/FolderFactory.java

@@ -1,77 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.collections4.set.ListOrderedSet;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Folder;
-import com.x.file.core.entity.personal.Folder_;
-
-public class FolderFactory extends AbstractFactory {
-
-	public FolderFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<String> listTopWithPerson(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Folder> root = cq.from(Folder.class);
-		Predicate p = cb.equal(root.get(Folder_.person), person);
-		p = cb.and(p, cb.or(cb.isNull(root.get(Folder_.superior)), cb.equal(root.get(Folder_.superior), "")));
-		cq.select(root.get(Folder_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listWithPersonWithSuperior(String person, String superior) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Folder> root = cq.from(Folder.class);
-		Predicate p = cb.equal(root.get(Folder_.person), person);
-		p = cb.and(p, cb.equal(root.get(Folder_.superior), superior));
-		cq.select(root.get(Folder_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<String> listSubNested(String id) throws Exception {
-		ListOrderedSet<String> list = new ListOrderedSet<>();
-		List<String> subs = this.listSubDirect(id);
-		for (String str : subs) {
-			if (!list.contains(str)) {
-				list.add(str);
-				list.addAll(this.listSubNested(str));
-			}
-		}
-		return list.asList();
-	}
-
-	public List<String> listSubDirect(String id) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Folder> root = cq.from(Folder.class);
-		Predicate p = cb.equal(root.get(Folder_.superior), id);
-		cq.select(root.get(Folder_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public Long countSubDirect(String id) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Folder.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Folder> root = cq.from(Folder.class);
-		Predicate p = cb.equal(root.get(Folder_.superior), id);
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-}

+ 0 - 35
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/OriginFileFactory.java

@@ -1,35 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.open.*;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.List;
-
-public class OriginFileFactory extends AbstractFactory {
-
-	public OriginFileFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public OriginFile getByMd5(String fileMd5)
-			throws Exception {
-		EntityManager em = this.entityManagerContainer().get(OriginFile.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<OriginFile> cq = cb.createQuery(OriginFile.class);
-		Root<OriginFile> root = cq.from(OriginFile.class);
-		Predicate p = cb.equal(root.get(OriginFile_.fileMd5), fileMd5);
-		List<OriginFile> originFileList = em.createQuery(cq.where(p)).setMaxResults(1).getResultList();
-		if(originFileList!=null && !originFileList.isEmpty()){
-			return originFileList.get(0);
-		}
-		return null;
-	}
-
-
-}

+ 0 - 47
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/RecycleFactory.java

@@ -1,47 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Recycle;
-import com.x.file.core.entity.personal.Recycle_;
-import com.x.file.core.entity.personal.Share;
-import com.x.file.core.entity.personal.Share_;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.List;
-
-public class RecycleFactory extends AbstractFactory {
-
-	public RecycleFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<Recycle> listWithPerson(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Recycle.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Recycle> cq = cb.createQuery(Recycle.class);
-		Root<Recycle> root = cq.from(Recycle.class);
-		Predicate p = cb.equal(root.get(Recycle_.person), person);
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public Recycle getByFileId(String fileId, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Recycle.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Recycle> cq = cb.createQuery(Recycle.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.equal(root.get(Share_.person), person);
-		p = cb.and(p, cb.equal(root.get(Share_.fileId), fileId));
-		List<Recycle> recycleList = em.createQuery(cq.where(p)).setMaxResults(1).getResultList();
-		if(recycleList!=null && !recycleList.isEmpty()){
-			return recycleList.get(0);
-		}
-		return null;
-	}
-
-
-}

+ 0 - 106
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/factory/ShareFactory.java

@@ -1,106 +0,0 @@
-package com.x.file.assemble.control.factory;
-
-import com.x.file.assemble.control.AbstractFactory;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Share;
-import com.x.file.core.entity.personal.Share_;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.List;
-
-public class ShareFactory extends AbstractFactory {
-
-	public ShareFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<Share> listWithPerson(String person, String shareType, String fileType) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Share> cq = cb.createQuery(Share.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.equal(root.get(Share_.person), person);
-		if(StringUtils.isNotBlank(shareType)){
-			p = cb.and(p, cb.equal(root.get(Share_.shareType), shareType));
-		}
-		if(StringUtils.isNotBlank(fileType)){
-			p = cb.and(p, cb.equal(root.get(Share_.fileType), fileType));
-		}
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<Share> listWithShareUser(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Share> cq = cb.createQuery(Share.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.isMember(person, root.get(Share_.shareUserList));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listWithShareUser1(String person, String fileType) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.isMember(person, root.get(Share_.shareUserList));
-		if(StringUtils.isNotBlank(fileType)){
-			p = cb.and(p, cb.equal(root.get(Share_.fileType), fileType));
-		}
-		cq.select(root.get(Share_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<Share> listWithShareOrg(String org) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Share> cq = cb.createQuery(Share.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.isMember(org, root.get(Share_.shareOrgList));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listWithShareOrg1(String org, String fileType) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.isMember(org, root.get(Share_.shareOrgList));
-		if(StringUtils.isNotBlank(fileType)){
-			p = cb.and(p, cb.equal(root.get(Share_.fileType), fileType));
-		}
-		cq.select(root.get(Share_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public Share getShareByFileId(String fileId, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Share> cq = cb.createQuery(Share.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.equal(root.get(Share_.person), person);
-		p = cb.and(p, cb.equal(root.get(Share_.fileId), fileId));
-		List<Share> shareList = em.createQuery(cq.where(p)).setMaxResults(1).getResultList();
-		if(shareList!=null && !shareList.isEmpty()){
-			return shareList.get(0);
-		}
-		return null;
-	}
-
-	public List<String> listWithShieldUser1(String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Share.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Share> root = cq.from(Share.class);
-		Predicate p = cb.isMember(person, root.get(Share_.shieldUserList));
-		cq.select(root.get(Share_.id)).where(p);
-		return em.createQuery(cq).getResultList();
-	}
-
-
-}

+ 0 - 34
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/ActionApplication.java

@@ -1,34 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import java.util.Set;
-
-import javax.ws.rs.ApplicationPath;
-
-import com.x.base.core.project.jaxrs.AbstractActionApplication;
-import com.x.file.assemble.control.jaxrs.attachment.AttachmentAction;
-import com.x.file.assemble.control.jaxrs.attachment2.Attachment2Action;
-import com.x.file.assemble.control.jaxrs.complex.ComplexAction;
-import com.x.file.assemble.control.jaxrs.editor.EditorAction;
-import com.x.file.assemble.control.jaxrs.file.FileAction;
-import com.x.file.assemble.control.jaxrs.folder.FolderAction;
-import com.x.file.assemble.control.jaxrs.folder2.Folder2Action;
-import com.x.file.assemble.control.jaxrs.recycle.RecycleAction;
-import com.x.file.assemble.control.jaxrs.share.ShareAction;
-
-@ApplicationPath("jaxrs")
-public class ActionApplication extends AbstractActionApplication {
-
-	public Set<Class<?>> getClasses() {
-		classes.add(AttachmentAction.class);
-		classes.add(Attachment2Action.class);
-		classes.add(FolderAction.class);
-		classes.add(Folder2Action.class);
-		classes.add(ComplexAction.class);
-		classes.add(ShareAction.class);
-		classes.add(RecycleAction.class);
-		classes.add(EditorAction.class);
-		classes.add(FileAction.class);
-		return classes;
-	}
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/Attachment2JaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-import javax.servlet.annotation.WebFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/attachment2/*", asyncSupported = true)
-public class Attachment2JaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/AttachmentJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/attachment/*", asyncSupported = true)
-public class AttachmentJaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/ComplexJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/complex/*", asyncSupported = true)
-public class ComplexJaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/EditorJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/editor/*", asyncSupported = true)
-public class EditorJaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/FileJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.AnonymousCipherManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/file/*", asyncSupported = true)
-public class FileJaxrsFilter extends AnonymousCipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/Folder2JaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-import javax.servlet.annotation.WebFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/folder2/*",asyncSupported = true)
-public class Folder2JaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/FolderJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/folder/*",asyncSupported = true)
-public class FolderJaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/RecycleJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-import javax.servlet.annotation.WebFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/recycle/*", asyncSupported = true)
-public class RecycleJaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 10
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/ShareJaxrsFilter.java

@@ -1,10 +0,0 @@
-package com.x.file.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = "/jaxrs/share/*", asyncSupported = true)
-public class ShareJaxrsFilter extends CipherManagerUserJaxrsFilter {
-
-}

+ 0 - 54
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionDelete.java

@@ -1,54 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionDelete extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			if (null == mapping) {
-				throw new ExceptionStorageNotExist(attachment.getStorage());
-			}
-			attachment.deleteContent(mapping);
-			emc.beginTransaction(Attachment.class);
-			emc.delete(Attachment.class, attachment.getId());
-			emc.commit();
-			/* 发送取消共享通知 */
-			for (String str : ListTools.trim(attachment.getShareList(), true, true)) {
-				this.message_send_attachment_shareCancel(attachment, str);
-			}
-			/* 发送取消共享编辑通知 */
-			for (String str : ListTools.trim(attachment.getEditorList(), true, true)) {
-				this.message_send_attachment_editorCancel(attachment, str);
-			}
-			Wo wo = new Wo();
-			wo.setId(attachment.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WoId {
-
-	}
-}

+ 0 - 119
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionDownload.java

@@ -1,119 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.io.ByteArrayOutputStream;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-
-class ActionDownload extends StandardJaxrsAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(Attachment.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Wo wo = null;
-			/** 确定是否要用application/octet-stream输出 */
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())
-					&& (!attachment.getShareList().contains(effectivePerson.getDistinguishedName()))
-					&& (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName()))) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				wo = (Wo) element.getObjectValue();
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-						attachment.getStorage());
-				if (null == mapping) {
-					throw new ExceptionStorageNotExist(attachment.getStorage());
-				}
-				try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-					attachment.readContent(mapping, os);
-					byte[] bs = os.toByteArray();
-					wo = new Wo(bs, this.contentType(false, attachment.getName()),
-							this.contentDisposition(false, attachment.getName()));
-					/**
-					 * 对10M以下的文件进行缓存
-					 */
-					if (bs.length < (1024 * 1024 * 10)) {
-						cache.put(new Element(cacheKey, wo));
-					}
-				}
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	// @HttpMethodDescribe(value =
-	// "创建Attachment对象./servlet/attachment/download/{id}")
-	// protected void doGet(HttpServletRequest request, HttpServletResponse
-	// response)
-	// throws ServletException, IOException {
-	// try (EntityManagerContainer emc =
-	// EntityManagerContainerFactory.instance().create()) {
-	// request.setCharacterEncoding(DefaultCharset.name);
-	// EffectivePerson effectivePerson = this.effectivePerson(request);
-	// String id = this.getURIPart(request.getRequestURI(), "download");
-	// /* 确定是否要用application/octet-stream输出 */
-	// boolean streamContentType = StringUtils.endsWith(request.getRequestURI(),
-	// "/stream");
-	// Attachment attachment = emc.find(id, Attachment.class,
-	// ExceptionWhen.not_found);
-	// if (!StringUtils.equals(effectivePerson.getDistinguishedName(),
-	// attachment.getPerson())
-	// &&
-	// (!attachment.getShareList().contains(effectivePerson.getDistinguishedName()))
-	// &&
-	// (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName())))
-	// {
-	// throw new Exception("person{name:" +
-	// effectivePerson.getDistinguishedName() + "} access attachment{id:"
-	// + id + "} access denied.");
-	// }
-	// this.setResponseHeader(response, attachment, streamContentType);
-	// StorageMapping mapping =
-	// ThisApplication.context().storageMappings().get(Attachment.class,
-	// attachment.getStorage());
-	// if (null == mapping) {
-	// throw new ExceptionStorageMappingNotExist(attachment.getStorage());
-	// }
-	// OutputStream output = response.getOutputStream();
-	// attachment.readContent(mapping, output);
-	// } catch (Exception e) {
-	// e.printStackTrace();
-	// ActionResult<Object> result = new ActionResult<>();
-	// result.error(e);
-	// response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-	// response.getWriter().print(result.toJson());
-	// }
-	//
-	// }
-
-	public static class Wo extends WoFile {
-
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-
-	}
-}

+ 0 - 119
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionDownloadStream.java

@@ -1,119 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.io.ByteArrayOutputStream;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-
-class ActionDownloadStream extends StandardJaxrsAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(Attachment.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Wo wo = null;
-			/** 确定是否要用application/octet-stream输出 */
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())
-					&& (!attachment.getShareList().contains(effectivePerson.getDistinguishedName()))
-					&& (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName()))) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				wo = (Wo) element.getObjectValue();
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-						attachment.getStorage());
-				if (null == mapping) {
-					throw new ExceptionStorageNotExist(attachment.getStorage());
-				}
-				try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-					attachment.readContent(mapping, os);
-					byte[] bs = os.toByteArray();
-					wo = new Wo(bs, this.contentType(true, attachment.getName()),
-							this.contentDisposition(true, attachment.getName()));
-					/**
-					 * 对10M以下的文件进行缓存
-					 */
-					if (bs.length < (1024 * 1024 * 10)) {
-						cache.put(new Element(cacheKey, wo));
-					}
-				}
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	// @HttpMethodDescribe(value =
-	// "创建Attachment对象./servlet/attachment/download/{id}")
-	// protected void doGet(HttpServletRequest request, HttpServletResponse
-	// response)
-	// throws ServletException, IOException {
-	// try (EntityManagerContainer emc =
-	// EntityManagerContainerFactory.instance().create()) {
-	// request.setCharacterEncoding(DefaultCharset.name);
-	// EffectivePerson effectivePerson = this.effectivePerson(request);
-	// String id = this.getURIPart(request.getRequestURI(), "download");
-	// /* 确定是否要用application/octet-stream输出 */
-	// boolean streamContentType = StringUtils.endsWith(request.getRequestURI(),
-	// "/stream");
-	// Attachment attachment = emc.find(id, Attachment.class,
-	// ExceptionWhen.not_found);
-	// if (!StringUtils.equals(effectivePerson.getDistinguishedName(),
-	// attachment.getPerson())
-	// &&
-	// (!attachment.getShareList().contains(effectivePerson.getDistinguishedName()))
-	// &&
-	// (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName())))
-	// {
-	// throw new Exception("person{name:" +
-	// effectivePerson.getDistinguishedName() + "} access attachment{id:"
-	// + id + "} access denied.");
-	// }
-	// this.setResponseHeader(response, attachment, streamContentType);
-	// StorageMapping mapping =
-	// ThisApplication.context().storageMappings().get(Attachment.class,
-	// attachment.getStorage());
-	// if (null == mapping) {
-	// throw new ExceptionStorageMappingNotExist(attachment.getStorage());
-	// }
-	// OutputStream output = response.getOutputStream();
-	// attachment.readContent(mapping, output);
-	// } catch (Exception e) {
-	// e.printStackTrace();
-	// ActionResult<Object> result = new ActionResult<>();
-	// result.error(e);
-	// response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-	// response.getWriter().print(result.toJson());
-	// }
-	//
-	// }
-
-	public static class Wo extends WoFile {
-
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-
-	}
-}

+ 0 - 54
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGet.java

@@ -1,54 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionGet extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			/* 判断文件的所有者是否是当前用户 */
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			Wo wo = Wo.copier.copy(attachment);
-			wo.setContentType(this.contentType(false, wo.getName()));
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-		@FieldDescribe("文件类型")
-		private String contentType;
-
-		public String getContentType() {
-			return contentType;
-		}
-
-		public void setContentType(String contentType) {
-			this.contentType = contentType;
-		}
-
-	}
-}

+ 0 - 46
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGetBase64.java

@@ -1,46 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapString;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionGetBase64 extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())
-					&& effectivePerson.isNotPerson(attachment.getShareList())
-					&& effectivePerson.isNotPerson(attachment.getEditorList())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-				attachment.readContent(mapping, output);
-				String value = Base64.encodeBase64String(output.toByteArray());
-				Wo wo = new Wo();
-				wo.setValue(value);
-				result.setData(wo);
-			}
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapString {
-
-	}
-
-}

+ 0 - 66
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGetImageScaleBase64.java

@@ -1,66 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-
-import javax.imageio.ImageIO;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.commons.lang3.ArrayUtils;
-import org.imgscalr.Scalr;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapString;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionGetImageScaleBase64 extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, Integer scale) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())
-					&& effectivePerson.isNotPerson(attachment.getShareList())
-					&& effectivePerson.isNotPerson(attachment.getEditorList())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			if (!ArrayUtils.contains(IMAGE_EXTENSIONS, attachment.getExtension())) {
-				throw new Exception("attachment not image file.");
-			}
-			if (scale < 0 || scale > 100) {
-				throw new Exception("invaild scale:" + scale + ".");
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-				attachment.readContent(mapping, output);
-				try (ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray())) {
-					BufferedImage src = ImageIO.read(input);
-					int width = (src.getWidth() * scale) / (int) 100;
-					int height = (src.getHeight() * scale) / (int) 100;
-					BufferedImage scalrImage = Scalr.resize(src, width, height);
-					try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-						ImageIO.write(scalrImage, "png", baos);
-						String str = Base64.encodeBase64String(baos.toByteArray());
-						Wo wo = new Wo();
-						wo.setValue(str);
-						result.setData(wo);
-					}
-				}
-			}
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapString {
-	}
-}

+ 0 - 73
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionGetImageWidthHeightBase64.java

@@ -1,73 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-
-import javax.imageio.ImageIO;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.imgscalr.Scalr;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapString;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionGetImageWidthHeightBase64 extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, Integer width, Integer height)
-			throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())
-					&& effectivePerson.isNotPerson(attachment.getShareList())
-					&& effectivePerson.isNotPerson(attachment.getEditorList())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			if (!ArrayUtils.contains(IMAGE_EXTENSIONS, attachment.getExtension())) {
-				throw new Exception("attachment not image file.");
-			}
-			if (width < 0 || width > 5000) {
-				throw new Exception("invalid width:" + width + ".");
-			}
-			if (height < 0 || height > 5000) {
-				throw new Exception("invalid height:" + height + ".");
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-				attachment.readContent(mapping, output);
-				try (ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray())) {
-					BufferedImage src = ImageIO.read(input);
-					int scalrWidth = (width == 0) ? src.getWidth() : width;
-					int scalrHeight = (height == 0) ? src.getHeight() : height;
-					BufferedImage scalrImage = Scalr.resize(src, NumberUtils.min(scalrWidth, src.getWidth()),
-							NumberUtils.min(scalrHeight, src.getHeight()));
-					try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-						ImageIO.write(scalrImage, "png", baos);
-						String str = Base64.encodeBase64String(baos.toByteArray());
-						Wo wo = new Wo();
-						wo.setValue(str);
-						result.setData(wo);
-					}
-				}
-			}
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapString {
-
-	}
-}

+ 0 - 37
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListTop.java

@@ -1,37 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionListTop extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			List<String> ids = business.attachment().listTopWithPerson(effectivePerson.getDistinguishedName());
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment.class, ids));
-			SortTools.asc(wos, false, "name");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-	}
-}

+ 0 - 54
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListWithEditor.java

@@ -1,54 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionListWithEditor extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String owner) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			List<String> ids = business.attachment().listWithPersonWithEditor(owner,
-					effectivePerson.getDistinguishedName());
-					List<Wo> wos = Wo.copier.copy(emc.list(Attachment.class, ids));
-			for (Wo o : wos) {
-				o.setContentType(this.contentType(false, o.getName()));
-			}
-			SortTools.asc(wos, false, "name");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-		@FieldDescribe("文件类型")
-		private String contentType;
-
-		public String getContentType() {
-			return contentType;
-		}
-
-		public void setContentType(String contentType) {
-			this.contentType = contentType;
-		}
-
-	}
-}

+ 0 - 48
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListWithFolder.java

@@ -1,48 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Folder;
-
-class ActionListWithFolder extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String folderId) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			Folder folder = emc.find(folderId, Folder.class);
-			if (null == folder) {
-				throw new ExceptionFolderNotExist(folderId);
-			}
-			if (!StringUtils.equals(folder.getPerson(), effectivePerson.getDistinguishedName())) {
-				throw new ExceptionFolderAccessDenied(effectivePerson, folder);
-			}
-			List<String> ids = business.attachment().listWithFolder(folder.getId());
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment.class, ids));
-			SortTools.asc(wos, false, "name");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-	}
-}

+ 0 - 54
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionListWithShare.java

@@ -1,54 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionListWithShare extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String owner) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			List<String> ids = business.attachment().listWithPersonWithShare(owner,
-					effectivePerson.getDistinguishedName());
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment.class, ids));
-			for (Wo o : wos) {
-				o.setContentType(this.contentType(false, o.getName()));
-			}
-			SortTools.asc(wos, false, "name");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-		@FieldDescribe("文件类型")
-		private String contentType;
-
-		public String getContentType() {
-			return contentType;
-		}
-
-		public void setContentType(String contentType) {
-			this.contentType = contentType;
-		}
-
-	}
-}

+ 0 - 108
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpdate.java

@@ -1,108 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.exception.ExceptionEntityNotExist;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionUpdate extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionEntityNotExist(id, Attachment.class);
-			}
-			/* 判断文件的所有者是否是当前用户 */
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAccessDenied(effectivePerson);
-			}
-			List<String> oldShareList = new ArrayList<>();
-			List<String> oldEditorList = new ArrayList<>();
-			oldShareList.addAll(attachment.getShareList());
-			oldEditorList.addAll(attachment.getEditorList());
-			List<String> shareList = new ArrayList<>();
-			List<String> editorList = new ArrayList<>();
-			if (null != wi.getShareList()) {
-				shareList = business.organization().person().list(wi.getShareList());
-			}
-			if (null != wi.getEditorList()) {
-				editorList = business.organization().person().list(wi.getEditorList());
-			}
-			/* 从共享用户和共享编辑者里面去掉当前用户和创建者 */
-			shareList = ListUtils.subtract(shareList,
-					ListTools.toList(attachment.getPerson(), effectivePerson.getDistinguishedName()));
-			editorList = ListUtils.subtract(editorList,
-					ListTools.toList(attachment.getPerson(), effectivePerson.getDistinguishedName()));
-			emc.beginTransaction(Attachment.class);
-			Wi.copier.copy(wi, attachment);
-			attachment.setShareList(shareList);
-			attachment.setEditorList(editorList);
-			attachment.setLastUpdatePerson(effectivePerson.getDistinguishedName());
-			emc.check(attachment, CheckPersistType.all);
-			emc.commit();
-			List<String> shareAdds = ListUtils.subtract(shareList, oldShareList);
-			List<String> editorAdds = ListUtils.subtract(editorList, oldEditorList);
-			List<String> shareCancels = ListUtils.subtract(oldShareList, shareList);
-			List<String> editorCancels = ListUtils.subtract(oldEditorList, editorList);
-			/* 发送共享通知 */
-			for (String str : shareAdds) {
-				this.message_send_attachment_share(attachment, str);
-//				FileShareMessage message = new FileShareMessage(str, attachment.getId());
-//				Collaboration.send(message);
-			}
-			/* 发送编辑通知 */
-			for (String str : editorAdds) {
-				this.message_send_attachment_editor(attachment, str);
-//				FileModifyMessage message = new FileModifyMessage(str, attachment.getId());
-//				Collaboration.send(message);
-			}
-			/* 发送取消共享通知 */
-			for (String str : shareCancels) {
-				this.message_send_attachment_shareCancel(attachment, str);
-			}
-			/* 发送取消共享编辑通知 */
-			for (String str : editorCancels) {
-				this.message_send_attachment_editorCancel(attachment, str);
-			}
-			ApplicationCache.notify(Attachment.class, attachment.getId());
-			Wo wo = new Wo();
-			wo.setId(attachment.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wi extends Attachment {
-
-		private static final long serialVersionUID = -5317431633607552753L;
-
-		static WrapCopier<Wi, Attachment> copier = WrapCopierFactory.wi(Wi.class, Attachment.class,
-				ListTools.toList("shareList", "editorList", "folder", "name"), null);
-
-	}
-
-	public static class Wo extends WoId {
-
-	}
-}

+ 0 - 83
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpdateContent.java

@@ -1,83 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionUpdateContent extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, byte[] bytes,
-			FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if ((!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson()))
-					&& (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName()))) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			if (null == mapping) {
-				throw new ExceptionStorageNotExist(attachment.getStorage());
-			}
-			attachment.setLastUpdatePerson(effectivePerson.getDistinguishedName());
-			/** 禁止不带扩展名的文件上传 */
-			/** 文件名编码转换 */
-			String fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-					DefaultCharset.charset);
-			fileName = FilenameUtils.getName(fileName);
-
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtension(fileName);
-			}
-			/** 不允许不同的扩展名上传 */
-			if (!Objects.equals(StringUtils.lowerCase(FilenameUtils.getExtension(fileName)),
-					attachment.getExtension())) {
-				throw new ExceptionExtensionNotMatch(fileName, attachment.getExtension());
-			}
-			emc.beginTransaction(Attachment.class);
-			attachment.updateContent(mapping, bytes);
-			emc.check(attachment, CheckPersistType.all);
-			emc.commit();
-			/** 通知所有的共享和共享编辑人员 */
-			List<String> people = new ArrayList<>();
-			people = ListUtils.union(attachment.getShareList(), attachment.getEditorList());
-			people.add(attachment.getPerson());
-			for (String o : ListTools.trim(people, true, true)) {
-				if (!StringUtils.equals(o, effectivePerson.getDistinguishedName())) {
-					this.message_send_attachment_editorModify(attachment, effectivePerson.getDistinguishedName(), o);
-				}
-			}
-			ApplicationCache.notify(Attachment.class, attachment.getId());
-			Wo wo = new Wo();
-			wo.setId(attachment.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WoId {
-
-	}
-}

+ 0 - 94
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpdateContentCallback.java

@@ -1,94 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoCallback;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-
-class ActionUpdateContentCallback extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionUpdateContentCallback.class);
-
-	ActionResult<Wo<WoObject>> execute(EffectivePerson effectivePerson, String id, String callback, byte[] bytes,
-			FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo<WoObject>> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExistCallback(callback, id);
-			}
-			if ((!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson()))
-					&& (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName()))) {
-				throw new ExceptionAttachmentAccessDeniedCallback(effectivePerson, callback, attachment);
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			if (null == mapping) {
-				throw new ExceptionStorageNotExistCallback(callback, attachment.getStorage());
-			}
-			attachment.setLastUpdatePerson(effectivePerson.getDistinguishedName());
-			/** 禁止不带扩展名的文件上传 */
-			/** 文件名编码转换 */
-			String fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-					DefaultCharset.charset);
-			fileName = FilenameUtils.getName(fileName);
-
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtensionCallback(callback, fileName);
-			}
-			/** 不允许不同的扩展名上传 */
-			if (!Objects.equals(StringUtils.lowerCase(FilenameUtils.getExtension(fileName)),
-					attachment.getExtension())) {
-				throw new ExceptionExtensionNotMatchCallback(callback, fileName, attachment.getExtension());
-			}
-			emc.beginTransaction(Attachment.class);
-			attachment.updateContent(mapping, bytes);
-			emc.check(attachment, CheckPersistType.all);
-			emc.commit();
-			/** 通知所有的共享和共享编辑人员 */
-			List<String> people = new ArrayList<>();
-			people = ListUtils.union(attachment.getShareList(), attachment.getEditorList());
-			people.add(attachment.getPerson());
-			for (String o : ListTools.trim(people, true, true)) {
-				if (!StringUtils.equals(o, effectivePerson.getDistinguishedName())) {
-					this.message_send_attachment_editorModify(attachment, effectivePerson.getDistinguishedName(), o);
-				}
-			}
-			ApplicationCache.notify(Attachment.class, attachment.getId());
-			WoObject woObject = new WoObject();
-			woObject.setId(attachment.getId());
-			Wo<WoObject> wo = new Wo<>(callback, woObject);
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo<T> extends WoCallback<T> {
-		public Wo(String callbackName, T t) {
-			super(callbackName, t);
-		}
-	}
-
-	public static class WoObject extends WoId {
-	}
-}

+ 0 - 100
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUpload.java

@@ -1,100 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.file.assemble.control.Business;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Attachment_;
-import com.x.file.core.entity.personal.Folder;
-
-class ActionUpload extends StandardJaxrsAction {
-
-	// @HttpMethodDescribe(value = "创建Attachment对象,如果没有上级目录用(0)替代.", response =
-	// WrapOutId.class)
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String folderId, String fileName, byte[] bytes,
-			FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<Wo> result = new ActionResult<>();
-			if ((!StringUtils.isEmpty(folderId)) && (!StringUtils.equalsIgnoreCase(folderId, EMPTY_SYMBOL))) {
-				Folder folder = emc.find(folderId, Folder.class);
-				if (null == folder) {
-					throw new ExceptionFolderNotExist(folderId);
-				}
-				if ((!StringUtils.equals(business.organization().person().get(folder.getPerson()),
-						effectivePerson.getDistinguishedName())) && (effectivePerson.isNotManager())) {
-					throw new ExceptionFolderAccessDenied(effectivePerson, folder);
-				}
-				folderId = folder.getId();
-			} else {
-				folderId = null;
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().random(Attachment.class);
-			if (null == mapping) {
-				throw new ExceptionAllocateStorageMaaping();
-			}
-			/** 由于需要校验要把所有的必要字段进行填写 */
-
-			/** 文件名编码转换 */
-			if (StringUtils.isEmpty(fileName)) {
-				fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-						DefaultCharset.charset);
-			}
-			fileName = FilenameUtils.getName(fileName);
-			/** 禁止不带扩展名的文件上传 */
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtension(fileName);
-			}
-			/** 同一目录下文件名唯一 */
-			if (this.exist(business, fileName, folderId)) {
-				throw new ExceptionSameNameFileExist(fileName);
-			}
-			Attachment attachment = new Attachment(mapping.getName(), fileName, effectivePerson.getDistinguishedName(),
-					folderId);
-			emc.check(attachment, CheckPersistType.all);
-			attachment.saveContent(mapping, bytes, fileName);
-			emc.beginTransaction(Attachment.class);
-			emc.persist(attachment);
-			emc.commit();
-			Wo wo = new Wo();
-			wo.setId(attachment.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	private Boolean exist(Business business, String fileName, String folderId) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.equal(root.get(Attachment_.name), fileName);
-		if (StringUtils.isNotEmpty(folderId)) {
-			p = cb.and(p, cb.equal(root.get(Attachment_.folder), folderId));
-		} else {
-			p = cb.and(p, cb.or(cb.isNull(root.get(Attachment_.folder)), cb.equal(root.get(Attachment_.folder), "")));
-		}
-		return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult() > 0;
-	}
-
-	public static class Wo extends WoId {
-	}
-}

+ 0 - 109
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ActionUploadCallback.java

@@ -1,109 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoCallback;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.file.assemble.control.Business;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Attachment_;
-import com.x.file.core.entity.personal.Folder;
-
-class ActionUploadCallback extends StandardJaxrsAction {
-
-	// @HttpMethodDescribe(value = "创建Attachment对象,如果没有上级目录用(0)替代.", response =
-	// WrapOutId.class)
-	ActionResult<Wo<WoObject>> execute(EffectivePerson effectivePerson, String folderId, String callback,
-			String fileName, byte[] bytes, FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<Wo<WoObject>> result = new ActionResult<>();
-			if ((!StringUtils.isEmpty(folderId)) && (!StringUtils.equalsIgnoreCase(folderId, EMPTY_SYMBOL))) {
-				Folder folder = emc.find(folderId, Folder.class);
-				if (null == folder) {
-					throw new ExceptionFolderNotExistCallback(callback, folderId);
-				}
-				if (!StringUtils.equals(business.organization().person().get(folder.getPerson()),
-						effectivePerson.getDistinguishedName())) {
-					throw new ExceptionFolderAccessDeniedCallback(effectivePerson, callback, folder);
-				}
-				folderId = folder.getId();
-			} else {
-				folderId = null;
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().random(Attachment.class);
-			if (null == mapping) {
-				throw new ExceptionAllocateStorageMaapingCallback(callback);
-			}
-			/** 由于需要校验要把所有的必要字段进行填写 */
-
-			/** 文件名编码转换 */
-			if (StringUtils.isEmpty(fileName)) {
-				fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-						DefaultCharset.charset);
-			}
-			fileName = FilenameUtils.getName(fileName);
-			/** 禁止不带扩展名的文件上传 */
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtensionCallback(callback, fileName);
-			}
-			/** 同一目录下文件名唯一 */
-			if (this.exist(business, fileName, folderId)) {
-				throw new ExceptionSameNameFileExistCallback(callback, fileName);
-			}
-			Attachment attachment = new Attachment(mapping.getName(), fileName, effectivePerson.getDistinguishedName(),
-					folderId);
-			emc.check(attachment, CheckPersistType.all);
-			attachment.saveContent(mapping, bytes, fileName);
-			emc.beginTransaction(Attachment.class);
-			emc.persist(attachment);
-			emc.commit();
-			WoObject woObject = new WoObject();
-			woObject.setId(attachment.getId());
-			Wo<WoObject> wo = new Wo<>(callback, woObject);
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	private Boolean exist(Business business, String fileName, String folderId) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.equal(root.get(Attachment_.name), fileName);
-		if (StringUtils.isNotEmpty(folderId)) {
-			p = cb.and(p, cb.equal(root.get(Attachment_.folder), folderId));
-		} else {
-			p = cb.and(p, cb.or(cb.isNull(root.get(Attachment_.folder)), cb.equal(root.get(Attachment_.folder), "")));
-		}
-		return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult() > 0;
-	}
-
-	public static class Wo<T> extends WoCallback<T> {
-		public Wo(String callbackName, T t) {
-			super(callbackName, t);
-		}
-	}
-
-	public static class WoObject extends WoId {
-	}
-
-}

+ 0 - 379
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/AttachmentAction.java

@@ -1,379 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.container.Suspended;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.annotation.JaxrsDescribe;
-import com.x.base.core.project.annotation.JaxrsMethodDescribe;
-import com.x.base.core.project.annotation.JaxrsParameterDescribe;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.http.HttpMediaType;
-import com.x.base.core.project.jaxrs.ResponseFactory;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.file.assemble.control.jaxrs.attachment.ActionUpdateContentCallback.Wo;
-import com.x.file.assemble.control.jaxrs.attachment.ActionUploadCallback.WoObject;
-
-@Path("attachment")
-@JaxrsDescribe("附件操作")
-public class AttachmentAction extends StandardJaxrsAction {
-
-	private static Logger logger = LoggerFactory.getLogger(AttachmentAction.class);
-
-	@JaxrsMethodDescribe(value = "获取文件Base64编码后的内容.", action = ActionGetBase64.class)
-	@GET
-	@Path("{id}/binary/base64")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getBase64(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionGetBase64.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGetBase64().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取图片缩放后的base64内容(png格式).scale(0-200)百分比缩放比例.", action = ActionGetImageScaleBase64.class)
-	@GET
-	@Path("{id}/image/scale/{scale}/binary/base64")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getImageScaleBase64(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("缩放比例") @PathParam("scale") Integer scale) {
-		ActionResult<ActionGetImageScaleBase64.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGetImageScaleBase64().execute(effectivePerson, id, scale);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取图片设定宽高后的base64内容(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.", action = ActionGetImageWidthHeightBase64.class)
-	@GET
-	@Path("{id}/image/width/{width}/height/{height}/binary/base64")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getImageWidthHeightBase64(@Suspended final AsyncResponse asyncResponse,
-			@Context HttpServletRequest request, @JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("宽度") @PathParam("width") Integer width,
-			@JaxrsParameterDescribe("高度") @PathParam("height") Integer height) {
-		ActionResult<ActionGetImageWidthHeightBase64.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGetImageWidthHeightBase64().execute(effectivePerson, id, width, height);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取指定人员共享给我的文件.", action = ActionGet.class)
-	@GET
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void get(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionGet.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGet().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "更新Attachment", action = ActionUpdate.class)
-	@PUT
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void update(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, JsonElement jsonElement) {
-		ActionResult<ActionUpdate.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUpdate().execute(effectivePerson, id, jsonElement);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "删除附件.", action = ActionDelete.class)
-	@DELETE
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void delete(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDelete().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取当前人员的顶层文件.", action = ActionListTop.class)
-	@GET
-	@Path("list/top")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listTop(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
-		ActionResult<List<ActionListTop.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListTop().execute(effectivePerson);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取当前人员在指定文件夹下的文件.", action = ActionListWithFolder.class)
-	@GET
-	@Path("list/folder/{folderId}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithFolder(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("目录标识") @PathParam("folderId") String folderId) {
-		ActionResult<List<ActionListWithFolder.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListWithFolder().execute(effectivePerson, folderId);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取指定人员共享给我的文件.", action = ActionListWithShare.class)
-	@GET
-	@Path("list/share/{owner}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithShare(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("文件所有人") @PathParam("owner") String owner) {
-		ActionResult<List<ActionListWithShare.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListWithShare().execute(effectivePerson, owner);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取指定人员共享给我编辑的文件.", action = ActionListWithEditor.class)
-	@GET
-	@Path("list/editor/{owner}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithEditor(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("文件所有人") @PathParam("owner") String owner) {
-		ActionResult<List<ActionListWithEditor.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			result = new ActionListWithEditor().execute(effectivePerson, owner);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取附件内容,输出头信息", action = ActionDownload.class)
-	@GET
-	@Path("{id}/download")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void download(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionDownload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownload().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取附件内容.不输出头信息", action = ActionDownloadStream.class)
-	@GET
-	@Path("{id}/download/stream")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void downloadStream(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionDownloadStream.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownloadStream().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	/** 为IOS访问单独增加的方法 */
-	@JaxrsMethodDescribe(value = "获取附件内容,输出头信息,,使用POST方法访问.", action = ActionDownload.class)
-	@POST
-	@Path("{id}/download")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void postDownload(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, JsonElement jsonElement) {
-		ActionResult<ActionDownload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownload().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	/** 为IOS访问单独增加的方法 */
-	@JaxrsMethodDescribe(value = "获取附件内容.不输出头信息,使用POST方法访问.", action = ActionDownloadStream.class)
-	@POST
-	@Path("{id}/download/stream")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void postDownloadStream(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, JsonElement jsonElement) {
-		ActionResult<ActionDownloadStream.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownloadStream().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "更新Attachment的内容", action = ActionUpdateContent.class)
-	@PUT
-	@Path("{id}/update")
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	public void updateContent(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, @FormDataParam(FILE_FIELD) final byte[] bytes,
-			@JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionUpdateContent.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUpdateContent().execute(effectivePerson, id, bytes, disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "更新Attachment的内容并返回回调.,使用callback方式,为了与前台兼容使用POST方法", action = ActionUpdateContentCallback.class)
-	@POST
-	@Path("{id}/update/callback/{callback}")
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	@Produces(HttpMediaType.TEXT_HTML_UTF_8)
-	public void updateContentCallback(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("回调函数名") @PathParam("callback") String callback,
-			@FormDataParam(FILE_FIELD) final byte[] bytes,
-			@JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<Wo<ActionUpdateContentCallback.WoObject>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUpdateContentCallback().execute(effectivePerson, id, callback, bytes, disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "创建Attachment的内容", action = ActionUpload.class)
-	@POST
-	@Path("upload/folder/{folderId}")
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	public void upload(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("目录") @PathParam("folderId") String folderId,
-			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
-			@JaxrsParameterDescribe("附件标识") @FormDataParam(FILE_FIELD) final byte[] bytes,
-			@JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionUpload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUpload().execute(effectivePerson, folderId, fileName, bytes, disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "创建Attachment的内容并返回回调.", action = ActionUploadCallback.class)
-	@POST
-	@Path("upload/folder/{folderId}/callback/{callback}")
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	@Produces(HttpMediaType.TEXT_HTML_UTF_8)
-	public void uploadCallback(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("目录") @PathParam("folderId") String folderId,
-			@JaxrsParameterDescribe("回调函数名") @PathParam("callback") String callback,
-			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
-			@JaxrsParameterDescribe("附件标识") @FormDataParam(FILE_FIELD) final byte[] bytes,
-			@JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionUploadCallback.Wo<WoObject>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUploadCallback().execute(effectivePerson, folderId, callback, fileName, bytes,
-					disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-}

+ 0 - 45
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/BaseAction.java

@@ -1,45 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.gson.XGsonBuilder;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.message.MessageConnector;
-import com.x.base.core.project.organization.OrganizationDefinition;
-import com.x.file.core.entity.personal.Attachment;
-
-abstract class BaseAction extends StandardJaxrsAction {
-
-	protected void message_send_attachment_share(Attachment attachment, String person) throws Exception {
-		String title = "收到来自(" + OrganizationDefinition.name(attachment.getPerson()) + ")的共享文件:" + attachment.getName()
-				+ ".";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_SHARE, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_shareCancel(Attachment attachment, String person) throws Exception {
-		String title = "(" + OrganizationDefinition.name(attachment.getPerson()) + ")取消了对:" + attachment.getName()
-				+ ",文件的共享.";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_SHARECANCEL, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_editor(Attachment attachment, String person) throws Exception {
-		String title = "收到来自(" + OrganizationDefinition.name(attachment.getPerson()) + ")的可编辑共享文件:"
-				+ attachment.getName() + ".";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_EDITOR, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_editorCancel(Attachment attachment, String person) throws Exception {
-		String title = "(" + OrganizationDefinition.name(attachment.getPerson()) + ")取消了对:" + attachment.getName()
-				+ ",文件的共享编辑.";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_EDITORCANCEL, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_editorModify(Attachment attachment, String editor, String person)
-			throws Exception {
-		String title = "(" + OrganizationDefinition.name(editor) + ")对文件:" + attachment.getName() + ",进行了修改.";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_EDITORMODIFY, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAllocateStorageMaaping.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionAllocateStorageMaaping extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionAllocateStorageMaaping() {
-		super("无法分派存储器.");
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAllocateStorageMaapingCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionAllocateStorageMaapingCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionAllocateStorageMaapingCallback(String callbackName) {
-		super(callbackName, "无法分派存储器.");
-	}
-}

+ 0 - 14
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentAccessDenied.java

@@ -1,14 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Attachment;
-
-class ExceptionAttachmentAccessDenied extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentAccessDenied(EffectivePerson effectivePerson, Attachment attachment) {
-		super("person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(), attachment.getName());
-	}
-}

+ 0 - 16
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentAccessDeniedCallback.java

@@ -1,16 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Attachment;
-
-class ExceptionAttachmentAccessDeniedCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentAccessDeniedCallback(EffectivePerson effectivePerson, String callbackName,
-			Attachment attachment) {
-		super(callbackName, "person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(),
-				attachment.getName());
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentNotExist.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionAttachmentNotExist extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentNotExist(String id) {
-		super("指定的文件: {} 不存在.", id);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionAttachmentNotExistCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionAttachmentNotExistCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentNotExistCallback(String callbackName, String id) {
-		super(callbackName, "指定的文件: {} 不存在.", id);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionEmptyExtension.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionEmptyExtension extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionEmptyExtension(String name) {
-		super("不能上传文件扩展名为空的文件: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionEmptyExtensionCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionEmptyExtensionCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionEmptyExtensionCallback(String callbackName,String name) {
-		super(callbackName,"不能上传文件扩展名为空的文件: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionExtensionNotMatch.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionExtensionNotMatch extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionExtensionNotMatch(String name, String extension) {
-		super("文件: {} 的扩展名不匹配,期望的扩展名: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionExtensionNotMatchCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionExtensionNotMatchCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionExtensionNotMatchCallback(String callbackName, String name, String extension) {
-		super(callbackName, "文件: {} 的扩展名不匹配,期望的扩展名: {}.", name);
-	}
-}

+ 0 - 14
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderAccessDenied.java

@@ -1,14 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Folder;
-
-class ExceptionFolderAccessDenied extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionFolderAccessDenied(EffectivePerson effectivePerson, Folder folder) {
-		super("person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(), folder.getName());
-	}
-}

+ 0 - 15
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderAccessDeniedCallback.java

@@ -1,15 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Folder;
-
-class ExceptionFolderAccessDeniedCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionFolderAccessDeniedCallback(EffectivePerson effectivePerson, String callbackName, Folder folder) {
-		super(callbackName, "person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(),
-				folder.getName());
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderNotExist.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionFolderNotExist extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionFolderNotExist(String id) {
-		super("指定的目录: {} 不存在.", id);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionFolderNotExistCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionFolderNotExistCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionFolderNotExistCallback(String callbackName, String id) {
-		super(callbackName, "指定的目录: {} 不存在.", id);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionSameNameFileExist.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionSameNameFileExist extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionSameNameFileExist(String fileName) {
-		super("同名文件已经存在:{}.", fileName);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionSameNameFileExistCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionSameNameFileExistCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionSameNameFileExistCallback(String callbackName, String fileName) {
-		super(callbackName, "同名文件已经存在:{}.", fileName);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionStorageNotExist.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionStorageNotExist extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionStorageNotExist(String name) {
-		super("无法找到存储器: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment/ExceptionStorageNotExistCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionStorageNotExistCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionStorageNotExistCallback(String callbackName, String name) {
-		super(callbackName, "无法找到存储器: {}.", name);
-	}
-}

+ 0 - 32
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionCheckFileExist.java

@@ -1,32 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.jaxrs.WrapBoolean;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.open.OriginFile;
-
-class ActionCheckFileExist extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String fileMd5) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<Wo> result = new ActionResult<>();
-			OriginFile originFile = business.originFile().getByMd5(fileMd5);
-			Wo wo = new Wo();
-			wo.setValue(false);
-			if(originFile!=null) {
-				wo.setValue(true);
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapBoolean {
-
-	}
-}

+ 0 - 63
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDelete.java

@@ -1,63 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.jaxrs.WrapBoolean;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Attachment2;
-import com.x.file.core.entity.personal.Recycle;
-import com.x.file.core.entity.personal.Share;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.persistence.EntityManager;
-
-class ActionDelete extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Business business = new Business(emc);
-			Attachment2 attachment = emc.find(id, Attachment2.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!effectivePerson.isManager() && !StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			Share share = business.share().getShareByFileId(attachment.getId(),effectivePerson.getDistinguishedName());
-			if(share!=null){
-				EntityManager sem = emc.beginTransaction(Share.class);
-				sem.remove(share);
-				sem.getTransaction().commit();
-			}
-			if("正常".equals(attachment.getStatus())){
-				Recycle recycle = new Recycle(attachment.getPerson(), attachment.getName(), attachment.getId(), "attachment");
-				recycle.setExtension(attachment.getExtension());
-				recycle.setLength(attachment.getLength());
-				EntityManager rem = emc.beginTransaction(Recycle.class);
-				rem.persist(recycle);
-				rem.getTransaction().commit();
-
-				EntityManager aem = emc.beginTransaction(Attachment2.class);
-				attachment.setStatus("已删除");
-				aem.getTransaction().commit();
-			}
-			Wo wo = new Wo();
-			wo.setValue(true);
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapBoolean {
-
-	}
-}

+ 0 - 120
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDownload.java

@@ -1,120 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.ByteArrayOutputStream;
-
-class ActionDownload extends StandardJaxrsAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(Attachment2.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Wo wo = null;
-			/** 确定是否要用application/octet-stream输出 */
-			Attachment2 attachment = emc.find(id, Attachment2.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!effectivePerson.isManager() && !StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				wo = (Wo) element.getObjectValue();
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-						originFile.getStorage());
-				if (null == mapping) {
-					throw new ExceptionStorageNotExist(originFile.getStorage());
-				}
-				try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-					originFile.readContent(mapping, os);
-					byte[] bs = os.toByteArray();
-					wo = new Wo(bs, this.contentType(false, attachment.getName()),
-							this.contentDisposition(false, attachment.getName()));
-					/**
-					 * 对10M以下的文件进行缓存
-					 */
-					if (bs.length < (1024 * 1024 * 10)) {
-						cache.put(new Element(cacheKey, wo));
-					}
-				}
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	// @HttpMethodDescribe(value =
-	// "创建Attachment对象./servlet/attachment/download/{id}")
-	// protected void doGet(HttpServletRequest request, HttpServletResponse
-	// response)
-	// throws ServletException, IOException {
-	// try (EntityManagerContainer emc =
-	// EntityManagerContainerFactory.instance().create()) {
-	// request.setCharacterEncoding(DefaultCharset.name);
-	// EffectivePerson effectivePerson = this.effectivePerson(request);
-	// String id = this.getURIPart(request.getRequestURI(), "download");
-	// /* 确定是否要用application/octet-stream输出 */
-	// boolean streamContentType = StringUtils.endsWith(request.getRequestURI(),
-	// "/stream");
-	// Attachment attachment = emc.find(id, Attachment.class,
-	// ExceptionWhen.not_found);
-	// if (!StringUtils.equals(effectivePerson.getDistinguishedName(),
-	// attachment.getPerson())
-	// &&
-	// (!attachment.getShareList().contains(effectivePerson.getDistinguishedName()))
-	// &&
-	// (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName())))
-	// {
-	// throw new Exception("person{name:" +
-	// effectivePerson.getDistinguishedName() + "} access attachment{id:"
-	// + id + "} access denied.");
-	// }
-	// this.setResponseHeader(response, attachment, streamContentType);
-	// StorageMapping mapping =
-	// ThisApplication.context().storageMappings().get(Attachment.class,
-	// attachment.getStorage());
-	// if (null == mapping) {
-	// throw new ExceptionStorageMappingNotExist(attachment.getStorage());
-	// }
-	// OutputStream output = response.getOutputStream();
-	// attachment.readContent(mapping, output);
-	// } catch (Exception e) {
-	// e.printStackTrace();
-	// ActionResult<Object> result = new ActionResult<>();
-	// result.error(e);
-	// response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-	// response.getWriter().print(result.toJson());
-	// }
-	//
-	// }
-
-	public static class Wo extends WoFile {
-
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-
-	}
-}

+ 0 - 98
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDownloadImageWidthHeight.java

@@ -1,98 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.imgscalr.Scalr;
-
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-
-class ActionDownloadImageWidthHeight extends BaseAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(ActionDownloadImageWidthHeight.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, Integer width, Integer height)
-			throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment2 attachment = emc.find(id, Attachment2.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			if (!ArrayUtils.contains(IMAGE_EXTENSIONS, attachment.getExtension())) {
-				throw new Exception("attachment not image file.");
-			}
-			if (width < 0 || width > 5000) {
-				throw new Exception("invalid width:" + width + ".");
-			}
-			if (height < 0 || height > 5000) {
-				throw new Exception("invalid height:" + height + ".");
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			Wo wo = null;
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id+width+height);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				wo = (Wo) element.getObjectValue();
-				result.setData(wo);
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-						originFile.getStorage());
-				try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-					originFile.readContent(mapping, output);
-					try (ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray())) {
-						BufferedImage src = ImageIO.read(input);
-						int scalrWidth = (width == 0) ? src.getWidth() : width;
-						int scalrHeight = (height == 0) ? src.getHeight() : height;
-						Scalr.Mode mode = Scalr.Mode.FIT_TO_WIDTH;
-						if(src.getWidth()>src.getHeight()){
-							mode = Scalr.Mode.FIT_TO_HEIGHT;
-						}
-						BufferedImage scalrImage = Scalr.resize(src,Scalr.Method.SPEED, mode, NumberUtils.min(scalrWidth, src.getWidth()),
-								NumberUtils.min(scalrHeight, src.getHeight()));
-						try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-							ImageIO.write(scalrImage, "png", baos);
-							byte[] bs = baos.toByteArray();
-
-							wo = new Wo(bs, this.contentType(false, attachment.getName()),
-									this.contentDisposition(false, attachment.getName()));
-
-							cache.put(new Element(cacheKey, wo));
-							result.setData(wo);
-						}
-					}
-				}
-			}
-
-			return result;
-		}
-	}
-
-	public static class Wo extends WoFile {
-
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-
-	}
-}

+ 0 - 120
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionDownloadStream.java

@@ -1,120 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.ByteArrayOutputStream;
-
-class ActionDownloadStream extends StandardJaxrsAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(Attachment2.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Wo wo = null;
-			/** 确定是否要用application/octet-stream输出 */
-			Attachment2 attachment = emc.find(id, Attachment2.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				wo = (Wo) element.getObjectValue();
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-						originFile.getStorage());
-				if (null == mapping) {
-					throw new ExceptionStorageNotExist(originFile.getStorage());
-				}
-				try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-					originFile.readContent(mapping, os);
-					byte[] bs = os.toByteArray();
-					wo = new Wo(bs, this.contentType(true, attachment.getName()),
-							this.contentDisposition(true, attachment.getName()));
-					/**
-					 * 对10M以下的文件进行缓存
-					 */
-					if (bs.length < (1024 * 1024 * 10)) {
-						cache.put(new Element(cacheKey, wo));
-					}
-				}
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	// @HttpMethodDescribe(value =
-	// "创建Attachment对象./servlet/attachment/download/{id}")
-	// protected void doGet(HttpServletRequest request, HttpServletResponse
-	// response)
-	// throws ServletException, IOException {
-	// try (EntityManagerContainer emc =
-	// EntityManagerContainerFactory.instance().create()) {
-	// request.setCharacterEncoding(DefaultCharset.name);
-	// EffectivePerson effectivePerson = this.effectivePerson(request);
-	// String id = this.getURIPart(request.getRequestURI(), "download");
-	// /* 确定是否要用application/octet-stream输出 */
-	// boolean streamContentType = StringUtils.endsWith(request.getRequestURI(),
-	// "/stream");
-	// Attachment attachment = emc.find(id, Attachment.class,
-	// ExceptionWhen.not_found);
-	// if (!StringUtils.equals(effectivePerson.getDistinguishedName(),
-	// attachment.getPerson())
-	// &&
-	// (!attachment.getShareList().contains(effectivePerson.getDistinguishedName()))
-	// &&
-	// (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName())))
-	// {
-	// throw new Exception("person{name:" +
-	// effectivePerson.getDistinguishedName() + "} access attachment{id:"
-	// + id + "} access denied.");
-	// }
-	// this.setResponseHeader(response, attachment, streamContentType);
-	// StorageMapping mapping =
-	// ThisApplication.context().storageMappings().get(Attachment.class,
-	// attachment.getStorage());
-	// if (null == mapping) {
-	// throw new ExceptionStorageMappingNotExist(attachment.getStorage());
-	// }
-	// OutputStream output = response.getOutputStream();
-	// attachment.readContent(mapping, output);
-	// } catch (Exception e) {
-	// e.printStackTrace();
-	// ActionResult<Object> result = new ActionResult<>();
-	// result.error(e);
-	// response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-	// response.getWriter().print(result.toJson());
-	// }
-	//
-	// }
-
-	public static class Wo extends WoFile {
-
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-
-	}
-}

+ 0 - 53
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGet.java

@@ -1,53 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Attachment2;
-import org.apache.commons.lang3.StringUtils;
-
-class ActionGet extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment2 attachment = emc.find(id, Attachment2.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			/* 判断文件的所有者是否是当前用户 */
-			if (!effectivePerson.isManager() && !StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			Wo wo = Wo.copier.copy(attachment);
-			wo.setContentType(this.contentType(false, wo.getName()));
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment2 {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment2, Wo> copier = WrapCopierFactory.wo(Attachment2.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-		@FieldDescribe("文件类型")
-		private String contentType;
-
-		public String getContentType() {
-			return contentType;
-		}
-
-		public void setContentType(String contentType) {
-			this.contentType = contentType;
-		}
-
-	}
-}

+ 0 - 48
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGetBase64.java

@@ -1,48 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapString;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-
-class ActionGetBase64 extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment2 attachment = emc.find(id, Attachment2.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-					originFile.getStorage());
-			try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-				originFile.readContent(mapping, output);
-				String value = Base64.encodeBase64String(output.toByteArray());
-				Wo wo = new Wo();
-				wo.setValue(value);
-				result.setData(wo);
-			}
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapString {
-
-	}
-
-}

+ 0 - 67
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGetImageScaleBase64.java

@@ -1,67 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapString;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.commons.lang3.ArrayUtils;
-import org.imgscalr.Scalr;
-
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-
-class ActionGetImageScaleBase64 extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, Integer scale) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment2 attachment = emc.find(id, Attachment2.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			if (!ArrayUtils.contains(IMAGE_EXTENSIONS, attachment.getExtension())) {
-				throw new Exception("attachment not image file.");
-			}
-			if (scale < 0 || scale > 100) {
-				throw new Exception("invaild scale:" + scale + ".");
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-					originFile.getStorage());
-			try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-				originFile.readContent(mapping, output);
-				try (ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray())) {
-					BufferedImage src = ImageIO.read(input);
-					int width = (src.getWidth() * scale) / (int) 100;
-					int height = (src.getHeight() * scale) / (int) 100;
-					BufferedImage scalrImage = Scalr.resize(src, width, height);
-					try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-						ImageIO.write(scalrImage, "png", baos);
-						String str = Base64.encodeBase64String(baos.toByteArray());
-						Wo wo = new Wo();
-						wo.setValue(str);
-						result.setData(wo);
-					}
-				}
-			}
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapString {
-	}
-}

+ 0 - 92
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionGetImageWidthHeightBase64.java

@@ -1,92 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapString;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.imgscalr.Scalr;
-
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-
-class ActionGetImageWidthHeightBase64 extends BaseAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(ActionGetImageWidthHeightBase64.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, Integer width, Integer height)
-			throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment2 attachment = emc.find(id, Attachment2.class, ExceptionWhen.not_found);
-			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
-			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())) {
-				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
-						+ id + "} denied.");
-			}
-			if (!ArrayUtils.contains(IMAGE_EXTENSIONS, attachment.getExtension())) {
-				throw new Exception("attachment not image file.");
-			}
-			if (width < 0 || width > 5000) {
-				throw new Exception("invalid width:" + width + ".");
-			}
-			if (height < 0 || height > 5000) {
-				throw new Exception("invalid height:" + height + ".");
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id+width+height);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				Wo wo = (Wo) element.getObjectValue();
-				result.setData(wo);
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-						originFile.getStorage());
-				try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
-					originFile.readContent(mapping, output);
-					try (ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray())) {
-						BufferedImage src = ImageIO.read(input);
-						int scalrWidth = (width == 0) ? src.getWidth() : width;
-						int scalrHeight = (height == 0) ? src.getHeight() : height;
-						Scalr.Mode mode = Scalr.Mode.FIT_TO_WIDTH;
-						if(src.getWidth()>src.getHeight()){
-							mode = Scalr.Mode.FIT_TO_HEIGHT;
-						}
-						BufferedImage scalrImage = Scalr.resize(src,Scalr.Method.SPEED, mode, NumberUtils.min(scalrWidth, src.getWidth()),
-								NumberUtils.min(scalrHeight, src.getHeight()));
-						try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-							ImageIO.write(scalrImage, "png", baos);
-							String str = Base64.encodeBase64String(baos.toByteArray());
-							Wo wo = new Wo();
-							wo.setValue(str);
-							cache.put(new Element(cacheKey, wo));
-							result.setData(wo);
-						}
-					}
-				}
-			}
-
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapString {
-
-	}
-}

+ 0 - 99
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListFileTypePaging.java

@@ -1,99 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.gson.GsonPropertyObject;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment2;
-import com.x.file.core.entity.personal.Attachment2_;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.List;
-
-class ActionListFileTypePaging extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, Integer page, Integer size, JsonElement jsonElement)
-			throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
-			if (wi == null) {
-				wi = new Wi();
-			}
-			Integer adjustPage = this.adjustPage(page);
-			Integer adjustPageSize = this.adjustSize(size);
-			List<Attachment2> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
-			List<Wo> wos = Wo.copier.copy(os);
-			result.setData(wos);
-			result.setCount(this.count(effectivePerson, business, wi));
-			return result;
-		}
-	}
-
-	private List<Attachment2> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
-			Integer adjustPageSize, Wi wi) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Attachment2> cq = cb.createQuery(Attachment2.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.person), effectivePerson.getDistinguishedName());
-		p = cb.and(p, cb.equal(root.get(Attachment2_.status), "正常"));
-		if(StringUtils.isNotEmpty(wi.getFileType())){
-			p = cb.and(p, cb.equal(root.get(Attachment2_.type), wi.getFileType()));
-		}
-		cq.select(root).where(p).orderBy(cb.desc(root.get(Attachment2_.createTime)));
-		return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
-				.getResultList();
-	}
-
-	private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.person), effectivePerson.getDistinguishedName());
-		p = cb.and(p, cb.equal(root.get(Attachment2_.status), "正常"));
-		if(StringUtils.isNotEmpty(wi.getFileType())){
-			p = cb.and(p, cb.equal(root.get(Attachment2_.type), wi.getFileType()));
-		}
-		return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
-	}
-
-	public class Wi extends GsonPropertyObject {
-
-		@FieldDescribe("文件分类:图片(image)|文档(office)|音乐(music)|视频(movie)|其它(other)")
-		private String fileType;
-
-
-		public String getFileType() {
-			return fileType;
-		}
-
-		public void setFileType(String fileType) {
-			this.fileType = fileType;
-		}
-	}
-
-	public static class Wo extends Attachment2 {
-
-		private static final long serialVersionUID = 2279846765261247910L;
-
-		static WrapCopier<Attachment2, Wo> copier = WrapCopierFactory.wo(Attachment2.class, Wo.class,
-				JpaObject.singularAttributeField(Attachment2.class, true, true), null);
-
-	}
-
-}

+ 0 - 37
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListTop.java

@@ -1,37 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment2;
-
-import java.util.List;
-
-class ActionListTop extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			List<String> ids = business.attachment2().listTopWithPerson(effectivePerson.getDistinguishedName());
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment2.class, ids));
-			SortTools.desc(wos, false, "createTime");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment2 {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment2, Wo> copier = WrapCopierFactory.wo(Attachment2.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-	}
-}

+ 0 - 54
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithEditor.java

@@ -1,54 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-
-import java.util.List;
-
-class ActionListWithEditor extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String owner) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			List<String> ids = business.attachment().listWithPersonWithEditor(owner,
-					effectivePerson.getDistinguishedName());
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment.class, ids));
-			for (Wo o : wos) {
-				o.setContentType(this.contentType(false, o.getName()));
-			}
-			SortTools.asc(wos, false, "name");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-		@FieldDescribe("文件类型")
-		private String contentType;
-
-		public String getContentType() {
-			return contentType;
-		}
-
-		public void setContentType(String contentType) {
-			this.contentType = contentType;
-		}
-
-	}
-}

+ 0 - 38
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithFilter.java

@@ -1,38 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment2;
-
-import java.util.List;
-
-class ActionListWithFilter extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String name) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			List<String> ids = business.attachment2().listWithName(effectivePerson.getDistinguishedName(),name);
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment2.class, ids));
-			SortTools.desc(wos, false, "createTime");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment2 {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment2, Wo> copier = WrapCopierFactory.wo(Attachment2.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-	}
-}

+ 0 - 47
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithFolder.java

@@ -1,47 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment2;
-import com.x.file.core.entity.personal.Folder2;
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.List;
-
-class ActionListWithFolder extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String folderId) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			Folder2 folder = emc.find(folderId, Folder2.class);
-			if (null == folder) {
-				throw new ExceptionFolderNotExist(folderId);
-			}
-			if (!StringUtils.equals(folder.getPerson(), effectivePerson.getDistinguishedName())) {
-				throw new ExceptionFolderAccessDenied(effectivePerson, folder);
-			}
-			List<String> ids = business.attachment2().listWithFolder(folder.getId(),"正常");
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment2.class, ids));
-			SortTools.desc(wos, false, "createTime");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment2 {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment2, Wo> copier = WrapCopierFactory.wo(Attachment2.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-	}
-}

+ 0 - 54
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionListWithShare.java

@@ -1,54 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.tools.SortTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment;
-
-import java.util.List;
-
-class ActionListWithShare extends BaseAction {
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String owner) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			Business business = new Business(emc);
-			List<String> ids = business.attachment().listWithPersonWithShare(owner,
-					effectivePerson.getDistinguishedName());
-			List<Wo> wos = Wo.copier.copy(emc.list(Attachment.class, ids));
-			for (Wo o : wos) {
-				o.setContentType(this.contentType(false, o.getName()));
-			}
-			SortTools.asc(wos, false, "name");
-			result.setData(wos);
-			return result;
-		}
-	}
-
-	public static class Wo extends Attachment {
-
-		private static final long serialVersionUID = -531053101150157872L;
-
-		static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo(Attachment.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
-
-		@FieldDescribe("文件类型")
-		private String contentType;
-
-		public String getContentType() {
-			return contentType;
-		}
-
-		public void setContentType(String contentType) {
-			this.contentType = contentType;
-		}
-
-	}
-}

+ 0 - 89
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionOfficePreview.java

@@ -1,89 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.base.core.project.tools.DocumentTools;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import net.sf.ehcache.Ehcache;
-import net.sf.ehcache.Element;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.ByteArrayOutputStream;
-
-class ActionOfficePreview extends StandardJaxrsAction {
-
-	private Ehcache cache = ApplicationCache.instance().getCache(Attachment2.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String type) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Wo wo = null;
-			/** 确定是否要用application/octet-stream输出 */
-			Attachment2 attachment = emc.find(id, Attachment2.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if (!effectivePerson.isManager() && !StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
-			if (null == originFile) {
-				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
-			}
-			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id, type);
-			Element element = cache.get(cacheKey);
-			if ((null != element) && (null != element.getObjectValue())) {
-				wo = (Wo) element.getObjectValue();
-			} else {
-				StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
-						originFile.getStorage());
-				if (null == mapping) {
-					throw new ExceptionStorageNotExist(originFile.getStorage());
-				}
-				try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-					originFile.readContent(mapping, os);
-					byte[] bs = os.toByteArray();
-					byte[] cbs = null;
-					if("html".equalsIgnoreCase(type)) {
-						type = ".html";
-						cbs = DocumentTools.toHtml(attachment.getName(), bs);
-					}else{
-						type = ".pdf";
-						cbs = DocumentTools.toPdf2(attachment.getName(), bs);
-					}
-					if(cbs!=null){
-						wo = new Wo(cbs, this.contentType(false, attachment.getName()+type),
-								this.contentDisposition(false, attachment.getName()+type));
-						/**
-						 * 对10M以下的文件进行缓存
-						 */
-						if (bs.length < (1024 * 1024 * 10)) {
-							cache.put(new Element(cacheKey, wo));
-						}
-					}else{
-						wo = new Wo(bs, this.contentType(false, attachment.getName()),
-								this.contentDisposition(false, attachment.getName()));
-					}
-				}
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WoFile {
-
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-
-	}
-}

+ 0 - 57
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpdate.java

@@ -1,57 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.exception.ExceptionEntityNotExist;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.Business;
-import com.x.file.core.entity.personal.Attachment2;
-import org.apache.commons.lang3.StringUtils;
-
-class ActionUpdate extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment2 attachment = emc.find(id, Attachment2.class);
-			if (null == attachment) {
-				throw new ExceptionEntityNotExist(id, Attachment2.class);
-			}
-			/* 判断文件的所有者是否是当前用户 */
-			if (!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson())) {
-				throw new ExceptionAccessDenied(effectivePerson);
-			}
-			emc.beginTransaction(Attachment2.class);
-			Wi.copier.copy(wi, attachment);
-			emc.check(attachment, CheckPersistType.all);
-			emc.commit();
-			Wo wo = new Wo();
-			wo.setId(attachment.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wi extends Attachment2 {
-
-		private static final long serialVersionUID = -5317431633607552753L;
-
-		static WrapCopier<Wi, Attachment2> copier = WrapCopierFactory.wi(Wi.class, Attachment2.class,
-				ListTools.toList("folder", "name"), null);
-
-	}
-
-	public static class Wo extends WoId {
-
-	}
-}

+ 0 - 82
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpdateContent.java

@@ -1,82 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-class ActionUpdateContent extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, byte[] bytes,
-			FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExist(id);
-			}
-			if ((!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson()))
-					&& (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName()))) {
-				throw new ExceptionAttachmentAccessDenied(effectivePerson, attachment);
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			if (null == mapping) {
-				throw new ExceptionStorageNotExist(attachment.getStorage());
-			}
-			attachment.setLastUpdatePerson(effectivePerson.getDistinguishedName());
-			/** 禁止不带扩展名的文件上传 */
-			/** 文件名编码转换 */
-			String fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-					DefaultCharset.charset);
-			fileName = FilenameUtils.getName(fileName);
-
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtension(fileName);
-			}
-			/** 不允许不同的扩展名上传 */
-			if (!Objects.equals(StringUtils.lowerCase(FilenameUtils.getExtension(fileName)),
-					attachment.getExtension())) {
-				throw new ExceptionExtensionNotMatch(fileName, attachment.getExtension());
-			}
-			emc.beginTransaction(Attachment.class);
-			attachment.updateContent(mapping, bytes);
-			emc.check(attachment, CheckPersistType.all);
-			emc.commit();
-			/** 通知所有的共享和共享编辑人员 */
-			List<String> people = new ArrayList<>();
-			people = ListUtils.union(attachment.getShareList(), attachment.getEditorList());
-			people.add(attachment.getPerson());
-			for (String o : ListTools.trim(people, true, true)) {
-				if (!StringUtils.equals(o, effectivePerson.getDistinguishedName())) {
-					this.message_send_attachment_editorModify(attachment, effectivePerson.getDistinguishedName(), o);
-				}
-			}
-			ApplicationCache.notify(Attachment.class, attachment.getId());
-			Wo wo = new Wo();
-			wo.setId(attachment.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WoId {
-
-	}
-}

+ 0 - 93
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpdateContentCallback.java

@@ -1,93 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoCallback;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.base.core.project.tools.ListTools;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.personal.Attachment;
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-class ActionUpdateContentCallback extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionUpdateContentCallback.class);
-
-	ActionResult<Wo<WoObject>> execute(EffectivePerson effectivePerson, String id, String callback, byte[] bytes,
-			FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo<WoObject>> result = new ActionResult<>();
-			Attachment attachment = emc.find(id, Attachment.class);
-			if (null == attachment) {
-				throw new ExceptionAttachmentNotExistCallback(callback, id);
-			}
-			if ((!StringUtils.equals(effectivePerson.getDistinguishedName(), attachment.getPerson()))
-					&& (!attachment.getEditorList().contains(effectivePerson.getDistinguishedName()))) {
-				throw new ExceptionAttachmentAccessDeniedCallback(effectivePerson, callback, attachment);
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
-					attachment.getStorage());
-			if (null == mapping) {
-				throw new ExceptionStorageNotExistCallback(callback, attachment.getStorage());
-			}
-			attachment.setLastUpdatePerson(effectivePerson.getDistinguishedName());
-			/** 禁止不带扩展名的文件上传 */
-			/** 文件名编码转换 */
-			String fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-					DefaultCharset.charset);
-			fileName = FilenameUtils.getName(fileName);
-
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtensionCallback(callback, fileName);
-			}
-			/** 不允许不同的扩展名上传 */
-			if (!Objects.equals(StringUtils.lowerCase(FilenameUtils.getExtension(fileName)),
-					attachment.getExtension())) {
-				throw new ExceptionExtensionNotMatchCallback(callback, fileName, attachment.getExtension());
-			}
-			emc.beginTransaction(Attachment.class);
-			attachment.updateContent(mapping, bytes);
-			emc.check(attachment, CheckPersistType.all);
-			emc.commit();
-			/** 通知所有的共享和共享编辑人员 */
-			List<String> people = new ArrayList<>();
-			people = ListUtils.union(attachment.getShareList(), attachment.getEditorList());
-			people.add(attachment.getPerson());
-			for (String o : ListTools.trim(people, true, true)) {
-				if (!StringUtils.equals(o, effectivePerson.getDistinguishedName())) {
-					this.message_send_attachment_editorModify(attachment, effectivePerson.getDistinguishedName(), o);
-				}
-			}
-			ApplicationCache.notify(Attachment.class, attachment.getId());
-			WoObject woObject = new WoObject();
-			woObject.setId(attachment.getId());
-			Wo<WoObject> wo = new Wo<>(callback, woObject);
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo<T> extends WoCallback<T> {
-		public Wo(String callbackName, T t) {
-			super(callbackName, t);
-		}
-	}
-
-	public static class WoObject extends WoId {
-	}
-}

+ 0 - 125
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUpload.java

@@ -1,125 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.file.assemble.control.Business;
-import com.x.file.assemble.control.FileUtil;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import com.x.file.core.entity.personal.Attachment2_;
-import com.x.file.core.entity.personal.Folder2;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-class ActionUpload extends StandardJaxrsAction {
-
-	// @HttpMethodDescribe(value = "创建Attachment对象,如果没有上级目录用(0)替代.", response =
-	// WrapOutId.class)
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String folderId, String fileName, String fileMd5, byte[] bytes,
-			FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<Wo> result = new ActionResult<>();
-			if ((!StringUtils.isEmpty(folderId)) && (!StringUtils.equalsIgnoreCase(folderId, EMPTY_SYMBOL))) {
-				Folder2 folder = emc.find(folderId, Folder2.class);
-				if (null == folder) {
-					throw new ExceptionFolderNotExist(folderId);
-				}
-				if ((!StringUtils.equals(business.organization().person().get(folder.getPerson()),
-						effectivePerson.getDistinguishedName())) && (effectivePerson.isNotManager())) {
-					throw new ExceptionFolderAccessDenied(effectivePerson, folder);
-				}
-				folderId = folder.getId();
-			} else {
-				folderId = null;
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().random(OriginFile.class);
-			if (null == mapping) {
-				throw new ExceptionAllocateStorageMaaping();
-			}
-			/** 由于需要校验要把所有的必要字段进行填写 */
-
-			/** 文件名编码转换 */
-			if (StringUtils.isEmpty(fileName)) {
-				fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-						DefaultCharset.charset);
-			}
-			fileName = FilenameUtils.getName(fileName);
-			/** 禁止不带扩展名的文件上传 */
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtension(fileName);
-			}
-			/** 同一目录下文件名唯一 */
-			if (this.exist(business, fileName, folderId)) {
-				throw new ExceptionSameNameFileExist(fileName);
-			}
-			if(StringUtils.isEmpty(fileMd5)){
-				if(bytes==null) {
-					throw new ExceptionEmptyExtension("上传文件的md5值为空: {}.", fileName);
-				}
-				fileMd5 = FileUtil.getFileMD5(bytes);
-			}
-			OriginFile originFile = business.originFile().getByMd5(fileMd5);
-			Attachment2 attachment2 = null;
-			if(originFile==null){
-				if(bytes==null){
-					throw new ExceptionAttachmentNone(fileName);
-				}
-				originFile = new OriginFile(mapping.getName(), fileName, effectivePerson.getDistinguishedName(), fileMd5);
-				emc.check(originFile, CheckPersistType.all);
-				originFile.saveContent(mapping, bytes, fileName);
-				attachment2 = new Attachment2(fileName, effectivePerson.getDistinguishedName(),
-						folderId, originFile.getId(), originFile.getLength(), originFile.getType());
-				emc.check(attachment2, CheckPersistType.all);
-				emc.beginTransaction(OriginFile.class);
-				emc.beginTransaction(Attachment2.class);
-				emc.persist(originFile);
-				emc.persist(attachment2);
-				emc.commit();
-			}else{
-				attachment2 = new Attachment2(fileName, effectivePerson.getDistinguishedName(),
-						folderId, originFile.getId(), originFile.getLength(), originFile.getType());
-				emc.check(attachment2, CheckPersistType.all);
-				emc.beginTransaction(Attachment2.class);
-				emc.persist(attachment2);
-				emc.commit();
-			}
-			Wo wo = new Wo();
-			wo.setId(attachment2.getId());
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	private Boolean exist(Business business, String fileName, String folderId) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.name), fileName);
-		if (StringUtils.isNotEmpty(folderId)) {
-			p = cb.and(p, cb.equal(root.get(Attachment2_.folder), folderId));
-		} else {
-			p = cb.and(p, cb.or(cb.isNull(root.get(Attachment2_.folder)), cb.equal(root.get(Attachment2_.folder), "")));
-		}
-		return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult() > 0;
-	}
-
-	public static class Wo extends WoId {
-	}
-}

+ 0 - 134
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUploadCallback.java

@@ -1,134 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.jaxrs.WoCallback;
-import com.x.base.core.project.jaxrs.WoId;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.file.assemble.control.Business;
-import com.x.file.assemble.control.FileUtil;
-import com.x.file.assemble.control.ThisApplication;
-import com.x.file.core.entity.open.OriginFile;
-import com.x.file.core.entity.personal.Attachment2;
-import com.x.file.core.entity.personal.Attachment2_;
-import com.x.file.core.entity.personal.Folder2;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-class ActionUploadCallback extends StandardJaxrsAction {
-
-	// @HttpMethodDescribe(value = "创建Attachment对象,如果没有上级目录用(0)替代.", response =
-	// WrapOutId.class)
-	ActionResult<Wo<WoObject>> execute(EffectivePerson effectivePerson, String folderId, String callback,
-			String fileName, String fileMd5, byte[] bytes, FormDataContentDisposition disposition) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			Business business = new Business(emc);
-			ActionResult<Wo<WoObject>> result = new ActionResult<>();
-			if ((!StringUtils.isEmpty(folderId)) && (!StringUtils.equalsIgnoreCase(folderId, EMPTY_SYMBOL))) {
-				Folder2 folder = emc.find(folderId, Folder2.class);
-				if (null == folder) {
-					throw new ExceptionFolderNotExistCallback(callback, folderId);
-				}
-				if (!StringUtils.equals(business.organization().person().get(folder.getPerson()),
-						effectivePerson.getDistinguishedName())) {
-					throw new ExceptionFolderAccessDeniedCallback(effectivePerson, callback, folder);
-				}
-				folderId = folder.getId();
-			} else {
-				folderId = null;
-			}
-			StorageMapping mapping = ThisApplication.context().storageMappings().random(OriginFile.class);
-			if (null == mapping) {
-				throw new ExceptionAllocateStorageMaapingCallback(callback);
-			}
-			/** 由于需要校验要把所有的必要字段进行填写 */
-
-			/** 文件名编码转换 */
-			if (StringUtils.isEmpty(fileName)) {
-				fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-						DefaultCharset.charset);
-			}
-			fileName = FilenameUtils.getName(fileName);
-			/** 禁止不带扩展名的文件上传 */
-			if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
-				throw new ExceptionEmptyExtensionCallback(callback, fileName);
-			}
-			/** 同一目录下文件名唯一 */
-			if (this.exist(business, fileName, folderId)) {
-				throw new ExceptionSameNameFileExistCallback(callback, fileName);
-			}
-			if(StringUtils.isEmpty(fileMd5)){
-				if(bytes==null) {
-					throw new ExceptionEmptyExtensionCallback(callback, "上传文件的md5值为空: {}.", fileName);
-				}
-				fileMd5 = FileUtil.getFileMD5(bytes);
-			}
-			OriginFile originFile = business.originFile().getByMd5(fileMd5);
-			Attachment2 attachment2 = null;
-			if(originFile==null){
-				if(bytes==null){
-					throw new ExceptionAttachmentNone(fileName);
-				}
-				originFile = new OriginFile(mapping.getName(), fileName, effectivePerson.getDistinguishedName(), fileMd5);
-				emc.check(originFile, CheckPersistType.all);
-				originFile.saveContent(mapping, bytes, fileName);
-				attachment2 = new Attachment2(fileName, effectivePerson.getDistinguishedName(),
-						folderId, originFile.getId(), originFile.getLength(), originFile.getType());
-				emc.check(attachment2, CheckPersistType.all);
-				emc.beginTransaction(OriginFile.class);
-				emc.beginTransaction(Attachment2.class);
-				emc.persist(originFile);
-				emc.persist(attachment2);
-				emc.commit();
-			}else{
-				attachment2 = new Attachment2(fileName, effectivePerson.getDistinguishedName(),
-						folderId, originFile.getId(), originFile.getLength(), originFile.getType());
-				emc.check(attachment2, CheckPersistType.all);
-				emc.beginTransaction(Attachment2.class);
-				emc.persist(attachment2);
-				emc.commit();
-			}
-			WoObject woObject = new WoObject();
-			woObject.setId(attachment2.getId());
-			Wo<WoObject> wo = new Wo<>(callback, woObject);
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	private Boolean exist(Business business, String fileName, String folderId) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Attachment2.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Attachment2> root = cq.from(Attachment2.class);
-		Predicate p = cb.equal(root.get(Attachment2_.name), fileName);
-		if (StringUtils.isNotEmpty(folderId)) {
-			p = cb.and(p, cb.equal(root.get(Attachment2_.folder), folderId));
-		} else {
-			p = cb.and(p, cb.or(cb.isNull(root.get(Attachment2_.folder)), cb.equal(root.get(Attachment2_.folder), "")));
-		}
-		return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult() > 0;
-	}
-
-	public static class Wo<T> extends WoCallback<T> {
-		public Wo(String callbackName, T t) {
-			super(callbackName, t);
-		}
-	}
-
-	public static class WoObject extends WoId {
-	}
-
-}

+ 0 - 31
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ActionUseCapacity.java

@@ -1,31 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WrapLong;
-import com.x.file.assemble.control.Business;
-import org.apache.commons.lang3.StringUtils;
-
-class ActionUseCapacity extends BaseAction {
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String person) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Business business = new Business(emc);
-			String queryPerson = effectivePerson.getDistinguishedName();
-			if(effectivePerson.isManager() && StringUtils.isNotBlank(person)){
-				queryPerson = person;
-			}
-			Wo wo = new Wo();
-			wo.setValue(business.attachment2().getUseCapacity(queryPerson));
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	public static class Wo extends WrapLong {
-
-	}
-}

+ 0 - 443
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/Attachment2Action.java

@@ -1,443 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.annotation.JaxrsDescribe;
-import com.x.base.core.project.annotation.JaxrsMethodDescribe;
-import com.x.base.core.project.annotation.JaxrsParameterDescribe;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.http.HttpMediaType;
-import com.x.base.core.project.jaxrs.ResponseFactory;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.file.assemble.control.jaxrs.attachment2.ActionUpdateContentCallback.Wo;
-import com.x.file.assemble.control.jaxrs.attachment2.ActionUploadCallback.WoObject;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.*;
-import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.container.Suspended;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import java.util.List;
-
-@Path("attachment2")
-@JaxrsDescribe("附件操作")
-public class Attachment2Action extends StandardJaxrsAction {
-
-	private static Logger logger = LoggerFactory.getLogger(Attachment2Action.class);
-
-	@JaxrsMethodDescribe(value = "获取文件Base64编码后的内容.", action = ActionGetBase64.class)
-	@GET
-	@Path("{id}/binary/base64")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getBase64(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionGetBase64.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGetBase64().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取图片缩放后的base64内容(png格式).scale(0-200)百分比缩放比例.", action = ActionGetImageScaleBase64.class)
-	@GET
-	@Path("{id}/image/scale/{scale}/binary/base64")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getImageScaleBase64(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("缩放比例") @PathParam("scale") Integer scale) {
-		ActionResult<ActionGetImageScaleBase64.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGetImageScaleBase64().execute(effectivePerson, id, scale);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取图片设定宽高后的base64内容(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.", action = ActionGetImageWidthHeightBase64.class)
-	@GET
-	@Path("{id}/image/width/{width}/height/{height}/binary/base64")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getImageWidthHeightBase64(@Suspended final AsyncResponse asyncResponse,
-			@Context HttpServletRequest request, @JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("宽度") @PathParam("width") Integer width,
-			@JaxrsParameterDescribe("高度") @PathParam("height") Integer height) {
-		ActionResult<ActionGetImageWidthHeightBase64.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGetImageWidthHeightBase64().execute(effectivePerson, id, width, height);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "下载图片设定宽高后的(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.", action = ActionDownloadImageWidthHeight.class)
-	@GET
-	@Path("{id}/download/image/width/{width}/height/{height}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void downloadImageWidthHeight(@Suspended final AsyncResponse asyncResponse,
-										  @Context HttpServletRequest request, @JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-										  @JaxrsParameterDescribe("宽度") @PathParam("width") Integer width,
-										  @JaxrsParameterDescribe("高度") @PathParam("height") Integer height) {
-		ActionResult<ActionDownloadImageWidthHeight.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownloadImageWidthHeight().execute(effectivePerson, id, width, height);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取指定人员共享给我的文件.", action = ActionGet.class)
-	@GET
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void get(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-					@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionGet.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionGet().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取当前用户或指定用户(管理员权限)使用容量.", action = ActionUseCapacity.class)
-	@GET
-	@Path("user/capacity")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getUseCapacity(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-					@JaxrsParameterDescribe("查询用户") @QueryParam("person") String person) {
-		ActionResult<ActionUseCapacity.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUseCapacity().execute(effectivePerson, person);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "更新Attachment", action = ActionUpdate.class)
-	@PUT
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void update(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, JsonElement jsonElement) {
-		ActionResult<ActionUpdate.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUpdate().execute(effectivePerson, id, jsonElement);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "删除附件.", action = ActionDelete.class)
-	@DELETE
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void delete(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDelete().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取当前人员的顶层文件.", action = ActionListTop.class)
-	@GET
-	@Path("list/top")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listTop(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
-		ActionResult<List<ActionListTop.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListTop().execute(effectivePerson);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取当前人员在指定文件夹下的文件.", action = ActionListWithFolder.class)
-	@GET
-	@Path("list/folder/{folderId}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithFolder(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("目录标识") @PathParam("folderId") String folderId) {
-		ActionResult<List<ActionListWithFolder.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListWithFolder().execute(effectivePerson, folderId);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "根据文件名称查找当前用户的附件.", action = ActionListWithFilter.class)
-	@GET
-	@Path("list/filter/{name}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithFilter(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-							   @JaxrsParameterDescribe("目录标识") @PathParam("name") String name) {
-		ActionResult<List<ActionListWithFilter.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListWithFilter().execute(effectivePerson, name);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "根据文件的md5值查找附件.", action = ActionCheckFileExist.class)
-	@GET
-	@Path("exist/file/{fileMd5}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void checkFileExist(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-							   @JaxrsParameterDescribe("附件md5值") @PathParam("fileMd5") String fileMd5) {
-		ActionResult<ActionCheckFileExist.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionCheckFileExist().execute(effectivePerson, fileMd5);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取指定人员共享给我的文件.", action = ActionListWithShare.class)
-	@GET
-	@Path("list/share/{owner}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithShare(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("文件所有人") @PathParam("owner") String owner) {
-		ActionResult<List<ActionListWithShare.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListWithShare().execute(effectivePerson, owner);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取指定人员共享给我编辑的文件.", action = ActionListWithEditor.class)
-	@GET
-	@Path("list/editor/{owner}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listWithEditor(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("文件所有人") @PathParam("owner") String owner) {
-		ActionResult<List<ActionListWithEditor.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			result = new ActionListWithEditor().execute(effectivePerson, owner);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取附件内容,输出头信息", action = ActionDownload.class)
-	@GET
-	@Path("{id}/download")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void download(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionDownload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownload().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "获取附件内容.不输出头信息", action = ActionDownloadStream.class)
-	@GET
-	@Path("{id}/download/stream")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void downloadStream(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
-		ActionResult<ActionDownloadStream.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownloadStream().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	/** 为IOS访问单独增加的方法 */
-	@JaxrsMethodDescribe(value = "获取附件内容,输出头信息,,使用POST方法访问.", action = ActionDownload.class)
-	@POST
-	@Path("{id}/download")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void postDownload(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, JsonElement jsonElement) {
-		ActionResult<ActionDownload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownload().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	/** 为IOS访问单独增加的方法 */
-	@JaxrsMethodDescribe(value = "获取附件内容.不输出头信息,使用POST方法访问.", action = ActionDownloadStream.class)
-	@POST
-	@Path("{id}/download/stream")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void postDownloadStream(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id, JsonElement jsonElement) {
-		ActionResult<ActionDownloadStream.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownloadStream().execute(effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "创建Attachment的内容", action = ActionUpload.class)
-	@POST
-	@Path("upload/folder/{folderId}")
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	public void upload(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("目录") @PathParam("folderId") String folderId,
-			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
-			@JaxrsParameterDescribe("附件md5值") @FormDataParam("fileMd5") String fileMd5,
-			@JaxrsParameterDescribe("附件标识") @FormDataParam(FILE_FIELD) final byte[] bytes,
-			@JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionUpload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUpload().execute(effectivePerson, folderId, fileName, fileMd5, bytes, disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "创建Attachment的内容并返回回调.", action = ActionUploadCallback.class)
-	@POST
-	@Path("upload/folder/{folderId}/callback/{callback}")
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	@Produces(HttpMediaType.TEXT_HTML_UTF_8)
-	public void uploadCallback(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("目录") @PathParam("folderId") String folderId,
-			@JaxrsParameterDescribe("回调函数名") @PathParam("callback") String callback,
-			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
-			@JaxrsParameterDescribe("附件md5值") @FormDataParam("fileMd5") String fileMd5,
-			@JaxrsParameterDescribe("附件标识") @FormDataParam(FILE_FIELD) final byte[] bytes,
-			@JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionUploadCallback.Wo<WoObject>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionUploadCallback().execute(effectivePerson, folderId, callback, fileName, fileMd5, bytes,
-					disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "按附件类型分页显示.", action = ActionListFileTypePaging.class)
-	@POST
-	@Path("list/type/{page}/size/{size}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listFileTypePaging(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-								   @JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
-								   @JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
-		ActionResult<List<ActionListFileTypePaging.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListFileTypePaging().execute(effectivePerson, page, size, jsonElement);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, jsonElement);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "预览文件,输出html或pdf文件头信息,支持word、ppt、excel、pdf类型文件", action = ActionOfficePreview.class)
-	@GET
-	@Path("{id}/office/preview/type/{type}")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void officePreview(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-							  @JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
-							  @JaxrsParameterDescribe("输出文件类型:html|pdf") @PathParam("type") String type) {
-		ActionResult<ActionOfficePreview.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionOfficePreview().execute(effectivePerson, id, type);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-}

+ 0 - 45
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/BaseAction.java

@@ -1,45 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.gson.XGsonBuilder;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.message.MessageConnector;
-import com.x.base.core.project.organization.OrganizationDefinition;
-import com.x.file.core.entity.personal.Attachment;
-
-abstract class BaseAction extends StandardJaxrsAction {
-
-	protected void message_send_attachment_share(Attachment attachment, String person) throws Exception {
-		String title = "收到来自(" + OrganizationDefinition.name(attachment.getPerson()) + ")的共享文件:" + attachment.getName()
-				+ ".";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_SHARE, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_shareCancel(Attachment attachment, String person) throws Exception {
-		String title = "(" + OrganizationDefinition.name(attachment.getPerson()) + ")取消了对:" + attachment.getName()
-				+ ",文件的共享.";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_SHARECANCEL, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_editor(Attachment attachment, String person) throws Exception {
-		String title = "收到来自(" + OrganizationDefinition.name(attachment.getPerson()) + ")的可编辑共享文件:"
-				+ attachment.getName() + ".";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_EDITOR, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_editorCancel(Attachment attachment, String person) throws Exception {
-		String title = "(" + OrganizationDefinition.name(attachment.getPerson()) + ")取消了对:" + attachment.getName()
-				+ ",文件的共享编辑.";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_EDITORCANCEL, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-
-	protected void message_send_attachment_editorModify(Attachment attachment, String editor, String person)
-			throws Exception {
-		String title = "(" + OrganizationDefinition.name(editor) + ")对文件:" + attachment.getName() + ",进行了修改.";
-		MessageConnector.send(MessageConnector.TYPE_ATTACHMENT_EDITORMODIFY, title, person,
-				XGsonBuilder.convert(attachment, Attachment.class));
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAllocateStorageMaaping.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionAllocateStorageMaaping extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionAllocateStorageMaaping() {
-		super("无法分派存储器.");
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAllocateStorageMaapingCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionAllocateStorageMaapingCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionAllocateStorageMaapingCallback(String callbackName) {
-		super(callbackName, "无法分派存储器.");
-	}
-}

+ 0 - 19
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentAccessDenied.java

@@ -1,19 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.PromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Attachment2;
-
-class ExceptionAttachmentAccessDenied extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentAccessDenied(EffectivePerson effectivePerson, Attachment attachment) {
-		super("person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(), attachment.getName());
-	}
-
-	ExceptionAttachmentAccessDenied(EffectivePerson effectivePerson, Attachment2 attachment) {
-		super("person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(), attachment.getName());
-	}
-}

+ 0 - 23
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentAccessDeniedCallback.java

@@ -1,23 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Attachment;
-import com.x.file.core.entity.personal.Attachment2;
-
-class ExceptionAttachmentAccessDeniedCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentAccessDeniedCallback(EffectivePerson effectivePerson, String callbackName,
-			Attachment attachment) {
-		super(callbackName, "person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(),
-				attachment.getName());
-	}
-
-	ExceptionAttachmentAccessDeniedCallback(EffectivePerson effectivePerson, String callbackName,
-											Attachment2 attachment) {
-		super(callbackName, "person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(),
-				attachment.getName());
-	}
-}

+ 0 - 13
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNone.java

@@ -1,13 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionAttachmentNone extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionAttachmentNone(String name) {
-		super("未上传附件: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNoneCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionAttachmentNoneCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionAttachmentNoneCallback(String callbackName, String name) {
-		super(callbackName,"未上传附件: {}.", name);
-	}
-}

+ 0 - 15
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNotExist.java

@@ -1,15 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionAttachmentNotExist extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentNotExist(String id) {
-		super("指定的文件: {} 不存在.", id);
-	}
-	ExceptionAttachmentNotExist(String id,String fileId) {
-		super("指定的文件: {} 的附件{}不存在.", id, fileId);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionAttachmentNotExistCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionAttachmentNotExistCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionAttachmentNotExistCallback(String callbackName, String id) {
-		super(callbackName, "指定的文件: {} 不存在.", id);
-	}
-}

+ 0 - 17
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionEmptyExtension.java

@@ -1,17 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionEmptyExtension extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionEmptyExtension(String name) {
-		super("不能上传文件扩展名为空的文件: {}.", name);
-	}
-
-	ExceptionEmptyExtension(String message, String name) {
-		super(message, name);
-	}
-
-}

+ 0 - 17
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionEmptyExtensionCallback.java

@@ -1,17 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionEmptyExtensionCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionEmptyExtensionCallback(String callbackName,String name) {
-		super(callbackName,"不能上传文件扩展名为空的文件: {}.", name);
-	}
-
-	ExceptionEmptyExtensionCallback(String callbackName, String message, String name) {
-		super(callbackName, message, name);
-	}
-
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionExtensionNotMatch.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionExtensionNotMatch extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionExtensionNotMatch(String name, String extension) {
-		super("文件: {} 的扩展名不匹配,期望的扩展名: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionExtensionNotMatchCallback.java

@@ -1,12 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-
-class ExceptionExtensionNotMatchCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	ExceptionExtensionNotMatchCallback(String callbackName, String name, String extension) {
-		super(callbackName, "文件: {} 的扩展名不匹配,期望的扩展名: {}.", name);
-	}
-}

+ 0 - 13
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionFolderAccessDenied.java

@@ -1,13 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.PromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Folder2;
-
-class ExceptionFolderAccessDenied extends PromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-	ExceptionFolderAccessDenied(EffectivePerson effectivePerson, Folder2 folder) {
-		super("person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(), folder.getName());
-	}
-}

+ 0 - 15
o2server/x_file_assemble_control/src/main/webapp/describe/sources/com/x/file/assemble/control/jaxrs/attachment2/ExceptionFolderAccessDeniedCallback.java

@@ -1,15 +0,0 @@
-package com.x.file.assemble.control.jaxrs.attachment2;
-
-import com.x.base.core.project.exception.CallbackPromptException;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.file.core.entity.personal.Folder2;
-
-class ExceptionFolderAccessDeniedCallback extends CallbackPromptException {
-
-	private static final long serialVersionUID = 7750207007061165350L;
-
-	ExceptionFolderAccessDeniedCallback(EffectivePerson effectivePerson, String callbackName, Folder2 folder) {
-		super(callbackName, "person: {} access attachment :{} denied.", effectivePerson.getDistinguishedName(),
-				folder.getName());
-	}
-}

Неке датотеке нису приказане због велике количине промена