Comments (4)
@eduard-vasinskyi thank for detail answer... really nice work with ActiveJ...
from activej.
Hello, @azzahrah
ActiveFsServer can work with any ActiveFs implementation. So if you need to create custom ActiveFs, you can do just that! One way to do so is to use a Decorator pattern. You can create a wrapper that would delegate all method calls to some ActiveFs, and decorate only methods that you need (upload()
in your case). This approach would allow you to add custom logging, filtering, filename transformations, and other functionality to the ActiveFsServer. There are some pre-built adapters that you can find in ActiveFsAdapters class.
As for adding onFinishUpload
handler, you may extend ForwardingActiveFs class and override upload()
method to provide a custom upload finish handler. upload()
actually returns a Promise of ChannelConsumer. To add a handler that would be called on upload finish you need to transform ChannelConsumer
’s acknowledgement promise (by calling consumer.withAcknowledgement(...)
). Acknowledgment promise will be completed once the upload ends either successfully or with an exception. You may log the result or do some other custom action. Here is an example of an adapter that writes upload status on upload finish. You can wrap any ActiveFs using this adapter and each upload() would end up calling a custom handler on finish.
class CustomActiveFs extends ForwardingActiveFs {
public CustomActiveFs(ActiveFs peer) {
super(peer);
}
@Override
public Promise<ChannelConsumer<ByteBuf>> upload(@NotNull String name) {
return super.upload(name)
.map(consumer -> consumer.withAcknowledgement(ack ->
ack.whenComplete((result, e) -> {
// Your custom handler goes here
if (e == null) {
System.out.println("Successful upload");
} else {
System.err.println("Upload finished with error: " + e);
}
})));
}
}
PS. if you need to call asynchronous code in your handler, use ack.then()
/ack.thenEx()
instead of ack.whenComplete()
.
from activej.
We have added a standalone example based on this issue
from activej.
@eduard-vasinskyi thanks very much this really what we want... thanks...
from activej.
Related Issues (20)
- How to use the provided JSON serializer? HOT 1
- How to register with Eureka registry, export OpenTelemetry Tracings and Metrics? HOT 5
- ActiveJ Serializer - Non-static POJOs? HOT 6
- HTTP server Middleware HOT 3
- Constructor not found error for classes without zero-argument constructor, like BigDecimal, Calendar. HOT 1
- Binding automatically between inteface and implementation in DI HOT 2
- Make HTTPResponse's primary response code non-final HOT 4
- Websocket Accept/WriteFrame/WriteMessage not processing more than 2 writes HOT 9
- Suggestion - Nightly Snapshots? HOT 1
- Serializer sometimes decodes a wrong class for RPC request HOT 7
- Any sample to declare local varible? HOT 2
- Happen error while uploading file HOT 2
- Release plan for v5.5 and v6 HOT 3
- Add Query Parameters? HOT 6
- RPCClient lock port on local HOT 1
- Version 6 does not support ipv6, version 5.5 supported ipv6 HOT 2
- Make classes Public to facilitate mocking. HOT 1
- RpcClient receive unexpected EOS HOT 2
- RpcClient cannot setup connection
- RpcServer serializer is wrong HOT 4
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 activej.