Skip to main content

Posts

Showing posts with the label java

Java: Generics dont keep it simple stupid

So I was playing around with generics (dont love them because of type erasure - class level is ok method level gets scary) the other day and here are some examples and lessons learned: 1) Method level generics with return types are harder than they look. 2) Wildcards and when to use them confuse me. 3) My code is ugly and I must be missing something but what - who knows. What I wanted was a Singleton class with generic get and put methods (what you put in is what you get out) without the cast. Something that works a little like Collections.emptyList(); The map I was storing my generic stuff in  ignore the naming for now: What I wanted to do is something like this: CacheItem<AnItem>  someCacheItem  = new DateCacheItemImpl<AnItem>(); Cache.getInstance().register(NameCacheItem.class); Cache.getInstance().put(someCacheItem); CacheItem<AnotherItem>  anotherCacheItem  = Cache.getInstance().get(); p...

Java: On login trigger code run after login

Ok so from the title you can see I am hanging around the database for way to long. I needed to have some code executed when I logged on so this is what I did: I threw together a quick HttpSessionListener like such: package za.co.test.web.faces.listener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class LoginSessionListener implements HttpSessionListener {  @Override  public void sessionCreated(HttpSessionEvent event) {  doSomeStuff();  } @Override public void sessionDestroyed(HttpSessionEvent event) { // do nothing } } Then added the listener to my web.xml. <listener> <listener-class>za.co.test.web.faces.listener.LoginSessionListener</listener-class> </listener> All working and sorted.

Java basic encryption decrypt util

Because I always need to do this for passwords in files and various utilities I thought I would post the code. Note: it is more secure to encrypt one way (cryptographic hashing) this is for simple no hassle cases. package za.co.test.common.util; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class EncryptionUtil { private static final byte[] SECRET_KEY = "TESTKEY2013StormersRugby".getBytes();     public static byte[] encryptToByteArray(String input)         throws InvalidKeyException, BadPaddingException, IllegalBlockSizeException, NoS...