RedisSessionRepository implements SessionRepository { static boolean hasInternalPrefix(byte[] buf) { if (buf != null && buf.length > INTERNAL_PREFIX.length) { for (int i = 0; i < INTERNAL_PREFIX.length; i++) { if (INTERNAL_PREFIX[i] != buf[i]) { return false; } } return true; } return false; } RedisSessionRepository(RedisFacade redis, String namespace, String owner, ExpirationStrategy strategy,
      boolean sticky); @Override void setSessionManager(final SessionManager sessionManager); @Override SessionData getSessionData(String id); @Override CommitTransaction startCommit(SessionData session); @Override void remove(SessionData session); byte[] sessionKey(String sessionId); @Override Object getSessionAttribute(SessionData session, String attribute); @Override boolean prepareRemove(SessionData session); @Override Set<String> getAllKeys(SessionData session); @Override void storeSessionData(SessionData sessionData); @Override void requestFinished(); @Override void setSessionAttribute(SessionData session, String name, Object value); @Override void removeSessionAttribute(SessionData session, String name); @Override boolean cleanSessionsOnShutdown(); @Override Collection<String> getOwnedSessionIds(); @Override void close(); @Override void reset(); @Override void sessionIdChange(SessionData sessionData); @Override boolean isConnected();  }
@Test public void testInternalPrefix() { assertFalse(RedisSessionRepository.hasInternalPrefix(encode("test"))); assertTrue(RedisSessionRepository.hasInternalPrefix(encode("#:test"))); assertFalse(RedisSessionRepository.hasInternalPrefix(encode("#:"))); assertFalse(RedisSessionRepository.hasInternalPrefix(encode("#test"))); assertTrue(RedisSessionRepository.hasInternalPrefix(encode("#:t"))); }