Skip to content

Instantly share code, notes, and snippets.

@rlubke
rlubke / application.yml
Created October 19, 2021 04:30
Application Configuration
micronaut:
application:
name: todo-list-micronaut-server
server:
port: 3000
coherence:
cluster: task-cluster
ttl: 0
serializer: java
@rlubke
rlubke / update.java
Created October 19, 2021 04:18
UPDATE/{id}
@Put(value = "{id}", consumes = MediaType.APPLICATION_JSON)
public Task updateTask(@PathVariable("id") String id, Task task)
{
String description = task.getDescription();
Boolean completed = task.getCompleted();
if (description != null)
{
return tasks.update(id, Task::setDescription, description);
}
@Delete
public void deleteCompletedTasks()
{
tasks.deleteByCompletedTrue();
}
@rlubke
rlubke / delete-completed-repo.java
Last active October 19, 2021 04:14
Repository with a generated query
@CoherenceRepository("tasks")
public abstract class TaskRepository
extends AbstractCoherenceRepository<Task, String>
{
/**
* Delete all {@link Task}s that have been completed.
*/
public abstract void deleteByCompletedTrue();
}
@Delete
public void deleteCompletedTasks()
{
tasks.removeAll(Filters.equal(Task::getCompleted, true));
}
@rlubke
rlubke / delete-by-id.java
Created October 19, 2021 04:02
DELETE /{id}
@Delete("{id}")
public void deleteTask(@PathVariable("id") String id)
{
tasks.removeById(id);
}
@rlubke
rlubke / create.java
Last active October 19, 2021 03:59
POST /
@Post(consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON)
public Task createTask(Task task)
{
return tasks.save(new Task(task.getDescription()));
}
@rlubke
rlubke / get.java
Last active October 19, 2021 03:06
REST -> GET / | GET /?completed=[bool]
@Get
@Produces(MediaType.APPLICATION_JSON)
public Collection<Task> getTasks(@Nullable @QueryValue(value = "completed") Boolean completed)
{
Filter<Task> filter = completed == null
? Filters.always()
: Filters.equal(Task::getCompleted, completed);
return tasks.getAllOrderedBy(filter, Task::getCreatedAt);
}
@rlubke
rlubke / TaskUpdated.java
Last active October 19, 2021 00:43
Mapping Task as an Entity for use with Micronaut Data Repositories
package com.oracle.coherence.examples.todo.server;
// ...
import io.micronaut.data.annotation.Id;
import io.micronaut.data.annotation.MappedEntity;
// ...
/**
@rlubke
rlubke / Task.java
Created October 19, 2021 00:24
Task
package com.oracle.coherence.examples.todo.server;
import com.oracle.coherence.repository.Indexed;
import java.io.Serializable;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;