Skip to content

Commit ca73465

Browse files
committed
refactor: replace JavaMainContainer loop with last-element lookup
JavaMain is always registered last, so use r.containers[len-1] with a type assertion instead of scanning all containers. Warn if the last element is not a JavaMainContainer.
1 parent 82888e2 commit ca73465

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

src/java/containers/container.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,20 @@ func (r *Registry) Register(c Container) {
4343
// If JBP_CONFIG_JAVA_MAIN specifies an explicit java_main_class, the Java Main
4444
// container is selected unconditionally — before the normal priority order —
4545
// so it can override higher-priority containers such as Spring Boot.
46+
// Java Main is always registered last (lowest priority), so it is the last element.
4647
func (r *Registry) Detect() (Container, string, error) {
4748
cfg := loadJavaMainConfig(r.context.Log)
48-
if cfg.JavaMainClass != "" {
49-
for _, container := range r.containers {
50-
if _, ok := container.(*JavaMainContainer); ok {
51-
name, err := container.Detect()
52-
if err != nil {
53-
return nil, "", err
54-
}
55-
if name != "" {
56-
return container, name, nil
57-
}
49+
if cfg.JavaMainClass != "" && len(r.containers) > 0 {
50+
if jm, ok := r.containers[len(r.containers)-1].(*JavaMainContainer); ok {
51+
name, err := jm.Detect()
52+
if err != nil {
53+
return nil, "", err
5854
}
55+
if name != "" {
56+
return jm, name, nil
57+
}
58+
} else {
59+
r.context.Log.Warning("JBP_CONFIG_JAVA_MAIN java_main_class is set but JavaMain container is not available; ignoring override")
5960
}
6061
}
6162

0 commit comments

Comments
 (0)