|
From: Pelle B. <pe...@us...> - 2004-04-06 16:37:37
|
Update of /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/controllers/currency In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20268/src/java/org/neuclear/asset/controllers/currency Modified Files: CurrencyController.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: CurrencyController.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/controllers/currency/CurrencyController.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** CurrencyController.java 5 Apr 2004 22:54:04 -0000 1.23 --- CurrencyController.java 6 Apr 2004 16:24:33 -0000 1.24 *************** *** 3,8 **** --- 3,11 ---- import org.neuclear.asset.*; 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; + import org.neuclear.asset.orders.builders.IssueReceiptBuilder; import org.neuclear.asset.orders.builders.TransferReceiptBuilder; import org.neuclear.commons.NeuClearException; *************** *** 60,63 **** --- 63,97 ---- } + /** + * Issues an asset. Thus moving assets into circulation + * + * @param req IssueOrder + * @return Unsigned Receipt + * @throws org.neuclear.asset.LowLevelPaymentException + * + * @throws org.neuclear.asset.TransferDeniedException + * + * @throws org.neuclear.asset.InvalidTransferException + * + */ + public IssueReceipt process(IssueOrder req) throws LowLevelPaymentException, TransferDeniedException, InvalidTransferException, NeuClearException { + try { + if (!req.getSignatory().getName().equals(issuerBook)) + throw new InvalidTransferException("Only Issuer is allowed to issue"); + final PostedTransaction posted = ledger.transfer(req.getDigest(), req.getSignatory().getName(), req.getRecipient(), req.getAmount().getAmount(), req.getComment()); + final IssueReceipt receipt = (IssueReceipt) new IssueReceiptBuilder(req, posted.getTransactionTime()).convert(alias, signer); + ledger.setReceiptId(req.getDigest(), receipt.getDigest()); + return receipt; + } catch (LowlevelLedgerException e) { + throw new LowLevelPaymentException(e); + } catch (InvalidTransactionException e) { + throw new InvalidTransferException(e); + } catch (NegativeTransferException e) { + throw new InvalidTransferException("postive amount"); + } catch (UnknownTransactionException e) { + throw new LowLevelPaymentException(e); + } + } + public final ExchangeOrderReceipt process(final ExchangeOrder req) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { *************** *** 81,84 **** --- 115,120 ---- public final ExchangeCompletedReceipt process(final ExchangeCompletionOrder complete) throws LowLevelPaymentException, InvalidTransferException, TransferDeniedException, NeuClearException { try { + if (!complete.getSignatory().getPublicKey().equals(complete.getReceipt().getOrder().getAgent().getServiceKey())) + throw new InvalidTransferException("Only Agent is allowed to Sign Completion Order"); PostedTransaction tran = ledger.complete(complete.getReceipt().getOrder().getDigest(), complete.getAmount().getAmount(), complete.getComment()); ExchangeCompletedReceipt receipt = (ExchangeCompletedReceipt) new ExchangeCompletedReceiptBuilder(complete, tran.getTransactionTime()).convert(alias, signer); *************** *** 97,103 **** public final CancelExchangeReceipt process(final CancelExchangeOrder cancel) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { try { ! ledger.cancel(cancel.getReceipt().getOrder().getDigest()); ! return (CancelExchangeReceipt) new CancelExchangeReceiptBuilder(cancel, new Date()).convert(alias, signer); } catch (LowlevelLedgerException e) { throw new LowLevelPaymentException(e); --- 133,142 ---- public final CancelExchangeReceipt process(final CancelExchangeOrder cancel) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { + if (!(cancel.getSignatory().getName().equals(cancel.getReceipt().getOrder().getSignatory().getName()) + || cancel.getSignatory().getPublicKey().equals(cancel.getReceipt().getOrder().getAgent().getServiceKey()))) + throw new InvalidTransferException("Only Agent is allowed to Sign Completion Order"); try { ! final Date time = ledger.cancel(cancel.getReceipt().getOrder().getDigest()); ! return (CancelExchangeReceipt) new CancelExchangeReceiptBuilder(cancel, time).convert(alias, signer); } catch (LowlevelLedgerException e) { throw new LowLevelPaymentException(e); |