MCPcopy Index your code
hub / github.com/cloudfoundry/java-buildpack / loadConfig

Method loadConfig

src/java/frameworks/java_opts.go:245–334  ·  view source on GitHub ↗

loadConfig loads the java_opts.yml configuration

()

Source from the content-addressed store, hash-verified

243
244// loadConfig loads the java_opts.yml configuration
245func (j *JavaOptsFramework) loadConfig() (*JavaOptsConfig, error) {
246 config := &JavaOptsConfig{
247 FromEnvironment: true, // Default to true (matches config file)
248 JavaOpts: []string{},
249 }
250 yamlHandler := common.YamlHandler{}
251
252 // Check for JBP_CONFIG_JAVA_OPTS override
253 configOverride := os.Getenv("JBP_CONFIG_JAVA_OPTS")
254 if configOverride != "" {
255 // First, parse the outer YAML string (handles single-quoted format like '{...}')
256 var yamlContent interface{}
257 if err := yamlHandler.Unmarshal([]byte(configOverride), &yamlContent); err != nil {
258 return nil, fmt.Errorf("failed to parse JBP_CONFIG_JAVA_OPTS: %w", err)
259 }
260
261 // Handle different YAML formats for backward compatibility
262 var configData []byte
263 switch v := yamlContent.(type) {
264 case string:
265 // It's a YAML string literal - parse the content
266 configData = []byte(v)
267 case map[string]interface{}:
268 // It's already a parsed YAML structure - marshal it back to bytes
269 var err error
270 configData, err = yamlHandler.Marshal(v)
271 if err != nil {
272 return nil, fmt.Errorf("failed to marshal config map: %w", err)
273 }
274 case []interface{}:
275 // Handle legacy format: [from_environment: false, java_opts: ...]
276 // This parses as an array of maps, so we need to merge them
277 mergedMap := make(map[string]interface{})
278 for _, item := range v {
279 if m, ok := item.(map[string]interface{}); ok {
280 for k, val := range m {
281 mergedMap[k] = val
282 }
283 }
284 }
285 var err error
286 configData, err = yamlHandler.Marshal(mergedMap)
287 if err != nil {
288 return nil, fmt.Errorf("failed to marshal merged config map: %w", err)
289 }
290 default:
291 return nil, fmt.Errorf("unexpected YAML type: %T", v)
292 }
293
294 // Parse into a generic map first to handle both string and array formats for java_opts
295 var rawConfig map[string]interface{}
296 if err := yamlHandler.Unmarshal(configData, &rawConfig); err != nil {
297 return nil, fmt.Errorf("failed to parse JBP_CONFIG_JAVA_OPTS structure: %w", err)
298 }
299
300 // Handle from_environment field
301 if fromEnv, ok := rawConfig["from_environment"].(bool); ok {
302 config.FromEnvironment = fromEnv

Callers 2

DetectMethod · 0.95
FinalizeMethod · 0.95

Calls 3

UnmarshalMethod · 0.95
MarshalMethod · 0.95
shellSplitFunction · 0.85

Tested by

no test coverage detected