@@ -0,0 +1,1596 @@
+package org.zalando.nakadi.domain;%0A%0Aimport org.zalando.nakadi.plugin.api.authz.AuthorizationAttribute;%0Aimport org.zalando.nakadi.plugin.api.authz.AuthorizationService;%0Aimport org.zalando.nakadi.plugin.api.authz.Resource;%0A%0Aimport java.util.List;%0Aimport java.util.Optional;%0A%0Apublic class ResourceImpl%3CT%3E implements Resource %7B%0A%0A    public static final String ALL_DATA_ACCESS_RESOURCE = %22all-data-access%22;%0A    public static final String ADMIN_RESOURCE = %22nakadi%22;%0A    public static final String EVENT_TYPE_RESOURCE = %22event-type%22;%0A    public static final String SUBSCRIPTION_RESOURCE = %22subscription%22;%0A%0A    private final T resource;%0A    private final String name;%0A    private final String type;%0A    private final ValidatableAuthorization authorization;%0A%0A    public ResourceImpl(final String name, final String type,%0A                        final ValidatableAuthorization authorization, final T resource) %7B%0A        this.name = name;%0A        this.type = type;%0A        this.authorization = authorization;%0A        this.resource = resource;%0A    %7D%0A%0A    @Override%0A    public String getName() %7B%0A        return name;%0A    %7D%0A%0A    @Override%0A    public String getType() %7B%0A        return type;%0A    %7D%0A%0A    @Override%0A    public Optional%3CList%3CAuthorizationAttribute%3E%3E getAttributesForOperation(%0A            final AuthorizationService.Operation operation) %7B%0A        return authorization.getAttributesForOperation(operation);%0A    %7D%0A%0A    @Override%0A    public T get() %7B%0A        return resource;%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return %22AuthorizedResource%7B%22 + type + %22='%22 + name + %22'%7D%22;%0A    %7D%0A%7D%0A

Add implementation of Resource<T>