Add `@Action` annotation and `ServiceLocator` for improved handler registration
- Introduce `@Action` annotation to simplify action handler identification and tagging. - Add `ServiceLocator` for dynamic service registration and retrieval. - Annotate handlers (`CreateGenreHandler`, `GetGenreHandler`, `UpdateGenreHandler`, `DeleteGenreHandler`, etc.) with corresponding actions.
This commit is contained in:
parent
9c3a1126a7
commit
b715bb1bd3
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.mediamanager.service.delegate;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ServiceLocator {
|
||||||
|
private static final Logger logger = LogManager.getLogger(ServiceLocator.class);
|
||||||
|
private final Map<Class<?>, Object> services = new HashMap<>();
|
||||||
|
|
||||||
|
public <T> void register(Class<T> serviceClass, T serviceInstance) {
|
||||||
|
if (serviceInstance == null) {
|
||||||
|
throw new IllegalArgumentException("Service instance cannot be null");
|
||||||
|
}
|
||||||
|
services.put(serviceClass, serviceInstance);
|
||||||
|
logger.debug("Registered service: {} -> {}",
|
||||||
|
serviceClass.getSimpleName(),
|
||||||
|
serviceInstance.getClass().getSimpleName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public <T> T get(Class<T> serviceClass) {
|
||||||
|
return (T) services.get(serviceClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean has(Class<?> serviceClass) {
|
||||||
|
return services.containsKey(serviceClass);
|
||||||
|
}
|
||||||
|
public int size() {
|
||||||
|
return services.size();
|
||||||
|
}
|
||||||
|
public void logRegisteredServices() {
|
||||||
|
logger.info("Registered services: {}", services.size());
|
||||||
|
|
||||||
|
|
||||||
|
services.forEach((clazz, instance) ->
|
||||||
|
logger.info(" - {} -> {}",
|
||||||
|
clazz.getSimpleName(),
|
||||||
|
instance.getClass().getSimpleName())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.mediamanager.service.delegate.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
|
public @interface Action {
|
||||||
|
|
||||||
|
String value();
|
||||||
|
}
|
||||||
|
|
@ -6,9 +6,11 @@ import com.mediamanager.protocol.TestProtocol.CloseCommand;
|
||||||
import com.mediamanager.protocol.TestProtocol.CloseResponse;
|
import com.mediamanager.protocol.TestProtocol.CloseResponse;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
@Action("close")
|
||||||
public class CloseHandler implements ActionHandler {
|
public class CloseHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(CloseHandler.class);
|
private static final Logger logger = LogManager.getLogger(CloseHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,11 @@ import com.mediamanager.protocol.TestProtocol.EchoCommand; // ← Import
|
||||||
import com.mediamanager.protocol.TestProtocol.EchoResponse; // ← Import
|
import com.mediamanager.protocol.TestProtocol.EchoResponse; // ← Import
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
@Action("echo")
|
||||||
public class EchoHandler implements ActionHandler {
|
public class EchoHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(EchoHandler.class);
|
private static final Logger logger = LogManager.getLogger(EchoHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,11 @@ import com.mediamanager.protocol.TestProtocol.HeartbeatCommand;
|
||||||
import com.mediamanager.protocol.TestProtocol.HeartbeatResponse;
|
import com.mediamanager.protocol.TestProtocol.HeartbeatResponse;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
@Action("heartbeat")
|
||||||
public class HeartbeatHandler implements ActionHandler {
|
public class HeartbeatHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(HeartbeatHandler.class);
|
private static final Logger logger = LogManager.getLogger(HeartbeatHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,12 @@ import com.mediamanager.model.Genre;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.protocol.messages.GenreMessages;
|
import com.mediamanager.protocol.messages.GenreMessages;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import com.mediamanager.service.genre.GenreService;
|
import com.mediamanager.service.genre.GenreService;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
@Action("genre.create")
|
||||||
public class CreateGenreHandler implements ActionHandler {
|
public class CreateGenreHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(CreateGenreHandler.class);
|
private static final Logger logger = LogManager.getLogger(CreateGenreHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,12 @@ import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.protocol.messages.GenreMessages;
|
import com.mediamanager.protocol.messages.GenreMessages;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import com.mediamanager.service.genre.GenreService;
|
import com.mediamanager.service.genre.GenreService;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
@Action("genre.delete")
|
||||||
public class DeleteGenreHandler implements ActionHandler {
|
public class DeleteGenreHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(DeleteGenreHandler.class);
|
private static final Logger logger = LogManager.getLogger(DeleteGenreHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@ import com.mediamanager.model.Genre;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.protocol.messages.GenreMessages;
|
import com.mediamanager.protocol.messages.GenreMessages;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import com.mediamanager.service.genre.GenreService;
|
import com.mediamanager.service.genre.GenreService;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Action( "genre.getById")
|
||||||
public class GetGenreByIdHandler implements ActionHandler {
|
public class GetGenreByIdHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(GetGenreByIdHandler.class);
|
private static final Logger logger = LogManager.getLogger(GetGenreByIdHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@ import com.mediamanager.model.Genre;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.protocol.messages.GenreMessages;
|
import com.mediamanager.protocol.messages.GenreMessages;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import com.mediamanager.service.genre.GenreService;
|
import com.mediamanager.service.genre.GenreService;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Action("genre.getAll")
|
||||||
public class GetGenreHandler implements ActionHandler {
|
public class GetGenreHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(GetGenreHandler.class);
|
private static final Logger logger = LogManager.getLogger(GetGenreHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@ import com.mediamanager.model.Genre;
|
||||||
import com.mediamanager.protocol.TransportProtocol;
|
import com.mediamanager.protocol.TransportProtocol;
|
||||||
import com.mediamanager.protocol.messages.GenreMessages;
|
import com.mediamanager.protocol.messages.GenreMessages;
|
||||||
import com.mediamanager.service.delegate.ActionHandler;
|
import com.mediamanager.service.delegate.ActionHandler;
|
||||||
|
import com.mediamanager.service.delegate.annotation.Action;
|
||||||
import com.mediamanager.service.genre.GenreService;
|
import com.mediamanager.service.genre.GenreService;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Action("genre.update")
|
||||||
public class UpdateGenreHandler implements ActionHandler {
|
public class UpdateGenreHandler implements ActionHandler {
|
||||||
private static final Logger logger = LogManager.getLogger(UpdateGenreHandler.class);
|
private static final Logger logger = LogManager.getLogger(UpdateGenreHandler.class);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue