examples-spring-redis-amq

Форк
0
47 строк · 1.5 Кб
1
package com.tasks.cache.web
2

3
import com.tasks.cache.Cache
4
import org.springframework.core.serializer.DefaultSerializer
5
import org.springframework.web.bind.annotation.*
6
import org.springframework.web.bind.annotation.RequestMethod.*
7
import java.io.ByteArrayOutputStream
8
import java.io.Serializable
9

10
@RestController
11
class CacheController(private val cache: Cache<Serializable>) {
12
    @RequestMapping(value = "/cache/{key}", method = [GET])
13
    fun get(@PathVariable("key") key: String): ByteArray? {
14
        val result = cache.get(key)
15
        return serialize(result)
16
    }
17

18
    private fun serialize(result: Serializable?): ByteArray? {
19
        return if (result != null) {
20
            if (result is ByteArray)
21
                result
22
            else {
23
                val outputStream = ByteArrayOutputStream()
24
                DefaultSerializer().serialize(result, outputStream)
25
                outputStream.toByteArray()
26
            }
27
        } else {
28
            null
29
        }
30
    }
31

32
    @RequestMapping(value = "/cache/{key}", method = [PUT, POST])
33
    fun put(@PathVariable("key") key: String, @RequestParam expiry: Long?, @RequestBody value: ByteArray) {
34
        if (expiry == null)
35
            cache.put(key, value)
36
        else
37
            cache.put(key, value, expiry)
38

39
    }
40

41
    @RequestMapping(value = "/cache/{key}", method = [DELETE] )
42
    fun delete(@PathVariable("key") key: String):  ByteArray? {
43
        var result = cache.delete(key)
44
        return serialize(result)
45
    }
46

47
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.