BAEL-2302 UPDATED Spring Data REST HTTP Method customization example (#5594)

* BAEL-2302 Spring Data REST HTTP Method customization example

* BAEL-2302 Spring Data REST - granular HTTP Methods control

* BAEL-2302 Spring Data REST - fixed parent pom file version error

* BAEL-2302 Fixing thymeleaf dependencies

* BAEL-2302 Spring Data REST - fixed netty bootstrap

* BAEL-2302 Spring Data REST - fixed netty test

* BAEL-2302 Spring Data REST - fixed spring security oauth2

* BAEL-2302 - Fix oauth2 server deps
This commit is contained in:
gmconte
2018-11-10 05:26:28 +00:00
committed by KevinGilmore
parent 2d872af165
commit 52852b3a49
15 changed files with 95 additions and 65 deletions
@@ -1,17 +1,21 @@
package com.baeldung.config;
import com.baeldung.models.WebsiteUser;
import com.baeldung.projections.CustomBook;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
import com.baeldung.projections.CustomBook;
import org.springframework.data.rest.core.mapping.ExposureConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
import org.springframework.http.HttpMethod;
@Configuration
public class RestConfig extends RepositoryRestConfigurerAdapter{
public class RestConfig implements RepositoryRestConfigurer {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration repositoryRestConfiguration){
repositoryRestConfiguration.getProjectionConfiguration().addProjection(CustomBook.class);
ExposureConfiguration config = repositoryRestConfiguration.getExposureConfiguration();
config.forDomainType(WebsiteUser.class).withItemExposure((metadata, httpMethods) ->
httpMethods.disable(HttpMethod.PATCH));
}
}
@@ -1,12 +1,32 @@
package com.baeldung.repositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.web.bind.annotation.CrossOrigin;
import com.baeldung.models.WebsiteUser;
@CrossOrigin
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends CrudRepository<WebsiteUser, Long> {
@Override
@RestResource(exported = false)
void delete(WebsiteUser entity);
@Override
@RestResource(exported = false)
void deleteAll();
@Override
@RestResource(exported = false)
void deleteAll(Iterable<? extends WebsiteUser> entities);
@Override
@RestResource(exported = false)
void deleteById(Long aLong);
@RestResource(path = "byEmail", rel = "customFindMethod")
WebsiteUser findByEmail(@Param("email") String email);
}