Comments (1)
Been re-visiting this idea at least a dozen times. There are a lot of issues, such as getters/setters, visibility form Java, the loss of the fluent API, performance...
I might be wrong about some of these things, so please feel free to correct me:
Java/Kotlin interop
To convert status()
to a property, we'd need something like:
var status: Int
get() = servletResponse.status
set(status) {
servletResponse.status = status
}
@Deprecated(level = DeprecationLevel.HIDDEN, message = "Java facing API")
fun status(): Int = servletResponse.status
@Deprecated(level = DeprecationLevel.HIDDEN, message = "Java facing API")
fun status(statusCode: Int): Context {
servletResponse.status = statusCode
return this
}
This would make it work in Kotlin, but the Java would see status()
, getStatus()
and setStatus()
. You could always remove the Java-targeted functions and let Java use get
/set
, but then you lose fluency (setters in Kotlin can only return Unit)
This would also make it harder for people to port their app from Java to Kotlin.
Loss of fluency
Even if you keep the Java-targeted functions, you lose the fluent syntax in Kotlin, and while this is not really idiomatic, it's better to let people choose between:
ctx.status(401).result("Unauthorized")
and
ctx.apply {
status(401)
result("Unauthorized")
}
Instead of forcing:
ctx.apply {
status = 401
result = "Unauthorized"
}
Performance
Converting to properties will initialize a lot of things when the context is created, which most people won't use.
Source code complexity
The project will be harder to understand
Conclusion (?)
Either don't do this, or only do it for the request object, which doesn't have setters. The downsides in that case would be performance (maybe) and API consistency.
from javalin.
Related Issues (20)
- Websocket issue: Huge Amount of Data not Received HOT 2
- Javalin 6 release todo HOT 4
- Standardize Jetty Configuration for Consistency HOT 2
- Move JavalinValidator.register to instance HOT 1
- Add Content-Disposition option on io.javalin.http.staticfiles.StaticFileConfig HOT 4
- HTML Output for "attrs()" in combination with ".withClass()" does not work HOT 1
- Validator#hasValue not judge the string is non blank HOT 6
- Better validation error messages for json deserialization HOT 7
- java.lang.IllegalStateException: Form with too many parts [1001 > 1000] HOT 4
- Option to be informed if client cancels a request HOT 6
- Component system HOT 8
- Improve DevLoggingPlugin HOT 2
- What is the proper way to link css files with jte pages? HOT 9
- Support for Jetty 12 HOT 7
- Tus server implementation for reliable chunked upload. HOT 1
- Skip static files in DevLogginPlugin doesn`t skip .map files HOT 1
- javalinVue: not able to get LoadableData to work HOT 2
- OpenAPI schema-first generator: issues with order of routes HOT 6
- Register multiple paths for single handler HOT 3
- Is there a way to read the current rate limit. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from javalin.