universa 3.11.4.2 → 3.11.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4dc48dd7a2c4439feca486ee1898f186005c383bb9887c47e91144064eeda405
4
- data.tar.gz: 32f4cede12c7977effc924295b769d9274952c2b0d2edfd68a784f74e87ffbe1
3
+ metadata.gz: ecdb1da351f0651000bc274335423714f448538235a3061462059d1f47e4c64f
4
+ data.tar.gz: fb3eec37f962b4b9f833e5cf9ec02684609fbf2817102ee224c22bcfb8619f34
5
5
  SHA512:
6
- metadata.gz: d23f3bcc176f4773f14073d82564ae23f68bd3d355c92425127a6ea883dbf079927d58d94ddbe4420d5365f655e6b1b1cd900de89341ff1d4338a5ef3c59f66e
7
- data.tar.gz: 2f6c3c7c7a2ea0a95b3747f4d9222e836c52dcac32a3eb8b7bed11959ab0b8502c4cfff9792ef5c7e56ed595a9ddf392a3637c48d623e302344cbe01d837758f
6
+ metadata.gz: 04f306bb9766b8972f47cc3c66a54924dbe4d4a82d1e6600bbed710319304c9bd584867b1c0128598bad58634ad89a3beddafd501a96a9dd26b80c1672a631c8
7
+ data.tar.gz: 8f2572a74a9f7b014c415759d9e58fadcb953312fbcf158dd2d7d94534406c9e38a5d93639f4cf20a565c1573e67999a5f0e25b68c9a5ce5e592dbccabed9305
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ Gemfile.lock
17
17
  /*.private.unikey
18
18
  /umi.log
19
19
  /umisession.log
20
+ /umisession.log
@@ -344,7 +344,7 @@ declare -r lib_dir="$(realpath "${app_home}/../lib")"
344
344
  declare -a app_mainclass=(com.icodici.farcallscala.Main)
345
345
 
346
346
  declare -r script_conf_file="${app_home}/../conf/application.ini"
347
- declare -r app_classpath="$lib_dir/com.icodici.umi-0.8.57.jar:$lib_dir/org.scala-lang.scala-library-2.12.7.jar:$lib_dir/com.icodici.universa_core-3.11.4.2.jar:$lib_dir/org.yaml.snakeyaml-1.18.jar:$lib_dir/com.icodici.nanohttpd-2.1.0.jar:$lib_dir/com.icodici.common_tools-3.11.4.2.jar:$lib_dir/com.eclipsesource.minimal-json.minimal-json-0.9.4.jar:$lib_dir/net.java.dev.jna.jna-4.5.1.jar:$lib_dir/org.checkerframework.checker-qual-2.3.2.jar:$lib_dir/com.icodici.crypto-3.11.4.2.jar:$lib_dir/org.bouncycastle.bcprov-jdk15on-1.62.jar:$lib_dir/com.squareup.jnagmp.jnagmp-2.0.0.jar:$lib_dir/com.typesafe.play.play-json_2.12-2.6.10.jar:$lib_dir/com.typesafe.play.play-functional_2.12-2.6.10.jar:$lib_dir/org.scala-lang.scala-reflect-2.12.7.jar:$lib_dir/org.typelevel.macro-compat_2.12-1.1.1.jar:$lib_dir/joda-time.joda-time-2.9.9.jar:$lib_dir/com.fasterxml.jackson.core.jackson-core-2.8.11.jar:$lib_dir/com.fasterxml.jackson.core.jackson-annotations-2.8.11.jar:$lib_dir/com.fasterxml.jackson.datatype.jackson-datatype-jdk8-2.8.11.jar:$lib_dir/com.fasterxml.jackson.core.jackson-databind-2.8.11.1.jar:$lib_dir/com.fasterxml.jackson.datatype.jackson-datatype-jsr310-2.8.11.jar:$lib_dir/org.scala-sbt.ipcsocket.ipcsocket-1.0.0.jar:$lib_dir/net.java.dev.jna.jna-platform-4.5.0.jar:$lib_dir/net.sf.jopt-simple.jopt-simple-4.9.jar"
347
+ declare -r app_classpath="$lib_dir/com.icodici.umi-0.8.58.jar:$lib_dir/org.scala-lang.scala-library-2.12.7.jar:$lib_dir/com.icodici.universa_core-3.11.4.2.jar:$lib_dir/org.yaml.snakeyaml-1.18.jar:$lib_dir/com.icodici.nanohttpd-2.1.0.jar:$lib_dir/com.icodici.common_tools-3.11.4.2.jar:$lib_dir/com.eclipsesource.minimal-json.minimal-json-0.9.4.jar:$lib_dir/net.java.dev.jna.jna-4.5.1.jar:$lib_dir/org.checkerframework.checker-qual-2.3.2.jar:$lib_dir/com.icodici.crypto-3.11.4.2.jar:$lib_dir/org.bouncycastle.bcprov-jdk15on-1.62.jar:$lib_dir/com.squareup.jnagmp.jnagmp-2.0.0.jar:$lib_dir/com.typesafe.play.play-json_2.12-2.6.10.jar:$lib_dir/com.typesafe.play.play-functional_2.12-2.6.10.jar:$lib_dir/org.scala-lang.scala-reflect-2.12.7.jar:$lib_dir/org.typelevel.macro-compat_2.12-1.1.1.jar:$lib_dir/joda-time.joda-time-2.9.9.jar:$lib_dir/com.fasterxml.jackson.core.jackson-core-2.8.11.jar:$lib_dir/com.fasterxml.jackson.core.jackson-annotations-2.8.11.jar:$lib_dir/com.fasterxml.jackson.datatype.jackson-datatype-jdk8-2.8.11.jar:$lib_dir/com.fasterxml.jackson.core.jackson-databind-2.8.11.1.jar:$lib_dir/com.fasterxml.jackson.datatype.jackson-datatype-jsr310-2.8.11.jar:$lib_dir/org.scala-sbt.ipcsocket.ipcsocket-1.0.0.jar:$lib_dir/net.java.dev.jna.jna-platform-4.5.0.jar:$lib_dir/net.sf.jopt-simple.jopt-simple-4.9.jar"
348
348
 
349
349
  # java_cmd is overrode in process_args when -java-home is used
350
350
  declare java_cmd=$(get_java_cmd)
@@ -80,7 +80,7 @@ rem "-J" is stripped, "-D" is left as is, and everything is appended to JAVA_OPT
80
80
  set _JAVA_PARAMS=
81
81
  set _APP_ARGS=
82
82
 
83
- set "APP_CLASSPATH=%APP_LIB_DIR%\com.icodici.umi-0.8.57.jar;%APP_LIB_DIR%\org.scala-lang.scala-library-2.12.7.jar;%APP_LIB_DIR%\com.icodici.universa_core-3.11.4.2.jar;%APP_LIB_DIR%\org.yaml.snakeyaml-1.18.jar;%APP_LIB_DIR%\com.icodici.nanohttpd-2.1.0.jar;%APP_LIB_DIR%\com.icodici.common_tools-3.11.4.2.jar;%APP_LIB_DIR%\com.eclipsesource.minimal-json.minimal-json-0.9.4.jar;%APP_LIB_DIR%\net.java.dev.jna.jna-4.5.1.jar;%APP_LIB_DIR%\org.checkerframework.checker-qual-2.3.2.jar;%APP_LIB_DIR%\com.icodici.crypto-3.11.4.2.jar;%APP_LIB_DIR%\org.bouncycastle.bcprov-jdk15on-1.62.jar;%APP_LIB_DIR%\com.squareup.jnagmp.jnagmp-2.0.0.jar;%APP_LIB_DIR%\com.typesafe.play.play-json_2.12-2.6.10.jar;%APP_LIB_DIR%\com.typesafe.play.play-functional_2.12-2.6.10.jar;%APP_LIB_DIR%\org.scala-lang.scala-reflect-2.12.7.jar;%APP_LIB_DIR%\org.typelevel.macro-compat_2.12-1.1.1.jar;%APP_LIB_DIR%\joda-time.joda-time-2.9.9.jar;%APP_LIB_DIR%\com.fasterxml.jackson.core.jackson-core-2.8.11.jar;%APP_LIB_DIR%\com.fasterxml.jackson.core.jackson-annotations-2.8.11.jar;%APP_LIB_DIR%\com.fasterxml.jackson.datatype.jackson-datatype-jdk8-2.8.11.jar;%APP_LIB_DIR%\com.fasterxml.jackson.core.jackson-databind-2.8.11.1.jar;%APP_LIB_DIR%\com.fasterxml.jackson.datatype.jackson-datatype-jsr310-2.8.11.jar;%APP_LIB_DIR%\org.scala-sbt.ipcsocket.ipcsocket-1.0.0.jar;%APP_LIB_DIR%\net.java.dev.jna.jna-platform-4.5.0.jar;%APP_LIB_DIR%\net.sf.jopt-simple.jopt-simple-4.9.jar"
83
+ set "APP_CLASSPATH=%APP_LIB_DIR%\com.icodici.umi-0.8.58.jar;%APP_LIB_DIR%\org.scala-lang.scala-library-2.12.7.jar;%APP_LIB_DIR%\com.icodici.universa_core-3.11.4.2.jar;%APP_LIB_DIR%\org.yaml.snakeyaml-1.18.jar;%APP_LIB_DIR%\com.icodici.nanohttpd-2.1.0.jar;%APP_LIB_DIR%\com.icodici.common_tools-3.11.4.2.jar;%APP_LIB_DIR%\com.eclipsesource.minimal-json.minimal-json-0.9.4.jar;%APP_LIB_DIR%\net.java.dev.jna.jna-4.5.1.jar;%APP_LIB_DIR%\org.checkerframework.checker-qual-2.3.2.jar;%APP_LIB_DIR%\com.icodici.crypto-3.11.4.2.jar;%APP_LIB_DIR%\org.bouncycastle.bcprov-jdk15on-1.62.jar;%APP_LIB_DIR%\com.squareup.jnagmp.jnagmp-2.0.0.jar;%APP_LIB_DIR%\com.typesafe.play.play-json_2.12-2.6.10.jar;%APP_LIB_DIR%\com.typesafe.play.play-functional_2.12-2.6.10.jar;%APP_LIB_DIR%\org.scala-lang.scala-reflect-2.12.7.jar;%APP_LIB_DIR%\org.typelevel.macro-compat_2.12-1.1.1.jar;%APP_LIB_DIR%\joda-time.joda-time-2.9.9.jar;%APP_LIB_DIR%\com.fasterxml.jackson.core.jackson-core-2.8.11.jar;%APP_LIB_DIR%\com.fasterxml.jackson.core.jackson-annotations-2.8.11.jar;%APP_LIB_DIR%\com.fasterxml.jackson.datatype.jackson-datatype-jdk8-2.8.11.jar;%APP_LIB_DIR%\com.fasterxml.jackson.core.jackson-databind-2.8.11.1.jar;%APP_LIB_DIR%\com.fasterxml.jackson.datatype.jackson-datatype-jsr310-2.8.11.jar;%APP_LIB_DIR%\org.scala-sbt.ipcsocket.ipcsocket-1.0.0.jar;%APP_LIB_DIR%\net.java.dev.jna.jna-platform-4.5.0.jar;%APP_LIB_DIR%\net.sf.jopt-simple.jopt-simple-4.9.jar"
84
84
  set "APP_MAIN_CLASS=com.icodici.farcallscala.Main"
85
85
  set "SCRIPT_CONF_FILE=%APP_HOME%\conf\application.ini"
86
86
 
@@ -1,4 +1,5 @@
1
1
  require 'bigdecimal'
2
+ require 'universa/lazy'
2
3
 
3
4
  module Universa
4
5
 
@@ -146,15 +147,16 @@ module Universa
146
147
  #
147
148
  # @return [String] binary string
148
149
  def bytes
149
- get_digest
150
+ @bytes ||= get_digest
150
151
  end
151
152
 
153
+
152
154
  # Get string representation. It is, actually, base64 encoded string representation. Longer, but could easily
153
155
  # be transferred with text protocols.
154
156
  #
155
157
  # @return [String] string representation
156
158
  def to_s
157
- Base64.encode64(get_digest).gsub(/\s/, '')
159
+ @str ||= Base64.encode64(get_digest).gsub(/\s/, '')
158
160
  end
159
161
 
160
162
  # Converts to URL-safe varianot of base64, as RFC 3548 suggests:
@@ -164,7 +166,7 @@ module Universa
164
166
  # Could be decoded safely back with {HashId.from_string} but not (most likely) with JAVA API itself
165
167
  # @return [String] RFC3548 modified base64
166
168
  def to_url_safe_string
167
- Base64.encode64(get_digest).gsub(/\s/, '').gsub('/', '_').gsub('+', '-')
169
+ @urlsafe_str ||= Base64.encode64(get_digest).gsub(/\s/, '').gsub('/', '_').gsub('+', '-')
168
170
  end
169
171
 
170
172
  # To use it as a hash key_address.
@@ -0,0 +1,73 @@
1
+ module Universa
2
+
3
+ # Experimental!
4
+ #
5
+ # Memoizable lazy pattern. A value that is calculated only once and onlywhen first time {get} is called.
6
+ # LazyValue is thread-safe and calculates its value exactly once.
7
+ class LazyValue
8
+
9
+ # initialize lazy value with an optional initializer block. If no initializer block is given, then
10
+ # {get} call must provide one.
11
+ def initialize(&block)
12
+ @value = nil
13
+ @ready = false
14
+ @initializer = block
15
+ @mutex = Mutex.new
16
+ end
17
+
18
+ # Get the value, calculating it using initializer block specified in the params or at creation time
19
+ # if no block is provided
20
+ def get(&block)
21
+ @mutex.synchronize {
22
+ if @ready
23
+ @value
24
+ else
25
+ @initializer = block if block
26
+ @value = @initializer.call
27
+ @ready = true
28
+ @value
29
+ end
30
+ }
31
+ end
32
+
33
+ # causes value to be recalculated on next call to {get}
34
+ def clear
35
+ @ready = false
36
+ end
37
+ end
38
+
39
+ # Add class-level lazy declaration like:
40
+ #
41
+ # class Test
42
+ # lazy(:foo) {
43
+ # puts "foo calculated"
44
+ # "bar"
45
+ # }
46
+ #
47
+ # t = Test.new
48
+ # t.foo # "foo calculated" -> "bar"
49
+ # t.foo #=> "bar"
50
+ #
51
+ module Lazy
52
+
53
+ # prevent from creation multiple instances of LazyValue's
54
+ @@lazy_creation_mutex = Mutex.new
55
+
56
+ def Lazy.included(other)
57
+ # implement class-level lazy instance var definition
58
+ def other.lazy(name, &block)
59
+ define_method(name.to_sym) {
60
+ x = @@lazy_creation_mutex.synchronize {
61
+ cache_name = :"@__#{name}__cache"
62
+ if !(x = instance_variable_get(cache_name))
63
+ x = LazyValue.new { instance_exec &block }
64
+ instance_variable_set(cache_name, x)
65
+ end
66
+ x
67
+ }
68
+ x.get
69
+ }
70
+ end
71
+ end
72
+ end
73
+ end
@@ -127,10 +127,6 @@ module Universa
127
127
  encode_result result
128
128
  end
129
129
 
130
- def invoke_static(class_name, method, *args)
131
- encode_result call("invoke", class_name, method.to_s.camelize_lower, *prepare_args(args))
132
- end
133
-
134
130
  def get_field(remote_object, name)
135
131
  encode_result call("get_field", remote_object._remote_id, name)
136
132
  end
@@ -1,4 +1,4 @@
1
1
  module Universa
2
2
  # Current gem version
3
- VERSION = "3.11.4.2"
3
+ VERSION = "3.11.4.3"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: universa
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.4.2
4
+ version: 3.11.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - sergeych
@@ -154,7 +154,7 @@ files:
154
154
  - bin/umi/lib/com.icodici.common_tools-3.11.4.2.jar
155
155
  - bin/umi/lib/com.icodici.crypto-3.11.4.2.jar
156
156
  - bin/umi/lib/com.icodici.nanohttpd-2.1.0.jar
157
- - bin/umi/lib/com.icodici.umi-0.8.57.jar
157
+ - bin/umi/lib/com.icodici.umi-0.8.58.jar
158
158
  - bin/umi/lib/com.icodici.universa_core-3.11.4.2.jar
159
159
  - bin/umi/lib/com.squareup.jnagmp.jnagmp-2.0.0.jar
160
160
  - bin/umi/lib/com.typesafe.play.play-functional_2.12-2.6.10.jar
@@ -183,6 +183,7 @@ files:
183
183
  - lib/universa/fs_store/file_store.rb
184
184
  - lib/universa/keys.rb
185
185
  - lib/universa/keytool/keytool.rb
186
+ - lib/universa/lazy.rb
186
187
  - lib/universa/service.rb
187
188
  - lib/universa/stored_contract.rb
188
189
  - lib/universa/string_utils.rb