@@ -26,15 +26,22 @@ class JavaOpts < JavaBuildpack::Component::BaseComponent
2626
2727 # (see JavaBuildpack::Component::BaseComponent#detect)
2828 def detect
29- supports_configuration? || supports_environment? ? JavaOpts . to_s . dash_case : nil
29+ JavaOpts . to_s . dash_case
3030 end
3131
3232 # (see JavaBuildpack::Component::BaseComponent#compile)
3333 def compile ; end
3434
3535 # (see JavaBuildpack::Component::BaseComponent#release)
3636 def release
37- @droplet . java_opts . concat parsed_java_opts
37+ configured
38+ . shellsplit
39+ . map { |java_opt | /(?<key>.+?)=(?<value>.+)/ =~ java_opt ? "#{ key } =#{ escape_value ( value ) } " : java_opt }
40+ . each { |java_opt | @droplet . java_opts << java_opt }
41+
42+ @droplet . java_opts << '$JAVA_OPTS' if from_environment?
43+
44+ @droplet . java_opts . as_env_var
3845 end
3946
4047 private
@@ -43,39 +50,22 @@ def release
4350
4451 ENVIRONMENT_PROPERTY = 'from_environment' . freeze
4552
46- ENVIRONMENT_VARIABLE = 'JAVA_OPTS' . freeze
47-
48- private_constant :CONFIGURATION_PROPERTY , :ENVIRONMENT_PROPERTY , :ENVIRONMENT_VARIABLE
49-
50- def parsed_java_opts
51- parsed_java_opts = [ ]
53+ private_constant :CONFIGURATION_PROPERTY , :ENVIRONMENT_PROPERTY
5254
53- parsed_java_opts . concat @configuration [ CONFIGURATION_PROPERTY ] . shellsplit if supports_configuration?
54- parsed_java_opts . concat ENV [ ENVIRONMENT_VARIABLE ] . shellsplit if supports_environment?
55-
56- parsed_java_opts . map do |java_opt |
57- if /(?<key>.+?)=(?<value>.+)/ =~ java_opt
58- "#{ key } =#{ parse_shell_string ( value ) } "
59- else
60- java_opt
61- end
62- end
55+ def configured
56+ @configuration [ CONFIGURATION_PROPERTY ] || ''
6357 end
6458
65- def parse_shell_string ( str )
59+ def escape_value ( str )
6660 return "''" if str . empty?
67- str = str . dup
68- str . gsub! ( %r{([^A-Za-z0-9_\- .,:\/ @\n $\\ ])} , '\\\\\\1' )
69- str . gsub! ( /\n / , "'\n '" )
70- str
71- end
7261
73- def supports_configuration?
74- @configuration . key? ( CONFIGURATION_PROPERTY ) && !@configuration [ CONFIGURATION_PROPERTY ] . nil?
62+ str
63+ . gsub ( %r{([^A-Za-z0-9_\- .,:\/ @\n $\\ ])} , '\\\\\\1' )
64+ . gsub ( /\n / , "'\n '" )
7565 end
7666
77- def supports_environment ?
78- @configuration [ ENVIRONMENT_PROPERTY ] && ENV . key? ( ENVIRONMENT_VARIABLE )
67+ def from_environment ?
68+ @configuration [ ENVIRONMENT_PROPERTY ]
7969 end
8070
8171 end
0 commit comments