* Beautify PetNameDB API.

* Start of syndie auto address export.
This commit is contained in:
ragnarok
2005-10-09 03:32:34 +00:00
committed by zzz
parent ad574c8504
commit e7ad516685
13 changed files with 100 additions and 78 deletions

View File

@ -416,12 +416,12 @@ public class BlogManager {
PetNameDB userDb = user.getPetNameDB();
PetNameDB routerDb = _context.petnameDb();
// horribly inefficient...
for (Iterator names = userDb.getNames().iterator(); names.hasNext();) {
PetName pn = userDb.get((String)names.next());
for (Iterator iter = userDb.iterator(); iter.hasNext();) {
PetName pn = (PetName)iter.next();
if (pn == null) continue;
Destination existing = _context.namingService().lookup(pn.getName());
if (existing == null && pn.getNetwork().equalsIgnoreCase("i2p")) {
routerDb.set(pn.getName(), pn);
routerDb.add(pn);
try {
routerDb.store();
} catch (IOException ioe) {
@ -567,10 +567,10 @@ public class BlogManager {
// no need to quote user/location further, as they've been sanitized
PetNameDB names = user.getPetNameDB();
if (names.exists(name))
if (names.containsName(name))
return "<span class=\"b_addrMsgErr\">Name is already in use</span>";
PetName pn = new PetName(name, schema, protocol, location);
names.set(name, pn);
names.add(pn);
try {
names.store(user.getAddressbookLocation());

View File

@ -4,6 +4,7 @@ import java.io.*;
import java.text.*;
import java.util.*;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetName;
import net.i2p.data.*;
import net.i2p.syndie.*;
import net.i2p.syndie.data.*;
@ -104,7 +105,7 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
String knownName = null;
if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(a.location);
knownName = _user.getPetNameDB().getLocation(a.location).getName();
if (knownName != null) {
_postBodyBuffer.append(' ').append(getSpan("summDetailAddrKnown"));
_postBodyBuffer.append(sanitizeString(knownName)).append("</span>");
@ -119,7 +120,8 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
if (a.protocol != null)
_postBodyBuffer.append("protocol=").append(sanitizeTagParam(a.protocol)).append('&');
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
}
}
importAddress(a);
}
_postBodyBuffer.append("<br />\n");
}
@ -132,7 +134,7 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
if (a.description != null)
_postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append("</span>");
if (null == _user.getPetNameDB().getNameByLocation(a.location)) {
if (null == _user.getPetNameDB().getLocation(a.location)) {
_postBodyBuffer.append(" <a ").append(getClass("summDetailArchiveBookmark")).append(" href=\"");
_postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive"));
_postBodyBuffer.append("\">bookmark</a>");

View File

@ -441,6 +441,21 @@ public class HTMLRenderer extends EventReceiverImpl {
return DataHelper.eq(schema, a.schema) && DataHelper.eq(location, a.location) && DataHelper.eq(protocol, a.protocol) && DataHelper.eq(name, a.name);
}
}
public void importAddress(Address a) {
if (I2PAppContext.getGlobalContext().getProperty("syndie.addressExport", "false").equalsIgnoreCase("true")
&& I2PAppContext.getGlobalContext().namingService().lookup(a.name) == null
&& a.schema.equalsIgnoreCase("i2p")) {
PetName pn = new PetName(a.name, a.schema, a.protocol, a.location);
I2PAppContext.getGlobalContext().petnameDb().add(pn);
try {
I2PAppContext.getGlobalContext().petnameDb().store();
} catch (IOException ioe) {
//ignore
}
}
}
public void receiveAddress(String name, String schema, String protocol, String location, String anchorText) {
Address a = new Address();
a.name = name;
@ -451,12 +466,12 @@ public class HTMLRenderer extends EventReceiverImpl {
_addresses.add(a);
if (!continueBody()) { return; }
if ( (schema == null) || (location == null) ) return;
String knownName = null;
PetName pn = null;
if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(location);
if (knownName != null) {
pn = _user.getPetNameDB().getLocation(location);
if (pn != null) {
_bodyBuffer.append(getSpan("addr")).append(sanitizeString(anchorText)).append("</span>");
_bodyBuffer.append(getSpan("addrKnownName")).append("(").append(sanitizeString(knownName)).append(")</span>");
_bodyBuffer.append(getSpan("addrKnownName")).append("(").append(sanitizeString(pn.getName())).append(")</span>");
} else {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Receiving address [" + location + "]");
@ -616,12 +631,12 @@ public class HTMLRenderer extends EventReceiverImpl {
for (int i = 0; i < _addresses.size(); i++) {
Address a = (Address)_addresses.get(i);
String knownName = null;
PetName pn = null;
if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(a.location);
if (knownName != null) {
pn = _user.getPetNameDB().getLocation(a.location);
if (pn != null) {
_postBodyBuffer.append(' ').append(getSpan("summDetailAddrKnown"));
_postBodyBuffer.append(sanitizeString(knownName)).append("</span>");
_postBodyBuffer.append(sanitizeString(pn.getName())).append("</span>");
} else {
_postBodyBuffer.append(" <a ").append(getClass("summDetailAddrLink")).append(" href=\"addresses.jsp?");
if (a.schema != null)
@ -633,7 +648,8 @@ public class HTMLRenderer extends EventReceiverImpl {
if (a.protocol != null)
_postBodyBuffer.append("protocol=").append(sanitizeTagParam(a.protocol)).append('&');
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
}
}
importAddress(a);
}
_postBodyBuffer.append("<br />\n");
}
@ -646,7 +662,7 @@ public class HTMLRenderer extends EventReceiverImpl {
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
if (a.description != null)
_postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append("</span>");
if (null == _user.getPetNameDB().getNameByLocation(a.location)) {
if (null == _user.getPetNameDB().getLocation(a.location)) {
_postBodyBuffer.append(" <a ").append(getClass("summDetailArchiveBookmark")).append(" href=\"");
_postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive"));
_postBodyBuffer.append("\">bookmark it</a>");
@ -749,9 +765,9 @@ public class HTMLRenderer extends EventReceiverImpl {
_preBodyBuffer.append("<td nowrap=\"nowrap\" align=\"right\" valign=\"top\" ");
_preBodyBuffer.append(getClass("meta")).append(">\n");
String knownName = null;
PetName pn = null;
if ( (_entry != null) && (_user != null) )
knownName = _user.getPetNameDB().getNameByLocation(_entry.getURI().getKeyHash().toBase64());
pn = _user.getPetNameDB().getLocation(_entry.getURI().getKeyHash().toBase64());
//if (knownName != null)
// _preBodyBuffer.append("Pet name: ").append(sanitizeString(knownName)).append(" ");
@ -760,8 +776,8 @@ public class HTMLRenderer extends EventReceiverImpl {
info = _archive.getBlogInfo(_entry.getURI());
if (info != null) {
_preBodyBuffer.append("<a ").append(getClass("metaLink")).append(" href=\"").append(getMetadataURL()).append("\">");
if (knownName != null) {
_preBodyBuffer.append(getSpan("metaKnown")).append(sanitizeString(knownName)).append("</span>");
if (pn != null) {
_preBodyBuffer.append(getSpan("metaKnown")).append(sanitizeString(pn.getName())).append("</span>");
} else {
String nameStr = info.getProperty("Name");
if (nameStr == null)
@ -776,7 +792,6 @@ public class HTMLRenderer extends EventReceiverImpl {
if ( (_user != null) && (_user.getAuthenticated()) && (_entry != null) ) {
PetName pn = _user.getPetNameDB().get(knownName);
if ( (pn == null) || (!pn.isMember("Favorites")) )
_preBodyBuffer.append(" <input ").append(getClass("bookmark")).append(" type=\"submit\" name=\"action\" value=\"Bookmark blog\" />");
if ( (pn == null) || (!pn.isMember("Ignore")) )

View File

@ -4,6 +4,7 @@ import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetName;
import net.i2p.data.*;
import net.i2p.syndie.*;
import net.i2p.syndie.data.*;
@ -26,7 +27,8 @@ public class RSSRenderer extends HTMLRenderer {
out.write(" <link>" + urlPrefix + sanitizeXML(getEntryURL()) + "</link>\n");
out.write(" <guid isPermalink=\"false\">" + urlPrefix + entry.getURI().toString() + "</guid>\n");
out.write(" <pubDate>" + getRFC822Date(entry.getURI().getEntryId()) + "</pubDate>\n");
String author = user.getPetNameDB().getNameByLocation(entry.getURI().getKeyHash().toBase64());
PetName pn = user.getPetNameDB().getLocation(entry.getURI().getKeyHash().toBase64());
String author = pn.getName();
if (author == null) {
BlogInfo info = archive.getBlogInfo(entry.getURI());
if (info != null)
@ -192,10 +194,10 @@ public class RSSRenderer extends HTMLRenderer {
_addresses.add(a);
if (!continueBody()) { return; }
if ( (schema == null) || (location == null) ) return;
String knownName = null;
PetName pn = null;
if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(location);
if (knownName != null) {
pn = _user.getPetNameDB().getLocation(location);
if (pn != null) {
_bodyBuffer.append(sanitizeString(anchorText));
} else {
_bodyBuffer.append(sanitizeString(anchorText));
@ -250,10 +252,10 @@ public class RSSRenderer extends HTMLRenderer {
for (int i = 0; i < _addresses.size(); i++) {
Address a = (Address)_addresses.get(i);
String knownName = null;
PetName pn = null;
if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(a.location);
if (knownName == null) {
pn = _user.getPetNameDB().getLocation(a.location);
if (pn == null) {
StringBuffer url = new StringBuffer(128);
url.append("addresses.jsp?network=");
url.append(sanitizeTagParam(a.schema)).append("&location=");

View File

@ -100,10 +100,9 @@ public class ArchiveViewerBean {
for (int i = 0; i < index.getNewestBlogCount(); i++) {
Hash cur = index.getNewestBlog(i);
String knownName = user.getPetNameDB().getNameByLocation(cur.toBase64());
PetName pn = null;
if (knownName != null) {
pn = user.getPetNameDB().get(knownName);
PetName pn = user.getPetNameDB().getLocation(cur.toBase64());
String knownName = null;
if (pn != null) {
knownName = pn.getName();
}
if ( (pn != null) && (pn.isMember("Ignore")) )
@ -128,10 +127,9 @@ public class ArchiveViewerBean {
Set blogs = index.getUniqueBlogs();
for (Iterator iter = blogs.iterator(); iter.hasNext(); ) {
Hash cur = (Hash)iter.next();
String knownName = user.getPetNameDB().getNameByLocation(cur.toBase64());
PetName pn = null;
if (knownName != null) {
pn = user.getPetNameDB().get(knownName);
PetName pn = user.getPetNameDB().getLocation(cur.toBase64());
String knownName = null;
if (pn != null) {
knownName = pn.getName();
}
if ( (pn != null) && (pn.isMember("Ignore")) )
@ -494,7 +492,7 @@ public class ArchiveViewerBean {
PetNameDB db = user.getPetNameDB();
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
String name = (String)iter.next();
PetName pn = db.get(name);
PetName pn = db.getName(name);
if ("syndie".equals(pn.getNetwork()) && "syndieblog".equals(pn.getProtocol()) && pn.isMember(group)) {
byte pnLoc[] = Base64.decode(pn.getLocation());
if (pnLoc != null) {
@ -517,13 +515,10 @@ public class ArchiveViewerBean {
BlogURI uri = (BlogURI)uris.get(i);
Hash k = uri.getKeyHash();
if (k == null) continue;
String pname = user.getPetNameDB().getNameByLocation(k.toBase64());
if (pname != null) {
PetName pn = user.getPetNameDB().get(pname);
if ( (pn != null) && (pn.isMember("Ignore")) ) {
uris.remove(i);
i--;
}
PetName pn = user.getPetNameDB().getLocation(k.toBase64());
if ( (pn != null) && (pn.isMember("Ignore")) ) {
uris.remove(i);
i--;
}
}
}

View File

@ -99,7 +99,7 @@ public class PostBean {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Posted the entry " + uri.toString() + " (archive = " + _archive + ")");
if ( (uri != null) && BlogManager.instance().authorizeRemote(_user) ) {
PetName pn = _user.getPetNameDB().get(_archive);
PetName pn = _user.getPetNameDB().getName(_archive);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Archive to petname? " + pn + " (protocol: " + (pn != null ? pn.getProtocol() : "") + ")");
if ( (pn != null) && ("syndiearchive".equals(pn.getProtocol())) ) {

View File

@ -6,6 +6,7 @@ import java.util.*;
import java.util.zip.*;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetNameDB;
import net.i2p.client.naming.PetName;
import net.i2p.data.*;
import net.i2p.util.EepGet;
import net.i2p.util.EepGetScheduler;
@ -61,8 +62,8 @@ public class RemoteArchiveBean {
private boolean ignoreBlog(User user, Hash blog) {
PetNameDB db = user.getPetNameDB();
String name = db.getNameByLocation(blog.toBase64());
return ( (name != null) && (db.get(name).isMember("Ignore")) );
PetName pn = db.getLocation(blog.toBase64());
return ( (pn!= null) && (pn.isMember("Ignore")) );
}
public void fetchMetadata(User user, Map parameters) {

View File

@ -11,13 +11,14 @@ if (user.getAuthenticated() && (null != request.getParameter("action")) ) {
group = "Ignore";
boolean unignore = ("Unignore blog".equals(request.getParameter("action")));
String name = user.getPetNameDB().getNameByLocation(blog);
PetName pn = user.getPetNameDB().getLocation(blog);
String name = null;
if (pn != null) name = pn.getName();
if (name == null)
name = request.getParameter("name");
if (name == null)
name = blog;
if ( (name != null) && (blog != null) && ( (group != null) || (unignore) ) ) {
PetName pn = user.getPetNameDB().get(name);
if (pn != null) {
if (unignore)
pn.removeGroup("Ignore");
@ -26,7 +27,7 @@ if (user.getAuthenticated() && (null != request.getParameter("action")) ) {
} else {
pn = new PetName(name, "syndie", "syndieblog", blog);
pn.addGroup(group);
user.getPetNameDB().set(name, pn);
user.getPetNameDB().add(pn);
}
BlogManager.instance().saveUser(user);
}

View File

@ -20,7 +20,7 @@ if (!user.getAuthenticated()) {
String action = request.getParameter("action");
if ( (action != null) && ("Change".equals(action)) ) {
String oldPetname = request.getParameter("petname");
PetName cur = names.get(oldPetname);
PetName cur = names.getName(oldPetname);
if (cur != null) {
cur.setName(request.getParameter("name"));
cur.setNetwork(request.getParameter("network"));
@ -28,8 +28,8 @@ if (!user.getAuthenticated()) {
cur.setIsPublic(null != request.getParameter("isPublic"));
cur.setLocation(request.getParameter("location"));
cur.setGroups(request.getParameter("groups"));
names.remove(oldPetname);
names.set(cur.getName(), cur);
names.removeName(oldPetname);
names.add(cur);
names.store(user.getAddressbookLocation());
if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) {
if (null != request.getParameter("scheduleSyndication")) {
@ -43,7 +43,7 @@ if (!user.getAuthenticated()) {
%><span class="b_addrMsgOk">Address updated</span><%
}
} else if ( (action != null) && ("Add".equals(action)) ) {
PetName cur = names.get(request.getParameter("name"));
PetName cur = names.getName(request.getParameter("name"));
if (cur != null) { %><span class="b_addrMsgErr">Address already exists</span><% } else {
cur = new PetName();
cur.setName(request.getParameter("name"));
@ -52,7 +52,7 @@ if (!user.getAuthenticated()) {
cur.setIsPublic(null != request.getParameter("isPublic"));
cur.setLocation(request.getParameter("location"));
cur.setGroups(request.getParameter("groups"));
names.set(cur.getName(), cur);
names.add(cur);
names.store(user.getAddressbookLocation());
if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) {
if (null != request.getParameter("scheduleSyndication")) {
@ -63,13 +63,13 @@ if (!user.getAuthenticated()) {
%><span class="b_addrMsgOk">Address added</span><%
}
} else if ( (action != null) && ("Delete".equals(action)) ) {
PetName cur = names.get(request.getParameter("name"));
PetName cur = names.getName(request.getParameter("name"));
if (cur != null) {
if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) {
BlogManager.instance().unscheduleSyndication(cur.getLocation());
BlogManager.instance().writeConfig();
}
names.remove(cur.getName());
names.removeName(cur.getName());
names.store(user.getAddressbookLocation());
%><span class="b_addrMsgOk">Address removed</span><%
}
@ -90,7 +90,7 @@ if (!user.getAuthenticated()) {
<%
StringBuffer buf = new StringBuffer(128);
for (Iterator iter = sorted.iterator(); iter.hasNext(); ) {
PetName name = names.get((String)iter.next());
PetName name = names.getName((String)iter.next());
buf.append("<tr class=\"b_addrDetail\"><form action=\"addresses.jsp\" method=\"POST\">");
buf.append("<input type=\"hidden\" name=\"petname\" value=\"").append(name.getName()).append("\" />");
buf.append("<td class=\"b_addrName\"><input class=\"b_addrName\" type=\"text\" size=\"20\" name=\"name\" value=\"").append(name.getName()).append("\" /></td>");

View File

@ -66,7 +66,7 @@ if (!user.getAuthenticated()) {
PetNameDB db = user.getPetNameDB();
if (entryHeaders == null) entryHeaders = "";
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
PetName pn = db.get((String)iter.next());
PetName pn = db.getName((String)iter.next());
if ( (pn != null) && (pn.getIsPublic()) ) {
entryHeaders = entryHeaders + '\n' + HTMLRenderer.HEADER_PETNAME + ": " +
pn.getName() + "\t" + pn.getNetwork() + "\t" + pn.getProtocol() + "\t" + pn.getLocation();
@ -107,7 +107,7 @@ PetNameDB db = user.getPetNameDB();
TreeSet names = new TreeSet();
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
String name = (String)iter.next();
PetName pn = db.get(name);
PetName pn = db.getName(name);
if ("syndiearchive".equals(pn.getProtocol()))
names.add(pn.getName());
}

View File

@ -29,8 +29,8 @@ if (!BlogManager.instance().authorizeRemote(user)) {
<input class="b_remoteChooserHost" type="text" size="10" name="proxyhost" value="<%=BlogManager.instance().getDefaultProxyHost()%>" />
<input class="b_remoteChooserPort" type="text" size="4" name="proxyport" value="<%=BlogManager.instance().getDefaultProxyPort()%>" /><br />
<span class="b_remoteChooserField">Bookmarked archives:</span> <select class="b_remoteChooserPN" name="archivepetname"><option value="">Custom location</option><%
for (Iterator iter = user.getPetNameDB().getNames().iterator(); iter.hasNext(); ) {
PetName pn = user.getPetNameDB().get((String)iter.next());
for (Iterator iter = user.getPetNameDB().iterator(); iter.hasNext(); ) {
PetName pn = (PetName)iter.next();
if ("syndiearchive".equals(pn.getProtocol())) {
%><option value="<%=HTMLRenderer.sanitizeTagParam(pn.getName())%>"><%=HTMLRenderer.sanitizeString(pn.getName())%></option><%
}
@ -45,7 +45,7 @@ for (Iterator iter = user.getPetNameDB().getNames().iterator(); iter.hasNext();
String location = request.getParameter("location");
String pn = request.getParameter("archivepetname");
if ( (pn != null) && (pn.trim().length() > 0) ) {
PetName pnval = user.getPetNameDB().get(pn);
PetName pnval = user.getPetNameDB().getName(pn);
if (pnval != null) location = pnval.getLocation();
}
remote.fetchIndex(user, request.getParameter("schema"), location, request.getParameter("proxyhost"), request.getParameter("proxyport"));

View File

@ -16,14 +16,20 @@ public class PetNameDB {
_names = Collections.synchronizedMap(new HashMap());
}
public PetName get(String name) { return (PetName)_names.get(name); }
public boolean exists(String name) { return _names.containsKey(name); }
public void set(String name, PetName pn) { _names.put(name, pn); }
public void remove(String name) { _names.remove(name); }
public PetName getName(String name) { return (PetName)_names.get(name); }
public void add(PetName pn) { _names.put(pn.getName(), pn); }
public void clear() { _names.clear(); }
public boolean contains(PetName pn) { return _names.containsValue(pn); }
public boolean containsName(String name) { return _names.containsKey(name); }
public boolean isEmpty() { return _names.isEmpty(); }
public Iterator iterator() { return new LinkedList(_names.values()).iterator(); }
public void remove(PetName pn) { _names.values().remove(pn); }
public void removeName(String name) { _names.remove(name); }
public int size() { return _names.size(); }
public Set getNames() { return new HashSet(_names.keySet()); }
public List getGroups() {
List rv = new ArrayList();
for (Iterator iter = new HashSet(_names.values()).iterator(); iter.hasNext(); ) {
for (Iterator iter = iterator(); iter.hasNext(); ) {
PetName name = (PetName)iter.next();
for (int i = 0; i < name.getGroupCount(); i++)
if (!rv.contains(name.getGroup(i)))
@ -32,13 +38,13 @@ public class PetNameDB {
return rv;
}
public String getNameByLocation(String location) {
public PetName getLocation(String location) {
if (location == null) return null;
synchronized (_names) {
for (Iterator iter = _names.values().iterator(); iter.hasNext(); ) {
for (Iterator iter = iterator(); iter.hasNext(); ) {
PetName name = (PetName)iter.next();
if ( (name.getLocation() != null) && (name.getLocation().trim().equals(location.trim())) )
return name.getName();
return name;
}
}
return null;
@ -55,7 +61,7 @@ public class PetNameDB {
while ( (line = in.readLine()) != null) {
PetName name = new PetName(line);
if (name.getName() != null)
_names.put(name.getName(), name);
add(name);
}
} finally {
in.close();
@ -66,8 +72,8 @@ public class PetNameDB {
Writer out = null;
try {
out = new OutputStreamWriter(new FileOutputStream(location), "UTF-8");
for (Iterator names = getNames().iterator(); names.hasNext(); ) {
PetName name = get((String)names.next());
for (Iterator iter = iterator(); iter.hasNext(); ) {
PetName name = (PetName)iter.next();
if (name != null)
out.write(name.toString() + "\n");
}

View File

@ -51,7 +51,7 @@ public class PetNameNamingService extends NamingService {
}
public Destination lookup(String hostname) {
PetName name = _petnameDb.get(hostname);
PetName name = _petnameDb.getName(hostname);
if (name != null && name.getNetwork().equalsIgnoreCase("i2p")) {
return lookupBase64(name.getLocation());
} else {
@ -60,6 +60,6 @@ public class PetNameNamingService extends NamingService {
}
public String reverseLookup(Destination dest) {
return _petnameDb.getNameByLocation(dest.toBase64());
return _petnameDb.getLocation(dest.toBase64()).getName();
}
}