2121@ Slf4j
2222public class UpdateAssetActuator extends AbstractActuator {
2323
24- private UpdateAssetContract updateAssetContract ;
25-
26- private byte [] ownerAddress ;
27- private byte [] newUrl ;
28- private byte [] newDescription ;
29- private long newLimit ;
30- private long newPublicLimit ;
31-
32- private long fee ;
33-
3424 UpdateAssetActuator (Any contract , Manager dbManager ) {
3525 super (contract , dbManager );
36- try {
37- updateAssetContract = contract .unpack (UpdateAssetContract .class );
38- } catch (InvalidProtocolBufferException e ) {
39- logger .error (e .getMessage (), e );
40- }
41-
42- newLimit = updateAssetContract .getNewLimit ();
43- newPublicLimit = updateAssetContract .getNewPublicLimit ();
44- ownerAddress = updateAssetContract .getOwnerAddress ().toByteArray ();
45- newUrl = updateAssetContract .getUrl ().toByteArray ();
46- newDescription = updateAssetContract .getDescription ().toByteArray ();
47- fee = calcFee ();
4826 }
4927
5028 @ Override
5129 public boolean execute (TransactionResultCapsule ret ) throws ContractExeException {
30+ long fee = calcFee ();
5231 try {
32+ final UpdateAssetContract updateAssetContract = this .contract
33+ .unpack (UpdateAssetContract .class );
34+
35+ long newLimit = updateAssetContract .getNewLimit ();
36+ long newPublicLimit = updateAssetContract .getNewPublicLimit ();
37+ byte [] ownerAddress = updateAssetContract .getOwnerAddress ().toByteArray ();
38+ ByteString newUrl = updateAssetContract .getUrl ();
39+ ByteString newDescription = updateAssetContract .getDescription ();
40+
5341 AssetIssueStore assetIssueStore = dbManager .getAssetIssueStore ();
5442 AccountCapsule accountCapsule = dbManager .getAccountStore ().get (ownerAddress );
5543 AssetIssueCapsule assetIssueCapsule =
5644 assetIssueStore .get (accountCapsule .getAssetIssuedName ().toByteArray ());
5745
5846 assetIssueCapsule .setFreeAssetNetLimit (newLimit );
5947 assetIssueCapsule .setPublicFreeAssetNetLimit (newPublicLimit );
60- assetIssueCapsule .setUrl (ByteString . copyFrom ( newUrl ) );
61- assetIssueCapsule .setDescription (ByteString . copyFrom ( newDescription ) );
48+ assetIssueCapsule .setUrl (newUrl );
49+ assetIssueCapsule .setDescription (newDescription );
6250 assetIssueStore .put (assetIssueCapsule .createDbKey (), assetIssueCapsule );
6351
6452 ret .setStatus (fee , code .SUCESS );
@@ -73,15 +61,32 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException
7361
7462 @ Override
7563 public boolean validate () throws ContractValidateException {
64+
65+ if (this .contract == null ) {
66+ throw new ContractValidateException ("No contract!" );
67+ }
7668 if (this .dbManager == null ) {
7769 throw new ContractValidateException ("No dbManager!" );
7870 }
79- if (updateAssetContract == null ) {
71+ if (! this . contract . is ( UpdateAssetContract . class ) ) {
8072 throw new ContractValidateException (
81- "contract type error,expected type [UpdateAssetContract],real type["
82- + contract .getClass () + "]" );
73+ "contract type error,expected type [UpdateAssetContract],real type[" + contract
74+ .getClass () + "]" );
75+ }
76+ final UpdateAssetContract updateAssetContract ;
77+ try {
78+ updateAssetContract = this .contract .unpack (UpdateAssetContract .class );
79+ } catch (InvalidProtocolBufferException e ) {
80+ logger .debug (e .getMessage (), e );
81+ throw new ContractValidateException (e .getMessage ());
8382 }
8483
84+ long newLimit = updateAssetContract .getNewLimit ();
85+ long newPublicLimit = updateAssetContract .getNewPublicLimit ();
86+ byte [] ownerAddress = updateAssetContract .getOwnerAddress ().toByteArray ();
87+ ByteString newUrl = updateAssetContract .getUrl ();
88+ ByteString newDescription = updateAssetContract .getDescription ();
89+
8590 if (!Wallet .addressValid (ownerAddress )) {
8691 throw new ContractValidateException ("Invalid ownerAddress" );
8792 }
@@ -97,11 +102,11 @@ public boolean validate() throws ContractValidateException {
97102
98103 assert (dbManager .getAssetIssueStore ().get (account .getAssetIssuedName ().toByteArray ()) != null );
99104
100- if ((newUrl != null ) && (!TransactionUtil .validUrl (newUrl ))) {
105+ if ((newUrl != null ) && (!TransactionUtil .validUrl (newUrl . toByteArray () ))) {
101106 throw new ContractValidateException ("Invalid url" );
102107 }
103108
104- if ((newDescription != null ) && (!TransactionUtil .validAssetDescription (newDescription ))) {
109+ if ((newDescription != null ) && (!TransactionUtil .validAssetDescription (newDescription . toByteArray () ))) {
105110 throw new ContractValidateException ("Invalid description" );
106111 }
107112
0 commit comments