1
1
package com.neva.javarel.storage.repository.impl
2
2
3
+ import com.mongodb.gridfs.GridFS
3
4
import com.neva.javarel.resource.api.Resource
4
5
import com.neva.javarel.resource.api.ResourceDescriptor
5
6
import com.neva.javarel.resource.api.ResourceProvider
6
7
import com.neva.javarel.resource.api.ResourceResolver
7
8
import com.neva.javarel.storage.repository.api.RepositoryAdmin
9
+ import com.neva.javarel.storage.repository.api.RepositoryFileResource
8
10
import org.apache.felix.scr.annotations.Component
9
11
import org.apache.felix.scr.annotations.Reference
10
12
import org.apache.felix.scr.annotations.Service
@@ -26,17 +28,33 @@ class RepositoryFileResourceProvider : ResourceProvider {
26
28
}
27
29
28
30
override fun provide (resolver : ResourceResolver , descriptor : ResourceDescriptor ): Resource ? {
31
+ var result: Resource ? = null
32
+
29
33
val file = repoAdmin.repository(getConnectionName(descriptor))
30
34
.fileStore(getFileStore(descriptor))
31
35
.findOne(ObjectId (getFileId(descriptor)))
36
+ if (file != null ) {
37
+ result = RepositoryFileResource (file, descriptor, resolver)
38
+ }
32
39
33
- return RepositoryFileResource (file, descriptor, resolver)
40
+ return result
34
41
}
35
42
36
- private fun getConnectionName (descriptor : ResourceDescriptor ) = descriptor.parts[0 ]
43
+ private fun getConnectionName (descriptor : ResourceDescriptor ) = when (descriptor.parts.size) {
44
+ 3 -> descriptor.parts[0 ]
45
+ else -> repoAdmin.connectionDefault
46
+ }
37
47
38
- private fun getFileStore (descriptor : ResourceDescriptor ) = descriptor.parts[1 ]
48
+ private fun getFileStore (descriptor : ResourceDescriptor ) = when (descriptor.parts.size) {
49
+ 3 -> descriptor.parts[1 ]
50
+ 2 -> descriptor.parts[0 ]
51
+ else -> GridFS .DEFAULT_BUCKET
52
+ }
39
53
40
- private fun getFileId (descriptor : ResourceDescriptor ) = descriptor.parts[2 ]
54
+ private fun getFileId (descriptor : ResourceDescriptor ) = when (descriptor.parts.size) {
55
+ 3 -> descriptor.parts[2 ]
56
+ 2 -> descriptor.parts[1 ]
57
+ else -> descriptor.parts[0 ]
58
+ }
41
59
42
60
}
0 commit comments