173 lines
6.8 KiB
Java
173 lines
6.8 KiB
Java
/*
|
|
* Copyright 2014 David Horscroft
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
* in compliance with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
* or implied. See the License for the specific language governing permissions and limitations under
|
|
* the License.
|
|
*
|
|
* The NoCore class is the interface between which the wrapper application (wrapplication?) accesses
|
|
* no- functionality.
|
|
*/
|
|
|
|
package nodash.core;
|
|
|
|
import java.security.PublicKey;
|
|
import java.util.List;
|
|
|
|
import nodash.exceptions.NoAdapterException;
|
|
import nodash.exceptions.NoSessionExpiredException;
|
|
import nodash.exceptions.NoUserAlreadyOnlineException;
|
|
import nodash.exceptions.NoUserNotValidException;
|
|
import nodash.models.NoByteSet;
|
|
import nodash.models.NoSession;
|
|
|
|
/**
|
|
* The NoAdapter interface defines the contract for establishing a connection between the no-system
|
|
* and the chosen storage system of the application (file system, database, Memcache).
|
|
*
|
|
* @author horsey
|
|
*
|
|
*/
|
|
public interface NoAdapter {
|
|
/**
|
|
* Saves a hash into the list of user hashes.
|
|
*
|
|
* @param hash the byte array representing a NoUser object.
|
|
* @throws NoAdapterException - if the adapter is unable to insert the hash.
|
|
*/
|
|
public void insertHash(byte[] hash) throws NoAdapterException;
|
|
|
|
/**
|
|
* Removes the hash from the list of user hashes.
|
|
*
|
|
* @param hash the byte array representing a NoUser object.
|
|
* @throws NoAdapterException - if the adapter is unable to remove the hash.
|
|
*/
|
|
public void removeHash(byte[] hash) throws NoAdapterException;
|
|
|
|
/**
|
|
* Checks if the given hash is in the list of user hashes. Throws an exception if not.
|
|
*
|
|
* @param hash the byte array representing a NoUser object.
|
|
* @throws NoAdapterException - if the adapter is unable to verify the hash.
|
|
* @throws NoUserNotValidException - if the hash is not valid.
|
|
*/
|
|
public void checkHash(byte[] hash) throws NoAdapterException, NoUserNotValidException;
|
|
|
|
/**
|
|
* Returns a byte array of byte arrays representing all user hashes in the system.
|
|
*
|
|
* @return a two dimensional array of the user hashes, delimited by the first index.
|
|
* @throws NoAdapterException - if the adapter cannot return the user hashes.
|
|
*/
|
|
public byte[][] exportHashes() throws NoAdapterException;
|
|
|
|
/**
|
|
* Returns the number of user hashes saved in the system.
|
|
*
|
|
* @return the number of user hashes.
|
|
* @throws NoAdapterException - if the adapter is unable to get the list of user hashes to count.
|
|
*/
|
|
public long hashCount() throws NoAdapterException;
|
|
|
|
/**
|
|
* Marks the given has as online. Note that the hash does not have to represent an actual user.
|
|
*
|
|
* @param hash the byte array hash to go online.
|
|
* @throws NoAdapterException - if the adapter is unable to mark the hash as online.
|
|
* @throws NoUserAlreadyOnlineException - if the provided hash is already marked as online.
|
|
*/
|
|
public void goOnline(byte[] hash) throws NoAdapterException, NoUserAlreadyOnlineException;
|
|
|
|
/**
|
|
* Checks whether or not the given hash is marked as online.
|
|
*
|
|
* @param hash the byte array to check.
|
|
* @return true if the given hash is marked as online, esle false.
|
|
* @throws NoAdapterException - if the adapter is unable to check the online hashes.
|
|
*/
|
|
public boolean isOnline(byte[] hash) throws NoAdapterException;
|
|
|
|
/**
|
|
* Marks the given hash as offline. This does not throw an exception if the hash is not marked as
|
|
* online.
|
|
*
|
|
* @param hash the byte array to mark as offline.
|
|
* @throws NoAdapterException - if the adapter is unable to mark the given hash as offline.
|
|
*/
|
|
public void goOffline(byte[] hash) throws NoAdapterException;
|
|
|
|
/**
|
|
* Adds the given NoSession to an accessible pool, ideally indexed by the UUID.
|
|
*
|
|
* @param session the NoSession object to add.
|
|
* @throws NoAdapterException - if the adapter is unable to add the NoSession object.
|
|
*/
|
|
public void addNoSession(NoSession session) throws NoAdapterException;
|
|
|
|
/**
|
|
* Checks if the pool of sessions contains a NoSession object with the UUID represented by the
|
|
* encrypted byte array.
|
|
*
|
|
* @param encryptedUuid the encrypted byte array representing the NoSession UUID.
|
|
* @return true if the session pool contains a session with the requested UUID.
|
|
* @throws NoAdapterException
|
|
*/
|
|
public boolean containsNoSession(byte[] encryptedUuid) throws NoAdapterException;
|
|
|
|
/**
|
|
* Removes a session from the pool through the UUID represented by the encrypted byte array.
|
|
*
|
|
* @param encryptedUuid the encrypted byte array representing the NoSession UUID.
|
|
* @throws NoAdapterException - if the adapter is unable to shred the session.
|
|
*/
|
|
public void shredNoSession(byte[] encryptedUuid) throws NoAdapterException;
|
|
|
|
/**
|
|
* Returns the NoSession represented by the given encrypted UUID.
|
|
*
|
|
* @param encryptedUuid the encrypted byte array representing the NoSession UUID.
|
|
* @return the NoSession object with the UUID equal to the decrypted byte array provided.
|
|
* @throws NoAdapterException - if the adapter is unable to get the NoSession.
|
|
* @throws NoSessionExpiredException - if the NoSession object cannot be found.
|
|
*/
|
|
public NoSession getNoSession(byte[] encryptedUuid) throws NoAdapterException,
|
|
NoSessionExpiredException;
|
|
|
|
/**
|
|
* Returns a Collection of NoByteSet objects tied to the given PublicKey address.
|
|
*
|
|
* @param address the PublicKey address the NoByteSets are addressed to.
|
|
* @return a Collection of NoByteSets. If none are associated with the PublicKey address, it
|
|
* should return an empty collection, not a null object.
|
|
* @throws NoAdapterException
|
|
*/
|
|
public List<NoByteSet> pollNoByteSets(PublicKey address) throws NoAdapterException;
|
|
|
|
/**
|
|
* Adds a single NoByteSet to the addressed PublicKey address.
|
|
*
|
|
* @param byteSet the NoByteSet to add to the byte set pool
|
|
* @param address the address to queue the NoByteSet object for
|
|
* @throws NoAdapterException - if the adapter is unable to add the NoByteSet object to the pool
|
|
*/
|
|
public void addNoByteSet(NoByteSet byteSet, PublicKey address) throws NoAdapterException;
|
|
|
|
/**
|
|
* Adds a list of NoByteSet objects to the addressed PublicKey address.
|
|
*
|
|
* @param byteSets the NoByteSet list to add to the byte set pool
|
|
* @param address the address to queue the NoByteSets for
|
|
* @throws NoAdapterException - if the adapter is unable to add the list of NoByteSet objects to
|
|
* the pool.
|
|
*/
|
|
public void addNoByteSets(List<NoByteSet> byteSets, PublicKey address)
|
|
throws NoAdapterException;
|
|
}
|