Skip to content

Commit

Permalink
Other approach
Browse files Browse the repository at this point in the history
  • Loading branch information
fjtirado committed Jul 26, 2023
1 parent fa6fd12 commit 87e7656
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 46 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,21 @@

import java.io.IOException;

import io.quarkiverse.asyncapi.config.AsyncAPIConfigBuilder;
import io.quarkiverse.asyncapi.config.AsyncAPISupplier;
import io.quarkiverse.asyncapi.config.AsyncAPISupplierFactory;
import io.quarkiverse.asyncapi.generator.AsyncAPIBuildItem;
import io.quarkiverse.asyncapi.generator.AsyncAPISupplierFactory;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.StaticInitConfigBuilderBuildItem;

public class AsyncAPIOutputProcessor {

@BuildStep
StaticInitConfigBuilderBuildItem config() {
return new StaticInitConfigBuilderBuildItem(AsyncAPIConfigBuilder.class.getCanonicalName());
}

@BuildStep
void processResource(BuildProducer<AsyncAPIBuildItem> outputBI) throws IOException {
for (AsyncAPISupplier supplier : AsyncAPISupplierFactory.get().getAsyncApiSuppliers()) {
Expand Down
Empty file.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.quarkiverse.asyncapi.config;

import io.quarkus.runtime.configuration.ConfigBuilder;
import io.smallrye.config.SmallRyeConfigBuilder;

public class AsyncAPIConfigBuilder implements ConfigBuilder {

@Override
public SmallRyeConfigBuilder configBuilder(SmallRyeConfigBuilder builder) {
AsyncAPISupplierFactory.init(builder).getAsyncApiSuppliers()
.forEach(a -> builder.getSources().add(new AsyncConfigSource(a)));
return builder;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.asyncapi.generator.input;
package io.quarkiverse.asyncapi.config;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.asyncapi.generator;
package io.quarkiverse.asyncapi.config;

import java.io.IOException;
import java.io.InputStream;
Expand All @@ -8,6 +8,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.Set;
Expand All @@ -17,12 +18,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.quarkiverse.asyncapi.config.AsyncAPISupplier;
import io.quarkiverse.asyncapi.config.AsyncAPIUtils;
import io.quarkiverse.asyncapi.generator.input.AsyncAPISpecInput;
import io.quarkiverse.asyncapi.generator.input.AsyncApiSpecInputProvider;
import io.quarkiverse.asyncapi.generator.input.InputStreamSupplier;
import io.smallrye.config.ConfigSourceContext;
import io.smallrye.config.SmallRyeConfigBuilder;

public class AsyncAPISupplierFactory {

Expand All @@ -32,20 +28,18 @@ public class AsyncAPISupplierFactory {
private final Set<String> EXTENSIONS = Set.of(".yml", ".yaml", ".json");
private Collection<AsyncAPISupplier> asyncAPISuppliers = new ArrayList<>();

public static AsyncAPISupplierFactory init(ConfigSourceContext context) {
public static AsyncAPISupplierFactory init(SmallRyeConfigBuilder context) {
instance = new AsyncAPISupplierFactory(context);
return instance;

}

public static AsyncAPISupplierFactory get() {
return instance;
}

private AsyncAPISupplierFactory(ConfigSourceContext context) {
String propValue = context.getValue(AsyncApiConfigGroup.SOURCES_PROP).getValue();
String[] specDirs = propValue == null ? new String[] { "src/main/asyncapi", "src/test/asyncapi" }
: propValue.split(",; ");
private AsyncAPISupplierFactory(SmallRyeConfigBuilder context) {
List<String> specDirs = getValues(context, AsyncApiConfigGroup.SOURCES_PROP,
Arrays.asList("src/main/asyncapi", "src/test/asyncapi"));
final Collection<String> ignoredFiles = excludedFiles(context);
for (String dir : specDirs) {
Path specDir = Path.of(dir);
Expand Down Expand Up @@ -80,16 +74,20 @@ public Collection<AsyncAPISupplier> getAsyncApiSuppliers() {
return asyncAPISuppliers;
}

private Collection<String> excludedFiles(ConfigSourceContext context) {
String propValue = context.getValue(AsyncApiConfigGroup.EXCLUDED_FILES_PROP).getValue();
return propValue == null ? Collections.emptyList() : Arrays.asList(propValue.split(",; "));
private Collection<String> excludedFiles(SmallRyeConfigBuilder context) {
return getValues(context, AsyncApiConfigGroup.EXCLUDED_FILES_PROP, Collections.emptyList());
}

private boolean isCandidateFile(Path path, Collection<String> ignoredFiles) {
String fileName = path.getFileName().toString();
return Files.isRegularFile(path) && !ignoredFiles.contains(fileName) && isExtension(fileName);
}

List<String> getValues(SmallRyeConfigBuilder context, String propertyName, List<String> defaultValue) {
//TODO
return defaultValue;
}

private boolean isExtension(String fileName) {
return EXTENSIONS.stream().anyMatch(ext -> fileName.endsWith(ext));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.asyncapi.generator;
package io.quarkiverse.asyncapi.config;

import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.asyncapi.generator.input;
package io.quarkiverse.asyncapi.config;

/**
* Provider interface for clients to dynamically provide their own AsyncAPI specification files.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.asyncapi.generator.input;
package io.quarkiverse.asyncapi.config;

import java.io.IOException;
import java.io.InputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package io.quarkiverse.asyncapi.generator;
package io.quarkiverse.asyncapi.config;

import java.io.IOException;
import java.io.UncheckedIOException;

import com.asyncapi.v2._6_0.model.AsyncAPI;

import io.quarkiverse.asyncapi.config.AsyncAPISupplier;
import io.quarkiverse.asyncapi.config.ObjectMapperFactory;

public class JacksonAsyncAPISupplier implements AsyncAPISupplier {

private final String id;
Expand Down

0 comments on commit 87e7656

Please sign in to comment.