Skip to content

Commit

Permalink
refactor: Helidon uses the nested generator approach
Browse files Browse the repository at this point in the history
Signed-off-by: Marc Nuri <marc@marcnuri.com>
  • Loading branch information
manusa committed Jun 21, 2023
1 parent 27d098a commit 909b378
Show file tree
Hide file tree
Showing 8 changed files with 255 additions and 207 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* Copyright (c) 2019 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at:
*
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
package org.eclipse.jkube.helidon.generator;

import org.eclipse.jkube.generator.api.GeneratorConfig;
import org.eclipse.jkube.generator.api.GeneratorContext;
import org.eclipse.jkube.generator.javaexec.JavaExecGenerator;
import org.eclipse.jkube.kit.common.JavaProject;

public abstract class AbstractHelidonNestedGenerator implements HelidonNestedGenerator {

private final GeneratorContext generatorContext;
private final GeneratorConfig generatorConfig;

AbstractHelidonNestedGenerator(GeneratorContext generatorContext, GeneratorConfig generatorConfig) {
this.generatorContext = generatorContext;
this.generatorConfig = generatorConfig;
}

@Override
public final JavaProject getProject() {
return generatorContext.getProject();
}

@Override
public String getBuildWorkdir() {
return generatorConfig.get(JavaExecGenerator.Config.TARGET_DIR);
}

@Override
public String getTargetDir() {
return generatorConfig.get(JavaExecGenerator.Config.TARGET_DIR);
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.eclipse.jkube.generator.javaexec.JavaExecGenerator;
import org.eclipse.jkube.kit.common.Arguments;
import org.eclipse.jkube.kit.common.AssemblyConfiguration;
import org.eclipse.jkube.kit.common.Configs;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;

import java.util.List;
Expand All @@ -29,9 +28,11 @@

public class HelidonGenerator extends JavaExecGenerator {
public static final String HELIDON = "helidon";
private final HelidonNestedGenerator nestedGenerator;

public HelidonGenerator(GeneratorContext context) {
super(context, HELIDON);
nestedGenerator = HelidonNestedGenerator.from(context, getGeneratorConfig());
}

@Override
Expand All @@ -41,23 +42,22 @@ public boolean isApplicable(List<ImageConfiguration> configs) {

@Override
protected AssemblyConfiguration createAssembly() {
return HelidonGenerators.from(getProject()).createAssemblyConfiguration(this);
return nestedGenerator.createAssemblyConfiguration();
}

@Override
protected String getBuildWorkdir() {
return HelidonGenerators.from(getProject()).getBuildWorkdir(this);
return nestedGenerator.getBuildWorkdir();
}

@Override
protected String getFromAsConfigured() {
return Optional.ofNullable(super.getFromAsConfigured())
.orElse(HelidonGenerators.from(getProject()).fromSelector(this).getFrom());
return Optional.ofNullable(super.getFromAsConfigured()).orElse(nestedGenerator.getFrom());
}

@Override
protected Arguments getBuildEntryPoint() {
return HelidonGenerators.from(getProject()).getBuildEntryPoint(this);
return nestedGenerator.getBuildEntryPoint();
}

@Override
Expand All @@ -67,17 +67,11 @@ protected String getDefaultWebPort() {

@Override
protected String getDefaultJolokiaPort() {
return HelidonGenerators.from(getProject()).getDefaultJolokiaPort();
return nestedGenerator.getDefaultJolokiaPort();
}

@Override
protected String getDefaultPrometheusPort() {
return HelidonGenerators.from(getProject()).getDefaultPrometheusPort();
}

@SuppressWarnings("java:S1185") // Expose super method to HelidonGenerators
@Override
protected String getConfig(Configs.Config key) {
return super.getConfig(key);
return nestedGenerator.getDefaultPrometheusPort();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/**
* Copyright (c) 2019 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at:
*
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
package org.eclipse.jkube.helidon.generator;

import org.eclipse.jkube.generator.api.GeneratorConfig;
import org.eclipse.jkube.generator.api.GeneratorContext;
import org.eclipse.jkube.kit.common.Arguments;
import org.eclipse.jkube.kit.common.AssemblyConfiguration;
import org.eclipse.jkube.kit.common.JavaProject;

import static org.eclipse.jkube.generator.javaexec.JavaExecGenerator.JOLOKIA_PORT_DEFAULT;
import static org.eclipse.jkube.generator.javaexec.JavaExecGenerator.PROMETHEUS_PORT_DEFAULT;
import static org.eclipse.jkube.helidon.HelidonUtils.hasHelidonGraalNativeImageExtension;

public interface HelidonNestedGenerator {

JavaProject getProject();

AssemblyConfiguration createAssemblyConfiguration();

default String getFrom() {
return null;
}

default String getDefaultJolokiaPort() {
return JOLOKIA_PORT_DEFAULT;
}

default String getDefaultPrometheusPort() {
return PROMETHEUS_PORT_DEFAULT;
}

default Arguments getBuildEntryPoint() {
return null;
}

String getBuildWorkdir();

String getTargetDir();

static HelidonNestedGenerator from(GeneratorContext generatorContext, GeneratorConfig generatorConfig) {
if (hasHelidonGraalNativeImageExtension(generatorContext.getProject())) {
return new NativeGenerator(generatorContext, generatorConfig);
}
return new StandardGenerator(generatorContext, generatorConfig);
}
}
Loading

0 comments on commit 909b378

Please sign in to comment.