*/
package org.opendaylight.restconf.nb.rfc8040;
-import java.util.List;
-import javax.inject.Inject;
-import javax.inject.Singleton;
+import java.util.Set;
+import javax.ws.rs.core.Application;
import org.opendaylight.mdsal.dom.api.DOMActionService;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMMountPointService;
import org.opendaylight.mdsal.dom.api.DOMNotificationService;
-import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
-import org.opendaylight.restconf.nb.rfc8040.handlers.SchemaContextHandler;
-import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RestconfStreamsSubscriptionService;
+import org.opendaylight.restconf.nb.rfc8040.databind.DatabindProvider;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.JsonNormalizedNodeBodyWriter;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.JsonPatchStatusBodyWriter;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.XmlNormalizedNodeBodyWriter;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.XmlPatchStatusBodyWriter;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.YangSchemaExportBodyWriter;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.YinSchemaExportBodyWriter;
+import org.opendaylight.restconf.nb.rfc8040.jersey.providers.errors.RestconfDocumentedExceptionMapper;
+import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.MdsalRestconfServer;
import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfDataServiceImpl;
import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfImpl;
import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfInvokeOperationsServiceImpl;
import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfOperationsServiceImpl;
import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfSchemaServiceImpl;
-import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfStreamsSubscriptionServiceImpl;
-import org.opendaylight.restconf.nb.rfc8040.streams.Configuration;
-@Singleton
-public class RestconfApplication extends AbstractRestconfApplication {
- private RestconfApplication(final SchemaContextHandler schemaContextHandler,
- final DOMMountPointService mountPointService, final RestconfStreamsSubscriptionService streamSubscription,
- final DOMDataBroker dataBroker, final DOMRpcService rpcService, final DOMActionService actionService,
- final DOMNotificationService notificationService, final DOMSchemaService domSchemaService,
- final Configuration configuration) {
- super(schemaContextHandler, mountPointService, List.of(
- streamSubscription,
- new RestconfDataServiceImpl(schemaContextHandler, dataBroker, mountPointService, streamSubscription,
- actionService, configuration),
- new RestconfInvokeOperationsServiceImpl(rpcService, schemaContextHandler),
- new RestconfOperationsServiceImpl(schemaContextHandler, mountPointService),
- new RestconfSchemaServiceImpl(schemaContextHandler, mountPointService,
- domSchemaService.getExtensions().getInstance(DOMYangTextSourceProvider.class)),
- new RestconfImpl(schemaContextHandler)));
+final class RestconfApplication extends Application {
+ private final Set<Object> singletons;
+ RestconfApplication(final DatabindProvider databindProvider, final MdsalRestconfServer server,
+ final DOMMountPointService mountPointService, final DOMDataBroker dataBroker,
+ final DOMActionService actionService, final DOMNotificationService notificationService,
+ final DOMSchemaService domSchemaService) {
+ singletons = Set.of(
+ new RestconfDocumentedExceptionMapper(databindProvider),
+ new RestconfDataServiceImpl(databindProvider, server, actionService),
+ new RestconfInvokeOperationsServiceImpl(server),
+ new RestconfOperationsServiceImpl(server),
+ new RestconfSchemaServiceImpl(domSchemaService, mountPointService),
+ new RestconfImpl(databindProvider));
}
- @Inject
- public RestconfApplication(final SchemaContextHandler schemaContextHandler,
- final DOMMountPointService mountPointService, final DOMDataBroker dataBroker,
- final DOMRpcService rpcService, final DOMActionService actionService,
- final DOMNotificationService notificationService,
- final DOMSchemaService domSchemaService, final Configuration configuration) {
- this(schemaContextHandler, mountPointService,
- new RestconfStreamsSubscriptionServiceImpl(dataBroker, notificationService, schemaContextHandler,
- configuration),
- dataBroker, rpcService, actionService, notificationService, domSchemaService, configuration);
+ @Override
+ public Set<Class<?>> getClasses() {
+ return Set.of(
+ JsonNormalizedNodeBodyWriter.class, XmlNormalizedNodeBodyWriter.class,
+ YinSchemaExportBodyWriter.class, YangSchemaExportBodyWriter.class,
+ JsonPatchStatusBodyWriter.class, XmlPatchStatusBodyWriter.class);
+ }
+
+ @Override
+ public Set<Object> getSingletons() {
+ return singletons;
}
}