Skip to content

Commit

Permalink
Other approach
Browse files Browse the repository at this point in the history
  • Loading branch information
fjtirado committed Jul 27, 2023
1 parent fa6fd12 commit 8f0bc63
Show file tree
Hide file tree
Showing 12 changed files with 49 additions and 46 deletions.
4 changes: 4 additions & 0 deletions quarkus-asyncapi/deployment/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-core-deployment</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc-deployment</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
Expand Down

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

This file was deleted.

4 changes: 4 additions & 0 deletions quarkus-asyncapi/runtime/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-core</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>com.asyncapi</groupId>
<artifactId>asyncapi-core</artifactId>
Expand Down
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 8f0bc63

Please sign in to comment.