Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. import br.com.rmsystems.musicclub.dto.MCSession;
  2. import br.com.rmsystems.musicclub.exception.ValidateException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import org.apache.commons.lang3.SerializationUtils;
  5. import org.springframework.jdbc.core.JdbcOperations;
  6. import org.springframework.jdbc.support.lob.DefaultLobHandler;
  7. import org.springframework.jdbc.support.lob.LobCreator;
  8. import org.springframework.session.jdbc.JdbcOperationsSessionRepository;
  9. import org.springframework.transaction.PlatformTransactionManager;
  10.  
  11. import java.io.*;
  12. import java.sql.PreparedStatement;
  13. import java.sql.ResultSet;
  14. import java.sql.SQLException;
  15.  
  16. public class JDBCOperationSessionConfig extends JdbcOperationsSessionRepository {
  17.  
  18. public JDBCOperationSessionConfig(JdbcOperations jdbcOperations, PlatformTransactionManager transactionManager) {
  19. super(jdbcOperations, transactionManager);
  20. setDefaultMaxInactiveInterval(10800);
  21. setLobHandler(new JDBCLobHandlerConfig());
  22. }
  23.  
  24. private class JDBCLobHandlerConfig extends DefaultLobHandler {
  25.  
  26. @Override
  27. public LobCreator getLobCreator() {
  28. return new JDBCLobCreatorConfig();
  29. }
  30.  
  31. @Override
  32. public byte[] getBlobAsBytes(ResultSet rs, int columnIndex) throws SQLException {
  33.  
  34. byte[] sessionAttributes = null;
  35.  
  36. try {
  37. ObjectMapper mapper = new ObjectMapper();
  38. String jsonAttribute = rs.getString(columnIndex);
  39. MCSession session = mapper.readValue(jsonAttribute, MCSession.class);
  40. sessionAttributes = SerializationUtils.serialize(session);
  41.  
  42. } catch(IOException e) {
  43. throw new ValidateException("Failed to convert json atributte to MCSession. Error: " + e.getMessage());
  44. }
  45.  
  46. return sessionAttributes;
  47. }
  48. }
  49.  
  50. private class JDBCLobCreatorConfig implements LobCreator {
  51.  
  52. @Override
  53. public void setBlobAsBytes(PreparedStatement ps, int i, byte[] bytes) throws SQLException {
  54.  
  55. try {
  56. ObjectMapper mapper = new ObjectMapper();
  57. ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(bytes));
  58. MCSession session = (MCSession) in.readObject();
  59. ps.setString(i, mapper.writeValueAsString(session));
  60.  
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. } catch (ClassNotFoundException e) {
  64. e.printStackTrace();
  65. }
  66. }
  67.  
  68. @Override
  69. public void setBlobAsBinaryStream(PreparedStatement preparedStatement, int i, InputStream inputStream, int i1) throws SQLException {
  70.  
  71. }
  72.  
  73. @Override
  74. public void setClobAsString(PreparedStatement preparedStatement, int i, String s) throws SQLException {
  75.  
  76. }
  77.  
  78. @Override
  79. public void setClobAsAsciiStream(PreparedStatement preparedStatement, int i, InputStream inputStream, int i1) throws SQLException {
  80.  
  81. }
  82.  
  83. @Override
  84. public void setClobAsCharacterStream(PreparedStatement preparedStatement, int i, Reader reader, int i1) throws SQLException {
  85.  
  86. }
  87.  
  88. @Override
  89. public void close() {
  90.  
  91. }
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement