From da731d2bb81666b9c697d9099da632e7dfcdc0f7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 9 Sep 2014 12:13:21 +0200 Subject: Replaced int sysKey Item identifier with UUID, which is now portable. ItemPath objects are now used to identify Items throughout the kernel, replacing ints and Integers. --- .../com/c2kernel/entity/proxy/ProxyMessage.java | 38 +++++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'src/main/java/com/c2kernel/entity/proxy/ProxyMessage.java') diff --git a/src/main/java/com/c2kernel/entity/proxy/ProxyMessage.java b/src/main/java/com/c2kernel/entity/proxy/ProxyMessage.java index 62866eb..f90c976 100644 --- a/src/main/java/com/c2kernel/entity/proxy/ProxyMessage.java +++ b/src/main/java/com/c2kernel/entity/proxy/ProxyMessage.java @@ -2,9 +2,10 @@ package com.c2kernel.entity.proxy; import java.io.IOException; import java.net.DatagramPacket; -import java.util.StringTokenizer; import com.c2kernel.common.InvalidDataException; +import com.c2kernel.lookup.InvalidItemPathException; +import com.c2kernel.lookup.ItemPath; /************************************************************************** @@ -25,12 +26,11 @@ public class ProxyMessage { public static final String PINGPATH = "ping"; public static final boolean ADDED = false; public static final boolean DELETED = true; - public static final int NA = -1; - static ProxyMessage byeMessage = new ProxyMessage(NA, BYEPATH, ADDED); - static ProxyMessage pingMessage = new ProxyMessage(NA, PINGPATH, ADDED); + static ProxyMessage byeMessage = new ProxyMessage(null, BYEPATH, ADDED); + static ProxyMessage pingMessage = new ProxyMessage(null, PINGPATH, ADDED); - private int sysKey = NA; + private ItemPath itemPath = null; private String path = ""; private String server = null; private boolean state = ADDED; @@ -38,9 +38,9 @@ public class ProxyMessage { public ProxyMessage() { super(); } - public ProxyMessage(int sysKey, String path, boolean state) { + public ProxyMessage(ItemPath itemPath, String path, boolean state) { this(); - setSysKey(sysKey); + setItemPath(itemPath); setPath(path); setState(state); } @@ -48,11 +48,17 @@ public class ProxyMessage { public ProxyMessage(String line) throws InvalidDataException, IOException { if (line == null) throw new IOException("Null proxy message"); - StringTokenizer tok = new StringTokenizer(line,":"); - if (tok.countTokens()!=2) + String[] tok = line.split(":"); + if (tok.length != 2) throw new InvalidDataException("String '"+line+"' does not constitute a valid proxy message.", ""); - sysKey = Integer.parseInt(tok.nextToken()); - path = tok.nextToken(); + if (tok[0].length() > 0 && !tok[0].equals("tree")) { + try { + itemPath = new ItemPath(tok[0]); + } catch (InvalidItemPathException e) { + throw new InvalidDataException("Item in proxy message "+line+" was not valid"); + } + } + path = tok[1]; if (path.startsWith("-")) { state = DELETED; path = path.substring(1); @@ -63,12 +69,12 @@ public class ProxyMessage { this(new String(packet.getData())); } - public int getSysKey() { - return sysKey; + public ItemPath getItemPath() { + return itemPath; } - public void setSysKey(int sysKey) { - this.sysKey = sysKey; + public void setItemPath(ItemPath itemPath) { + this.itemPath = itemPath; } public String getPath() { @@ -89,7 +95,7 @@ public class ProxyMessage { @Override public String toString() { - return sysKey+":"+(state?"-":"")+path; + return (itemPath==null?"tree":itemPath.getUUID())+":"+(state?"-":"")+path; } public String getServer() { -- cgit v1.2.3