Skip to content

Commit f3acda9

Browse files
committed
apitool: produces an empty swagger/raml definition when bootstrapping without an application class fix #932
1 parent c114bce commit f3acda9

File tree

4 files changed

+68
-2
lines changed

4 files changed

+68
-2
lines changed

jooby/src/main/java/org/jooby/Jooby.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@
261261
import org.jooby.internal.ServerLookup;
262262
import org.jooby.internal.ServerSessionManager;
263263
import org.jooby.internal.SessionManager;
264+
import org.jooby.internal.SourceProvider;
264265
import org.jooby.internal.TypeConverters;
265266
import org.jooby.internal.handlers.HeadHandler;
266267
import org.jooby.internal.handlers.OptionsHandler;
@@ -888,6 +889,8 @@ public EnvDep(final Predicate<String> predicate, final Consumer<Config> callback
888889

889890
private transient boolean caseSensitiveRouting = true;
890891

892+
private transient String classname;
893+
891894
/**
892895
* Creates a new {@link Jooby} application.
893896
*/
@@ -904,6 +907,7 @@ public Jooby() {
904907
public Jooby(final String prefix) {
905908
this.prefix = prefix;
906909
use(server);
910+
this.classname = classname(getClass().getName());
907911
}
908912

909913
@Override
@@ -3329,7 +3333,7 @@ private Config defaultConfig(final Config conf, final String cpath) {
33293333
.withValue("contextPath", fromAnyRef(cpath.equals("/") ? "" : cpath))
33303334
.withValue("application.name", fromAnyRef(appname))
33313335
.withValue("application.version", fromAnyRef(version))
3332-
.withValue("application.class", fromAnyRef(getClass().getName()))
3336+
.withValue("application.class", fromAnyRef(classname))
33333337
.withValue("application.ns", fromAnyRef(ns))
33343338
.withValue("application.lang", fromAnyRef(lang))
33353339
.withValue("application.tz", fromAnyRef(tz))
@@ -3468,4 +3472,18 @@ public void configureAssetHandler(final AssetHandler handler) {
34683472
});
34693473
}
34703474

3475+
/**
3476+
* Class name is this, except for script bootstrap.
3477+
*
3478+
* @param name Default classname.
3479+
* @return Classname.
3480+
*/
3481+
private String classname(String name) {
3482+
if (name.equals(Jooby.class.getName()) || name.equals("org.jooby.Kooby")) {
3483+
return SourceProvider.INSTANCE.get()
3484+
.map(StackTraceElement::getClassName)
3485+
.orElse(name);
3486+
}
3487+
return name;
3488+
}
34713489
}

modules/jooby-apitool/src/test/java/kt/CompApp.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package kt
33
import org.jooby.*
44

55
class CompApp : Kooby({
6-
6+
77
get("/r1") {
88
true
99
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package kt
2+
3+
import org.jooby.*
4+
import org.jooby.apitool.ApiTool
5+
6+
fun main(args: Array<String>) {
7+
run(*args) {
8+
use(KResource::class)
9+
10+
use(ApiTool()
11+
.swagger())
12+
}
13+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.jooby.apitool;
2+
3+
import org.jooby.Jooby;
4+
import org.junit.Test;
5+
6+
import java.nio.file.Path;
7+
import java.nio.file.Paths;
8+
9+
public class KtRunFnTest {
10+
11+
@Test
12+
public void shouldWorkWithKotlinResource() throws Exception {
13+
new RouteMethodAssert(new ApiParser(dir()).parse("kt.RunFnKt"))
14+
.next(r -> {
15+
r.returnType("java.util.List<kt.KR1>");
16+
r.pattern("/kr");
17+
r.description("List KR.");
18+
r.summary("KR API.");
19+
r.param(p -> {
20+
p.name("name")
21+
.type(String.class)
22+
.description("KR name.")
23+
.kind(RouteParameter.Kind.QUERY);
24+
});
25+
}).done();
26+
}
27+
28+
private Path dir() {
29+
Path userdir = Paths.get(System.getProperty("user.dir"));
30+
if (!userdir.toString().endsWith("jooby-apitool")) {
31+
userdir = userdir.resolve("modules").resolve("jooby-apitool");
32+
}
33+
return userdir;
34+
}
35+
}

0 commit comments

Comments
 (0)