|
From: Pelle B. <pe...@us...> - 2004-04-06 16:37:38
|
Update of /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20268/src/java/org/neuclear/asset Modified Files: AssetController.java Auditor.java Log Message: Added two new Data Objects IssuerOrder and IssueReceipt for managing the issuance process. Added Issuance support to the Asset and Audit Controllers. Implemented access control for complete and cancel exchange orders. Index: AssetController.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/AssetController.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** AssetController.java 5 Apr 2004 16:31:42 -0000 1.15 --- AssetController.java 6 Apr 2004 16:24:34 -0000 1.16 *************** *** 1,4 **** --- 1,6 ---- package org.neuclear.asset; + import org.neuclear.asset.orders.IssueOrder; + import org.neuclear.asset.orders.IssueReceipt; import org.neuclear.asset.orders.TransferOrder; import org.neuclear.asset.orders.TransferReceipt; *************** *** 30,33 **** --- 32,40 ---- $Id$ $Log$ + Revision 1.16 2004/04/06 16:24:34 pelle + Added two new Data Objects IssuerOrder and IssueReceipt for managing the issuance process. + Added Issuance support to the Asset and Audit Controllers. + Implemented access control for complete and cancel exchange orders. + Revision 1.15 2004/04/05 16:31:42 pelle Created new ServiceBuilder class for creating services. A service is an identity that has a seperate service URL and Service Public Key. *************** *** 130,133 **** --- 137,142 ---- if (contract instanceof TransferOrder) return process((TransferOrder) contract); + if (contract instanceof IssueOrder) + return process((IssueOrder) contract); if (contract instanceof ExchangeOrder) return process((ExchangeOrder) contract); *************** *** 168,171 **** --- 177,191 ---- /** + * Issues an asset. Thus moving assets into circulation + * + * @param req IssueOrder + * @return Unsigned Receipt + * @throws LowLevelPaymentException + * @throws TransferDeniedException + * @throws InvalidTransferException + */ + public abstract IssueReceipt process(IssueOrder req) throws LowLevelPaymentException, TransferDeniedException, InvalidTransferException, NeuClearException; + + /** * Creates a HeldTransfer. This gives the recipient right within a limited period to "complete" the Transfer. * Completion means performing the actual transfer with an amount up to but not greater than the amount set in the Index: Auditor.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/Auditor.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Auditor.java 5 Apr 2004 22:54:05 -0000 1.3 --- Auditor.java 6 Apr 2004 16:24:34 -0000 1.4 *************** *** 2,5 **** --- 2,7 ---- import org.neuclear.asset.contracts.Asset; + import org.neuclear.asset.orders.IssueOrder; + import org.neuclear.asset.orders.IssueReceipt; import org.neuclear.asset.orders.TransferOrder; import org.neuclear.asset.orders.TransferReceipt; *************** *** 32,35 **** --- 34,42 ---- $Id$ $Log$ + Revision 1.4 2004/04/06 16:24:34 pelle + Added two new Data Objects IssuerOrder and IssueReceipt for managing the issuance process. + Added Issuance support to the Asset and Audit Controllers. + Implemented access control for complete and cancel exchange orders. + Revision 1.3 2004/04/05 22:54:05 pelle API changes in Ledger to support Auditor and CurrencyController in Pay *************** *** 144,153 **** if (contract instanceof TransferReceipt) process((TransferReceipt) contract); if (contract instanceof ExchangeOrderReceipt) process((ExchangeOrderReceipt) contract); if (contract instanceof ExchangeCompletedReceipt) process((ExchangeCompletedReceipt) contract); - if (contract instanceof TransferOrder) - process((TransferOrder) contract); if (contract instanceof ExchangeOrder) process((ExchangeOrder) contract); --- 151,160 ---- if (contract instanceof TransferReceipt) process((TransferReceipt) contract); + if (contract instanceof TransferOrder) + process((TransferOrder) contract); if (contract instanceof ExchangeOrderReceipt) process((ExchangeOrderReceipt) contract); if (contract instanceof ExchangeCompletedReceipt) process((ExchangeCompletedReceipt) contract); if (contract instanceof ExchangeOrder) process((ExchangeOrder) contract); *************** *** 156,159 **** --- 163,170 ---- if (contract instanceof CancelExchangeReceipt) process((CancelExchangeReceipt) contract); + if (contract instanceof IssueReceipt) + process((IssueReceipt) contract); + if (contract instanceof IssueOrder) + process((IssueOrder) contract); } catch (LowLevelPaymentException e) { throw new NeuClearException(e); *************** *** 194,197 **** --- 205,234 ---- } + public final void process(final IssueReceipt receipt) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { + try { + final IssueOrder req = receipt.getOrder(); + if (req.getSignatory().getPublicKey().equals(asset.getIssuerKey())) { + if (!ledger.transactionExists(req.getDigest())) + process(req); + ledger.setReceiptId(req.getDigest(), receipt.getDigest()); + } + } catch (LowlevelLedgerException e) { + throw new LowLevelPaymentException(e); + } catch (UnknownTransactionException e) { + throw new LowLevelPaymentException(e); + } + } + + public final void process(final IssueOrder req) throws InvalidTransferException, LowLevelPaymentException { + try { + if (req.getSignatory().getPublicKey().equals(asset.getIssuerKey())) + ledger.transfer(req.getDigest(), req.getSignatory().getName(), req.getRecipient(), req.getAmount().getAmount(), req.getComment()); + } catch (LowlevelLedgerException e) { + throw new LowLevelPaymentException(e); + } catch (InvalidTransactionException e) { + throw new InvalidTransferException(e.getSubMessage()); + } + } + public final void process(final ExchangeOrderReceipt receipt) throws LowLevelPaymentException, InvalidTransferException { try { *************** *** 257,261 **** private final Ledger ledger; ! private final Service asset; } --- 294,298 ---- private final Ledger ledger; ! private final Asset asset; } |