|
From: Pelle B. <pe...@us...> - 2004-04-17 19:29:00
|
Update of /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/id/builders In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30148/src/java/org/neuclear/id/builders Modified Files: Builder.java IdentityBuilder.java ServiceBuilder.java Log Message: Identity is now fully html based as is the ServiceBuilder. VerifyingReader correctly identifies html files and parses them as such. Targets and Target now parse html link tags AssetBuilder and ExchangeAgentBuilder have been updated to support it and provide html formatted contracts. The Asset.Reader and ExchangeAgent.Reader still need to be updated. Index: IdentityBuilder.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/id/builders/IdentityBuilder.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** IdentityBuilder.java 1 Apr 2004 23:19:47 -0000 1.21 --- IdentityBuilder.java 17 Apr 2004 19:28:21 -0000 1.22 *************** *** 2,5 **** --- 2,12 ---- * $Id$ * $Log$ + * Revision 1.22 2004/04/17 19:28:21 pelle + * Identity is now fully html based as is the ServiceBuilder. + * VerifyingReader correctly identifies html files and parses them as such. + * Targets and Target now parse html link tags + * AssetBuilder and ExchangeAgentBuilder have been updated to support it and provide html formatted contracts. + * The Asset.Reader and ExchangeAgent.Reader still need to be updated. + * * Revision 1.21 2004/04/01 23:19:47 pelle * Split Identity into Signatory and Identity class. *************** *** 235,276 **** import org.dom4j.Element; - import org.dom4j.QName; import org.neuclear.commons.Utility; - import org.neuclear.id.Identity; - import org.neuclear.id.InvalidNamedObjectException; public class IdentityBuilder extends Builder { ! public IdentityBuilder() throws InvalidNamedObjectException { ! this(Identity.DEFAULT_SIGNER); ! } ! ! /** ! * It creates a Standard Identity document, but doesn't sign it. ! * ! * @param signer URL of default interactive signing service for namespace. If null it doesnt allow interactive signing ! * @param receiver URL of default receiver for namespace ! */ ! ! public IdentityBuilder(final String signer, final String logger, final String receiver) throws InvalidNamedObjectException { ! this(createNEUIDQName(TAGNAME), signer, logger, receiver); } - public IdentityBuilder(final String signer) throws InvalidNamedObjectException { - this(createNEUIDQName(TAGNAME), signer); - } /** * This constructor should be used by subclasses of Identity. It creates a Standard Identity document, but doesn't sign it. * - * @param tag The Tag used by this sub class - * @param signer URL of default interactive signing service for namespace. If null it doesnt allow interactive signing * @param receiver URL of default receiver for namespace */ ! protected IdentityBuilder(final QName tag, final String signer, final String logger, final String receiver) throws InvalidNamedObjectException { ! this(tag, signer); - addTarget(logger, "logger"); - addTarget(receiver, "inbox"); } --- 242,266 ---- import org.dom4j.Element; import org.neuclear.commons.Utility; public class IdentityBuilder extends Builder { ! public IdentityBuilder() { ! this(TYPENAME); } /** * This constructor should be used by subclasses of Identity. It creates a Standard Identity document, but doesn't sign it. * * @param receiver URL of default receiver for namespace */ ! public IdentityBuilder(final String name, final String receiver, final String message) { ! this(); ! addTarget(receiver, "receiver"); ! head.addElement("title").setText(name); ! body.addElement("h1").setText(name); ! body.addElement("p").setText(message); } *************** *** 278,301 **** * This constructor should be used by subclasses of Identity. It creates a Standard Identity document, but doesn't sign it. * ! * @param tag The Tag used by this sub class ! * @param signer URL of default interactive signing service for namespace. If null it doesnt allow interactive signing */ ! protected IdentityBuilder(final QName tag, final String signer) throws InvalidNamedObjectException { ! super(tag); ! ! final Element root = getElement(); ! addLineBreak(); ! if (!Utility.isEmpty(signer)) ! addElement("Signer", signer); } ! private void addTarget(final String href, final String type) { ! if (!Utility.isEmpty(href)) ! addElement("Target", href).addAttribute("type", type); } ! private static final String TAGNAME = "Identity"; --- 268,293 ---- * This constructor should be used by subclasses of Identity. It creates a Standard Identity document, but doesn't sign it. * ! * @param type The type identifier */ ! protected IdentityBuilder(String type) { ! super("html"); ! head = getElement().addElement("head"); ! body = getElement().addElement("body"); } ! protected final void addTarget(final String href, final String type) { ! if (!Utility.isEmpty(href)) { ! final Element target = head.addElement("link"); ! target.addAttribute("rel", "neu:" + type); ! target.addAttribute("href", href); ! } } ! protected final Element head; ! protected final Element body; ! ! private static final String TYPENAME = "Identity"; Index: Builder.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/id/builders/Builder.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Builder.java 12 Apr 2004 15:00:54 -0000 1.7 --- Builder.java 17 Apr 2004 19:28:21 -0000 1.8 *************** *** 27,30 **** --- 27,34 ---- } + public Builder(final String name) { + super(name); + } + public Builder(final String name, final Namespace ns) { super(name, ns); Index: ServiceBuilder.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/id/builders/ServiceBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ServiceBuilder.java 5 Apr 2004 16:32:52 -0000 1.1 --- ServiceBuilder.java 17 Apr 2004 19:28:21 -0000 1.2 *************** *** 1,7 **** package org.neuclear.id.builders; - import org.dom4j.DocumentHelper; import org.dom4j.Element; ! import org.dom4j.QName; import org.neuclear.id.InvalidNamedObjectException; import org.neuclear.xml.xmlsec.KeyInfo; --- 1,8 ---- package org.neuclear.id.builders; import org.dom4j.Element; ! import org.neuclear.commons.crypto.Base32; ! import org.neuclear.commons.crypto.Base64; ! import org.neuclear.commons.crypto.CryptoTools; import org.neuclear.id.InvalidNamedObjectException; import org.neuclear.xml.xmlsec.KeyInfo; *************** *** 12,15 **** --- 13,23 ---- $Id$ $Log$ + Revision 1.2 2004/04/17 19:28:21 pelle + Identity is now fully html based as is the ServiceBuilder. + VerifyingReader correctly identifies html files and parses them as such. + Targets and Target now parse html link tags + AssetBuilder and ExchangeAgentBuilder have been updated to support it and provide html formatted contracts. + The Asset.Reader and ExchangeAgent.Reader still need to be updated. + Revision 1.1 2004/04/05 16:32:52 pelle Created new ServiceBuilder class for creating services. A service is an identity that has a seperate service URL and Service Public Key. *************** *** 23,35 **** */ public class ServiceBuilder extends IdentityBuilder { ! public ServiceBuilder(final QName tag, final String serviceUrl, PublicKey serviceKey) throws InvalidNamedObjectException { ! super(tag, null); ! final Element serviceElem = DocumentHelper.createElement(createNEUIDQName("Service")); ! serviceElem.add(new KeyInfo(serviceKey).getElement()); ! final Element urlElem = DocumentHelper.createElement(createNEUIDQName("Url")); ! urlElem.setText(serviceUrl); ! serviceElem.add(urlElem); ! getElement().add(serviceElem); } } --- 31,101 ---- */ public class ServiceBuilder extends IdentityBuilder { ! public ServiceBuilder(final String type, final String title, final String serviceUrl, PublicKey serviceKey) throws InvalidNamedObjectException { ! super(type); ! addTarget(serviceUrl, "controller"); ! ! body.addElement("h1").setText(title); ! description = body.addElement("div"); ! description.addAttribute("id", "rules"); ! ! body.addElement("h3").setText("Features"); ! ! proptable = body.addElement("table"); ! Element tr = proptable.addElement("tr"); ! tr.addElement("th").setText("Type"); ! tr.addElement("th").setText("Value"); ! tr.addElement("th").setText("Description"); ! ! body.addElement("h3").setText("Keys"); ! pktable = body.addElement("table"); ! // pktable.addAttribute("class","pktable"); ! tr = pktable.addElement("tr"); ! // tr.addAttribute("class","tablehead"); ! tr.addElement("th").setText("Type"); ! tr.addElement("th").setText("Key ID"); ! tr.addElement("th").setText("PublicKey"); ! + body.addElement("h3").setText("Rules"); + rules = body.addElement("div"); + rules.addAttribute("id", "rules"); + addKeyInfo("controller.publickey", serviceKey, "Service Controllers Public Key"); + addFeature("controller.url", "Controller", serviceUrl, "The address of the service control server."); + } + + protected void addKeyInfo(final String label, final PublicKey pub, final String description) { + KeyInfo ki = new KeyInfo(pub); + ki.getElement().addAttribute("id", label); + ki.getElement().addAttribute("style", "display:none"); + body.add(ki.getElement()); + Element tr = pktable.addElement("tr"); + // tr.addAttribute("class","pktablehead"); + tr.addElement("td").setText(description); + tr.addElement("td").addElement("pre").setText(Base32.encode(CryptoTools.digest(pub.getEncoded()))); + tr.addElement("td").addElement("pre").setText(Base64.encodeClean(pub.getEncoded())); } + + protected void addFeature(final String id, final String name, final String value, final String description) { + Element tr = proptable.addElement("tr"); + // tr.addAttribute("class","pktablehead"); + tr.addElement("td").setText(name); + final Element val = tr.addElement("td"); + val.setText(value); + val.addAttribute("id", id); + tr.addElement("td").setText(description); + } + + public Element getDescription() { + return description; + } + + public Element getRules() { + return rules; + } + + protected final Element pktable; + protected final Element proptable; + protected final Element description; + protected final Element rules; } + |