The SecureStore and SecureStoreManager javadocs could use some work. The methods have param and return annotations, but don't have any descriptions. The SecureStore methods throw IOException, but do not mention when those are thrown.
More specifically, I had the following questions after reading SecureStore:
If I call list() on a non-existant namespace, what happens? Do I get an empty list back? An exception? If an exception, how can I distinguish between that and a transient IO error?
If I call get() on a non-existant namespace, or non-existant name in an existing namespace, what happens? It's not annotated as nullable so do I get an exception? If an exception, how can I distinguish between that and a transient IO error? Can I distinguish between the namespace not existing versus the name not existing?
I also had similar questions with the SecureStoreManager javadocs:
What happens if I call putSecureData with a non-existant namespace?
The 'data' parameter is documented as a "utf-8 formatted byte array". If it's a byte array, what does it mean to be utf-8 formatted? If its the utf-8 byte representation of a string, why take a byte array instead of a string?
What happens if I try to delete something in a namespace that does not exist?
What happens if I try to delete a name that does not exist?
deleteSecureData is documented as throwing an IOException if the store is not initialized. What does that mean? When is it initialized in my program? Is the same true for putSecureData?