1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
package org.onap.portalapp.music.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.ByteBuffer;
import java.time.Duration;
import java.time.Instant;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
import org.onap.portalapp.music.conf.MusicSession;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
public class MusicUtil {
private static final Set<String> sessionAttrNameSet = new HashSet<>(Arrays.asList("CREATION_TIME", "LAST_ACCESS_TIME","MAX_INACTIVE_INTERVAL","EXPIRY_TIME","PRINCIPAL_NAME"));
private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
private static String atomicPut = MusicProperties.getProperty(MusicProperties.MUSIC_ATOMIC_PUT);
private static String atomicGet = MusicProperties.getProperty(MusicProperties.MUSIC_ATOMIC_GET);
private static String cached = MusicProperties.getProperty(MusicProperties.MUSIC_CACHE);
private static String musicSerializeCompress = MusicProperties.getProperty(MusicProperties.MUSIC_SERIALIZE_COMPRESS);
public static boolean isSessionMetaAttr(String key){
return sessionAttrNameSet.contains(key);
}
public static <T> T musicRestResponseDataParsing(ResultSet rs, String attributeName) throws Exception{
logger.debug(EELFLoggerDelegate.debugLogger, "musicRestResponseDataParsing: start");
Row row = rs.one();
if(!sessionAttrNameSet.contains(attributeName)){
if(row!=null)
return MusicUtil.musicDeserialize(row.getBytes("attribute_bytes"));
}else{
return (T) row.getString(attributeName);
}
return null;
}
public static <T> T musicDeserialize (ByteBuffer byteBuf) throws Exception{
logger.debug(EELFLoggerDelegate.debugLogger, "musicDeserialize: start");
ByteArrayInputStream byteArr = new ByteArrayInputStream(byteBuf.array());
ObjectInputStream ois = null;
if(isMusicSerializeCompress()){
GZIPInputStream zos = new GZIPInputStream(byteArr);
ois = new ObjectInputStream(zos);
}else{
ois = new ObjectInputStream(byteArr);
}
return (T) ois.readObject();
}
public static ByteBuffer musicSerialize (Object value) throws Exception{
logger.debug(EELFLoggerDelegate.debugLogger, "musicSerialize: start");
ByteArrayOutputStream bo = new ByteArrayOutputStream();
try {
if(isMusicSerializeCompress()){
GZIPOutputStream zos = new GZIPOutputStream(bo);
ObjectOutputStream oos = new ObjectOutputStream(zos);
oos.writeObject(value);
oos.flush();
zos.finish();
}else{
ObjectOutputStream oos = new ObjectOutputStream(bo);
oos.writeObject(value);
oos.flush();
}
} catch (IOException e) {
logger.error(EELFLoggerDelegate.errorLogger, "Failed to serialize ");
}
return ByteBuffer.wrap(bo.toByteArray());
}
public static MusicSession parseMetaData (Row row) throws Exception{
logger.debug(EELFLoggerDelegate.debugLogger, "parseMetaData: start");
if(row==null)
return null;
String sessionId = row.getString("primary_id");
MusicSession musicSession = new MusicSession(sessionId);
musicSession.setCreationTime(Instant.parse(row.getString("creation_time")));
musicSession.setLastAccessedTime(Instant.parse(row.getString("last_access_time")));
musicSession.setMaxInactiveInterval(Duration.parse(row.getString("max_inactive_interval")));
return musicSession;
}
public static boolean isMusicSerializeCompress(){
if(musicSerializeCompress==null){
logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_SERIALIZE_COMPRESS +" fall back to eventual put");
return false;
}
return musicSerializeCompress.trim().equalsIgnoreCase("true");
}
public static boolean isAtomicPut(){
if(atomicPut==null){
logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_ATOMIC_PUT +" fall back to eventual put");
return false;
}
return atomicPut.trim().equalsIgnoreCase("true");
}
public static boolean isAtomicGet(){
if(atomicGet==null){
logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_ATOMIC_GET +" fall back to eventual get");
return false;
}
return atomicGet.trim().equalsIgnoreCase("true");
}
public static boolean isCached(){
if(cached==null){
logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_CACHE +" fall back to non cache");
return false;
}
return cached.trim().equalsIgnoreCase("true");
}
}
|