|
From: Pelle B. <pe...@us...> - 2004-04-05 22:21:39
|
Update of /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/controllers/currency In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27426/src/java/org/neuclear/asset/controllers/currency Modified Files: CurrencyController.java Log Message: CurrencyController and AuditController now now pass all unit tests in CurrencyTests. Index: CurrencyController.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-pay/src/java/org/neuclear/asset/controllers/currency/CurrencyController.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** CurrencyController.java 5 Apr 2004 17:07:59 -0000 1.21 --- CurrencyController.java 5 Apr 2004 22:08:22 -0000 1.22 *************** *** 2,5 **** --- 2,6 ---- import org.neuclear.asset.*; + import org.neuclear.asset.contracts.Asset; import org.neuclear.asset.orders.TransferOrder; import org.neuclear.asset.orders.TransferReceipt; *************** *** 8,17 **** import org.neuclear.commons.crypto.signers.Signer; import org.neuclear.exchange.orders.*; ! import org.neuclear.id.Identity; import org.neuclear.id.Service; ! import org.neuclear.id.resolver.Resolver; import org.neuclear.ledger.*; ! import java.util.Iterator; /** --- 9,20 ---- import org.neuclear.commons.crypto.signers.Signer; import org.neuclear.exchange.orders.*; ! import org.neuclear.exchange.orders.builders.CancelExchangeReceiptBuilder; ! import org.neuclear.exchange.orders.builders.ExchangeCompletedReceiptBuilder; ! import org.neuclear.exchange.orders.builders.ExchangeOrderReceiptBuilder; import org.neuclear.id.Service; ! import org.neuclear.id.Signatory; import org.neuclear.ledger.*; ! import java.util.Date; /** *************** *** 25,34 **** // this(LedgerFactory.getInstance().getLedger(ledgername),title,reserve); // } ! public CurrencyController(final Ledger ledger, final Signer signer, final String assetname) throws LowlevelLedgerException, NeuClearException { super(); this.ledger = ledger; this.signer = signer; ! asset = (Service) Resolver.resolveIdentity(assetname); ! issuerBook = asset.getName(); } --- 28,38 ---- // this(LedgerFactory.getInstance().getLedger(ledgername),title,reserve); // } ! public CurrencyController(final Ledger ledger, final Asset asset, final Signer signer, final String alias) throws LowlevelLedgerException, NeuClearException { super(); this.ledger = ledger; this.signer = signer; ! this.asset = asset; ! this.alias = alias; ! issuerBook = new Signatory(asset.getIssuerKey()).getName(); } *************** *** 42,46 **** final PostedTransaction posted = ledger.verifiedTransfer(req.getDigest(), req.getSignatory().getName(), req.getRecipient(), req.getAmount().getAmount(), req.getComment()); ! final TransferReceipt receipt = (TransferReceipt) new TransferReceiptBuilder(req, posted.getTransactionTime()).convert(asset.getName(), signer); ledger.setReceiptId(req.getDigest(), receipt.getDigest()); return receipt; --- 46,50 ---- final PostedTransaction posted = ledger.verifiedTransfer(req.getDigest(), req.getSignatory().getName(), req.getRecipient(), req.getAmount().getAmount(), req.getComment()); ! final TransferReceipt receipt = (TransferReceipt) new TransferReceiptBuilder(req, posted.getTransactionTime()).convert(alias, signer); ledger.setReceiptId(req.getDigest(), receipt.getDigest()); return receipt; *************** *** 57,178 **** - /** - * Returns balance for a given Identity. - * This is a temporary method and will be replaced by a full BalanceRequestContract etc. - * - * @param id - * @return - * @throws LowLevelPaymentException - */ - public double getBalance(final String id) throws LowLevelPaymentException { - try { - return ledger.getBalance(id); - } catch (LowlevelLedgerException e) { - throw new LowLevelPaymentException(e); - } - } - - public final ExchangeOrderReceipt process(final ExchangeOrder req) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { - /* try { - final PostedHeldTransaction posted = ledger.hold(to, req.getAmount().getAmount(), req.getComment(), valuetime,req.getExpiry()); ! return (ExchangeOrderReceipt) new ExchangeOrderReceiptBuilder(req, valuetime).convert(asset.getName(),signer); ! } catch (UnknownBookException e) { //TODO Implement something like this eg. AccountNotValidException ! throw new InvalidTransferException(e.getSubMessage()); } catch (LowlevelLedgerException e) { throw new LowLevelPaymentException(e); } catch (InvalidTransactionException e) { throw new InvalidTransferException(e.getSubMessage()); - } catch (UnBalancedTransactionException e) { - throw new InvalidTransferException("unbalanced"); } catch (NegativeTransferException e) { throw new InvalidTransferException("postive amount"); } - */ - return null; } public final ExchangeCompletedReceipt process(final ExchangeCompletionOrder complete) throws LowLevelPaymentException, InvalidTransferException, TransferDeniedException, NeuClearException { - /* try { ! // ! final PostedHeldTransaction heldTran = ledger.findHeldTransaction(complete.getReceipt().getOrder().getDigest()); ! if (heldTran == null) ! throw new InvalidTransferException("holdid"); ! final double amount = getTransactionAmount(heldTran); ! if (amount > complete.getAmount().getAmount()) ! throw new TransferLargerThanHeldException(complete, amount); ! if (complete.getAmount().getAmount() < 0) ! throw new NegativeTransferException(complete.getAmount()); ! if (heldTran.getExpiryTime().before(complete.getExchangeTime()) || heldTran.getTransactionTime().after(complete.getExchangeTime())) ! throw new ExpiredHeldTransferException(complete); ! ! final PostedTransaction tran = heldTran.complete(complete.getAmount().getAmount(), complete.getExchangeTime(), complete.getComment()); ! return (ExchangeCompletedReceipt) new ExchangeCompletedReceiptBuilder(complete,TimeTools.now()).convert(asset.getName(),signer); } catch (UnknownTransactionException e) { ! throw new NonExistantHoldException(complete.getReceipt().getOrder().getDigest()); } catch (TransactionExpiredException e) { ! throw new ExpiredHeldTransferException(complete); } catch (InvalidTransactionException e) { throw new InvalidTransferException(e.getLocalizedMessage()); - } catch (LowlevelLedgerException e) { - throw new LowLevelPaymentException(e); } - */ return null; } public final CancelExchangeReceipt process(final CancelExchangeOrder cancel) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { - /* try { ! final PostedHeldTransaction heldTran = ledger.findHeldTransaction(cancel.getReceipt().getOrder().getDigest()); ! if (!isRecipient(cancel.getSignatory(), heldTran)) ! throw new TransferDeniedException(cancel); ! heldTran.cancel(); ! return (CancelExchangeReceipt) new CancelExchangeReceiptBuilder(cancel,TimeTools.now()).convert(asset.getName(),signer); ! } catch (UnknownTransactionException e) { ! throw new NonExistantHoldException(cancel.getReceipt().getOrder().getDigest()); } catch (LowlevelLedgerException e) { throw new LowLevelPaymentException(e); } - */ return null; - } - - - /** - * Little tool to return the amount of a ledger transaction. - * It returns the sum of all the positive values. - * - * @param tran - * @return - */ - private static double getTransactionAmount(final PostedTransaction tran) { - final Iterator iter = tran.getItems(); - double amount = 0; - while (iter.hasNext()) { - final TransactionItem item = (TransactionItem) iter.next(); - if (item.getAmount() > 0) - amount += item.getAmount(); - } - return amount; } - /** - * Utility to verify if the identity is a recepient of funds in a given transaction - * - * @param id - * @param tran - * @return - */ - private static boolean isRecipient(final Identity id, final PostedTransaction tran) { - final Iterator iter = tran.getItems(); - while (iter.hasNext()) { - final TransactionItem item = (TransactionItem) iter.next(); - if (item.getAmount() >= 0 && item.getBook().equals(id.getName())) - return true; - } - return false; - } private final Ledger ledger; --- 61,110 ---- public final ExchangeOrderReceipt process(final ExchangeOrder req) throws InvalidTransferException, LowLevelPaymentException, TransferDeniedException, NeuClearException { try { ! final PostedHeldTransaction posted = ledger.hold(req.getDigest(), req.getSignatory().getName(), req.getAgent().getSignatory().getName(), req.getExpiry(), req.getAmount().getAmount(), req.getComment()); ! final ExchangeOrderReceipt receipt = (ExchangeOrderReceipt) new ExchangeOrderReceiptBuilder(req, posted.getTransactionTime()).convert(alias, signer); ! ledger.setHeldReceiptId(req.getDigest(), receipt.getDigest()); ! return receipt; } catch (LowlevelLedgerException e) { throw new LowLevelPaymentException(e); } catch (InvalidTransactionException e) { throw new InvalidTransferException(e.getSubMessage()); } catch (NegativeTransferException e) { throw new InvalidTransferException("postive amount"); + } catch (UnknownTransactionException e) { + throw new LowLevelPaymentException(e); } } public final ExchangeCompletedReceipt process(final ExchangeCompletionOrder complete) throws LowLevelPaymentException, InvalidTransferException, TransferDeniedException, NeuClearException { try { ! PostedTransaction tran = ledger.complete(complete.getReceipt().getOrder().getDigest(), complete.getAmount().getAmount(), complete.getComment()); ! ExchangeCompletedReceipt receipt = (ExchangeCompletedReceipt) new ExchangeCompletedReceiptBuilder(complete, tran.getTransactionTime()).convert(alias, signer); ! ledger.setReceiptId(complete.getReceipt().getOrder().getDigest(), receipt.getDigest()); ! return receipt; ! } catch (LowlevelLedgerException e) { ! throw new LowLevelPaymentException(e); } catch (UnknownTransactionException e) { ! throw new InvalidTransferException(e.getLocalizedMessage()); } catch (TransactionExpiredException e) { ! throw new InvalidTransferException(e.getLocalizedMessage()); } catch (InvalidTransactionException e) { throw new InvalidTransferException(e.getLocalizedMessage()); } } 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); + } catch (UnknownTransactionException e) { + throw new InvalidTransferException(e.getLocalizedMessage()); } } private final Ledger ledger; *************** *** 180,182 **** --- 112,115 ---- private final String issuerBook; private final Signer signer; + private final String alias; } |