Skip to content

Commit

Permalink
Add new SmallRyeOpenAPI public builder API
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Edgar <michael@xlate.io>
  • Loading branch information
MikeEdgar committed Mar 14, 2024
1 parent cbd7f5e commit 759e1a0
Show file tree
Hide file tree
Showing 26 changed files with 858 additions and 666 deletions.
11 changes: 6 additions & 5 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@
<groupId>org.eclipse.microprofile.config</groupId>
<artifactId>microprofile-config-api</artifactId>
</dependency>
<dependency>
<groupId>io.smallrye.config</groupId>
<artifactId>smallrye-config</artifactId>
<scope>provided</scope>
<optional>true</optional>
</dependency>

<!-- Third Party Libraries -->
<dependency>
Expand Down Expand Up @@ -77,11 +83,6 @@
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.smallrye.config</groupId>
<artifactId>smallrye-config</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
Expand Down
22 changes: 22 additions & 0 deletions core/src/main/java/io/smallrye/openapi/api/ApiLogging.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package io.smallrye.openapi.api;

import org.jboss.logging.BasicLogger;
import org.jboss.logging.Logger;
import org.jboss.logging.annotations.LogMessage;
import org.jboss.logging.annotations.Message;
import org.jboss.logging.annotations.MessageLogger;

@MessageLogger(projectCode = "SROAP", length = 5)
interface ApiLogging extends BasicLogger {

ApiLogging logger = Logger.getMessageLogger(ApiLogging.class, ApiLogging.class.getPackage().getName());

@LogMessage(level = Logger.Level.DEBUG)
@Message(id = 500, value = "Adding model from %s...")
void addingModel(String source);

@LogMessage(level = Logger.Level.DEBUG)
@Message(id = 501, value = "Adding model %s from %s: %s")
void addingModel(String name, String source, Object model);

}
37 changes: 25 additions & 12 deletions core/src/main/java/io/smallrye/openapi/api/OpenApiDocument.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,12 @@
* </p>
*
* @author Martin Kouba
*
* @deprecated use the {@link io.smallrye.openapi.api.SmallRyeOpenAPI
* SmallRyeOpenAPI} builder API instead. This class may be moved,
* have reduced visibility, or be removed in a future release.
*/
@Deprecated
public class OpenApiDocument {

public static final OpenApiDocument INSTANCE = new OpenApiDocument();
Expand All @@ -34,6 +39,7 @@ public class OpenApiDocument {
private transient OpenAPI readerModel;
private transient OpenAPI staticFileModel;
private transient Map<String, OASFilter> filters = new LinkedHashMap<>();
private transient boolean defaultRequiredProperties = true;
private transient String archiveName;
private transient String version;

Expand Down Expand Up @@ -104,6 +110,10 @@ public void filter(OASFilter filter) {
}
}

public void defaultRequiredProperties(boolean defaultRequiredProperties) {
set(() -> this.defaultRequiredProperties = defaultRequiredProperties);
}

public void archiveName(String archiveName) {
set(() -> this.archiveName = archiveName);
}
Expand Down Expand Up @@ -140,21 +150,23 @@ public synchronized void initialize() {
}

// Phase 6: Provide missing required elements using defaults
if (merged.getPaths() == null) {
merged.setPaths(new PathsImpl());
}
if (merged.getInfo() == null) {
merged.setInfo(new InfoImpl());
}
if (merged.getInfo().getTitle() == null) {
merged.getInfo().setTitle((archiveName == null ? "Generated" : archiveName) + " API");
}
if (merged.getInfo().getVersion() == null) {
merged.getInfo().setVersion((version == null ? "1.0" : version));
if (defaultRequiredProperties) {
if (merged.getPaths() == null) {
merged.setPaths(new PathsImpl());
}
if (merged.getInfo() == null) {
merged.setInfo(new InfoImpl());
}
if (merged.getInfo().getTitle() == null) {
merged.getInfo().setTitle((archiveName == null ? "Generated" : archiveName) + " API");
}
if (merged.getInfo().getVersion() == null) {
merged.getInfo().setVersion((version == null ? "1.0" : version));
}
}

// Phase 7: Use Config values to add Servers (global, pathItem, operation)
ConfigUtil.applyConfig(config, merged);
ConfigUtil.applyConfig(config, merged, defaultRequiredProperties);

model = merged;
clear();
Expand Down Expand Up @@ -197,6 +209,7 @@ private void clear() {
staticFileModel = null;
filters.clear();
archiveName = null;
defaultRequiredProperties = true;
}

}

0 comments on commit 759e1a0

Please sign in to comment.