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)
- [cors] Use JDK'S URI class for origin parsing HOT 1
- Compatibility with Jetty 12 HOT 4
- Explore Jetty-free implementation of resource handler
- Minimize Jetty Coupling HOT 6
- Routing by path and media type? HOT 2
- Empty routeRoles in wsBeforeUpgrade if it is a websocket route HOT 4
- Kotlin code sample incorrect in docs HOT 2
- Request to support Hot Reload of Cipher Suites HOT 14
- is there a way to use own implemented Context ? HOT 1
- The native image fails when running with virtual threads enabled HOT 2
- Switch from dependabot to renovate? HOT 3
- Kotlin ending up in the jar file HOT 3
- `Ws{{Action}}Context` classes do not have a pretty `getUpgradeContext()` method. HOT 3
- Confusing `Ws{{Action}}Context.matchedPath()` functionality
- Errors during `wsBeforeUpgrade` do not invoke the Request Logger HOT 1
- Support for multiple Request Loggers HOT 4
- WebSocket RequestLogger `onUpgrade`
- Define `wsBeforeUpgrade` via WsConfig HOT 2
- new Javalin.startAndJoin() method HOT 2
- "AccessManager" in Javalin 6 is buggy, beforeMatched and before HOT 6
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.