Switched back to using the StorageEntry class and StorageEntry Metadata class because of some issues with JSon serialization with polymorphism...

This commit is contained in:
Joshua Kissoon 2014-06-03 10:43:53 +05:30
parent 7a4cc2e91c
commit 8501740bc5
9 changed files with 37 additions and 32 deletions

View File

@ -266,7 +266,7 @@ public class JKademliaNode implements KademliaNode
}
@Override
public int put(KademliaStorageEntry entry) throws IOException
public int put(JKademliaStorageEntry entry) throws IOException
{
StoreOperation sop = new StoreOperation(this.server, this, entry, this.dht, this.config);
sop.execute();
@ -282,7 +282,7 @@ public class JKademliaNode implements KademliaNode
}
@Override
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException
{
if (this.dht.contains(param))
{

View File

@ -3,6 +3,7 @@ package kademlia;
import java.io.IOException;
import java.util.NoSuchElementException;
import kademlia.dht.GetParameter;
import kademlia.dht.JKademliaStorageEntry;
import kademlia.dht.KadContent;
import kademlia.dht.KademliaDHT;
import kademlia.dht.KademliaStorageEntry;
@ -86,7 +87,7 @@ public interface KademliaNode
* @throws java.io.IOException
*
*/
public int put(KademliaStorageEntry entry) throws IOException;
public int put(JKademliaStorageEntry entry) throws IOException;
/**
* Store a content on the local node's DHT
@ -107,7 +108,7 @@ public interface KademliaNode
* @throws java.io.IOException
* @throws kademlia.exceptions.ContentNotFoundException
*/
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException;
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException;
/**
* Allow the user of the System to call refresh even out of the normal Kad refresh timing

View File

@ -26,7 +26,7 @@ public class DHT implements KademliaDHT
{
private transient StoredContentManager contentManager;
private transient KadSerializer<KademliaStorageEntry> serializer = null;
private transient KadSerializer<JKademliaStorageEntry> serializer = null;
private transient KadConfiguration config;
private final String ownerId;
@ -51,7 +51,7 @@ public class DHT implements KademliaDHT
}
@Override
public KadSerializer<KademliaStorageEntry> getSerializer()
public KadSerializer<JKademliaStorageEntry> getSerializer()
{
if (null == serializer)
{
@ -62,7 +62,7 @@ public class DHT implements KademliaDHT
}
@Override
public boolean store(KademliaStorageEntry content) throws IOException
public boolean store(JKademliaStorageEntry content) throws IOException
{
/* Lets check if we have this content and it's the updated version */
if (this.contentManager.contains(content.getContentMetadata()))
@ -130,7 +130,7 @@ public class DHT implements KademliaDHT
}
@Override
public KademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException
public JKademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException
{
String folder = this.getContentStorageFolderName(key);
DataInputStream din = new DataInputStream(new FileInputStream(folder + File.separator + hashCode + ".kct"));
@ -144,7 +144,7 @@ public class DHT implements KademliaDHT
}
@Override
public KademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException
public JKademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException
{
try
{
@ -164,7 +164,7 @@ public class DHT implements KademliaDHT
}
@Override
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException
{
/* Load a KadContent if any exist for the given criteria */
try

View File

@ -10,14 +10,14 @@ public class JKademliaStorageEntry implements KademliaStorageEntry
{
private String content;
private final KademliaStorageEntryMetadata metadata;
private final StorageEntryMetadata metadata;
public JKademliaStorageEntry(final KadContent content)
{
this(content, new StorageEntryMetadata(content));
}
public JKademliaStorageEntry(final KadContent content, final KademliaStorageEntryMetadata metadata)
public JKademliaStorageEntry(final KadContent content, final StorageEntryMetadata metadata)
{
this.setContent(content.toSerializedForm());
this.metadata = metadata;

View File

@ -35,7 +35,7 @@ public interface KademliaDHT
*
* @return The new ContentSerializer
*/
public KadSerializer<KademliaStorageEntry> getSerializer();
public KadSerializer<JKademliaStorageEntry> getSerializer();
/**
* Handle storing content locally
@ -46,7 +46,7 @@ public interface KademliaDHT
*
* @throws java.io.IOException
*/
public boolean store(KademliaStorageEntry content) throws IOException;
public boolean store(JKademliaStorageEntry content) throws IOException;
public boolean store(KadContent content) throws IOException;
@ -61,7 +61,7 @@ public interface KademliaDHT
* @throws java.io.FileNotFoundException
* @throws java.lang.ClassNotFoundException
*/
public KademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException;
public JKademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException;
/**
* Check if any content for the given criteria exists in this DHT
@ -81,7 +81,7 @@ public interface KademliaDHT
*
* @throws java.io.IOException
*/
public KademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException;
public JKademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException;
/**
* Get the StorageEntry for the content if any exist.
@ -92,7 +92,7 @@ public interface KademliaDHT
*
* @throws java.io.IOException
*/
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException;
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException;
/**
* Delete a content from local storage

View File

@ -3,6 +3,7 @@ package kademlia.message;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import kademlia.dht.JKademliaStorageEntry;
import kademlia.dht.KademliaStorageEntry;
import kademlia.node.Node;
import kademlia.util.serializer.JsonSerializer;
@ -18,7 +19,7 @@ public class ContentMessage implements Message
public static final byte CODE = 0x04;
private KademliaStorageEntry content;
private JKademliaStorageEntry content;
private Node origin;
/**
@ -26,7 +27,7 @@ public class ContentMessage implements Message
* @param content The content to be stored
*
*/
public ContentMessage(Node origin, KademliaStorageEntry content)
public ContentMessage(Node origin, JKademliaStorageEntry content)
{
this.content = content;
this.origin = origin;
@ -43,7 +44,7 @@ public class ContentMessage implements Message
this.origin.toStream(out);
/* Serialize the KadContent, then send it to the stream */
new JsonSerializer<KademliaStorageEntry>().write(content, out);
new JsonSerializer<JKademliaStorageEntry>().write(content, out);
}
@Override
@ -53,7 +54,7 @@ public class ContentMessage implements Message
try
{
this.content = new JsonSerializer<KademliaStorageEntry>().read(in);
this.content = new JsonSerializer<JKademliaStorageEntry>().read(in);
}
catch (ClassNotFoundException e)
{
@ -66,7 +67,7 @@ public class ContentMessage implements Message
return this.origin;
}
public KademliaStorageEntry getContent()
public JKademliaStorageEntry getContent()
{
return this.content;
}

View File

@ -3,6 +3,7 @@ package kademlia.message;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import kademlia.dht.JKademliaStorageEntry;
import kademlia.dht.KademliaStorageEntry;
import kademlia.node.Node;
import kademlia.util.serializer.JsonSerializer;
@ -18,7 +19,7 @@ public class StoreContentMessage implements Message
public static final byte CODE = 0x08;
private KademliaStorageEntry content;
private JKademliaStorageEntry content;
private Node origin;
/**
@ -26,7 +27,7 @@ public class StoreContentMessage implements Message
* @param content The content to be stored
*
*/
public StoreContentMessage(Node origin, KademliaStorageEntry content)
public StoreContentMessage(Node origin, JKademliaStorageEntry content)
{
this.content = content;
this.origin = origin;
@ -43,7 +44,7 @@ public class StoreContentMessage implements Message
this.origin.toStream(out);
/* Serialize the KadContent, then send it to the stream */
new JsonSerializer<KademliaStorageEntry>().write(content, out);
new JsonSerializer<JKademliaStorageEntry>().write(content, out);
}
@Override
@ -52,7 +53,7 @@ public class StoreContentMessage implements Message
this.origin = new Node(in);
try
{
this.content = new JsonSerializer<KademliaStorageEntry>().read(in);
this.content = new JsonSerializer<JKademliaStorageEntry>().read(in);
}
catch (ClassNotFoundException e)
{
@ -65,7 +66,7 @@ public class StoreContentMessage implements Message
return this.origin;
}
public KademliaStorageEntry getContent()
public JKademliaStorageEntry getContent()
{
return this.content;
}

View File

@ -14,6 +14,7 @@ import kademlia.JKademliaNode;
import kademlia.dht.GetParameter;
import kademlia.KadConfiguration;
import kademlia.KadServer;
import kademlia.dht.JKademliaStorageEntry;
import kademlia.dht.KademliaStorageEntry;
import kademlia.exceptions.ContentNotFoundException;
import kademlia.exceptions.RoutingException;
@ -43,7 +44,7 @@ public class ContentLookupOperation implements Operation, Receiver
private final KadServer server;
private final JKademliaNode localNode;
private KademliaStorageEntry contentFound = null;
private JKademliaStorageEntry contentFound = null;
private final KadConfiguration config;
private final ContentLookupMessage lookupMessage;
@ -253,7 +254,7 @@ public class ContentLookupOperation implements Operation, Receiver
this.localNode.getRoutingTable().insert(msg.getOrigin());
/* Get the Content and check if it satisfies the required parameters */
KademliaStorageEntry content = msg.getContent();
JKademliaStorageEntry content = msg.getContent();
this.contentFound = content;
this.isContentFound = true;
}
@ -320,7 +321,7 @@ public class ContentLookupOperation implements Operation, Receiver
*
* @throws kademlia.exceptions.ContentNotFoundException
*/
public KademliaStorageEntry getContentFound() throws ContentNotFoundException
public JKademliaStorageEntry getContentFound() throws ContentNotFoundException
{
if (this.isContentFound)
{

View File

@ -5,6 +5,7 @@ import java.util.List;
import kademlia.KadConfiguration;
import kademlia.KadServer;
import kademlia.KademliaNode;
import kademlia.dht.JKademliaStorageEntry;
import kademlia.dht.KademliaDHT;
import kademlia.dht.KademliaStorageEntry;
import kademlia.message.Message;
@ -22,7 +23,7 @@ public class StoreOperation implements Operation
private final KadServer server;
private final KademliaNode localNode;
private final KademliaStorageEntry storageEntry;
private final JKademliaStorageEntry storageEntry;
private final KademliaDHT localDht;
private final KadConfiguration config;
@ -33,7 +34,7 @@ public class StoreOperation implements Operation
* @param localDht The local DHT
* @param config
*/
public StoreOperation(KadServer server, KademliaNode localNode, KademliaStorageEntry storageEntry, KademliaDHT localDht, KadConfiguration config)
public StoreOperation(KadServer server, KademliaNode localNode, JKademliaStorageEntry storageEntry, KademliaDHT localDht, KadConfiguration config)
{
this.server = server;
this.localNode = localNode;