Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master #1589

Merged
merged 5 commits into from
Apr 6, 2017
Merged

Master #1589

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
644 changes: 644 additions & 0 deletions roo/pom.xml

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions roo/src/main/java/com/baeldung/RooApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.baeldung;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* = RooApplication
*
* TODO Auto-generated class documentation
*
*/
@SpringBootApplication
public class RooApplication {

/**
* TODO Auto-generated method documentation
*
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(RooApplication.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.baeldung.config;
import org.springframework.roo.addon.layers.repository.jpa.annotations.RooJpaRepositoryConfiguration;

/**
* = SpringDataJpaDetachableRepositoryConfiguration
TODO Auto-generated class documentation
*
*/
@RooJpaRepositoryConfiguration
public class SpringDataJpaDetachableRepositoryConfiguration {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).

package com.baeldung.config;

import com.baeldung.RooApplication;
import com.baeldung.config.SpringDataJpaDetachableRepositoryConfiguration;
import io.springlets.data.jpa.repository.support.DetachableJpaRepositoryImpl;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

privileged aspect SpringDataJpaDetachableRepositoryConfiguration_Roo_Jpa_Repository_Configuration {

declare @type: SpringDataJpaDetachableRepositoryConfiguration: @Configuration;

declare @type: SpringDataJpaDetachableRepositoryConfiguration: @EnableJpaRepositories(repositoryBaseClass = DetachableJpaRepositoryImpl.class, basePackageClasses = RooApplication.class);

}
13 changes: 13 additions & 0 deletions roo/src/main/java/com/baeldung/config/WebMvcConfiguration.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.baeldung.config;
import org.springframework.roo.addon.web.mvc.controller.annotations.config.RooWebMvcConfiguration;
import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooWebMvcThymeleafUIConfiguration;

/**
* = WebMvcConfiguration
TODO Auto-generated class documentation
*
*/
@RooWebMvcConfiguration(defaultLanguage = "en")
@RooWebMvcThymeleafUIConfiguration
public class WebMvcConfiguration {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).

package com.baeldung.config;

import com.baeldung.config.WebMvcConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;

privileged aspect WebMvcConfiguration_Roo_ThymeleafUIConfiguration {

declare parents: WebMvcConfiguration implements ApplicationContextAware;

/**
* TODO Auto-generated attribute documentation
*
*/
@Autowired
private ThymeleafProperties WebMvcConfiguration.thymeleafProperties;

/**
* TODO Auto-generated attribute documentation
*
*/
@Autowired
private TemplateEngine WebMvcConfiguration.templateEngine;

/**
* TODO Auto-generated attribute documentation
*
*/
private ApplicationContext WebMvcConfiguration.applicationContext;

/**
* TODO Auto-generated method documentation
*
* @return ThymeleafProperties
*/
public ThymeleafProperties WebMvcConfiguration.getThymeleafProperties() {
return thymeleafProperties;
}

/**
* TODO Auto-generated method documentation
*
* @return TemplateEngine
*/
public TemplateEngine WebMvcConfiguration.getTemplateEngine() {
return templateEngine;
}

/**
* TODO Auto-generated method documentation
*
* @return ApplicationContext
*/
public ApplicationContext WebMvcConfiguration.getApplicationContext() {
return applicationContext;
}

/**
* TODO Auto-generated method documentation
*
* @param applicationContext
*/
public void WebMvcConfiguration.setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}

/**
* TODO Auto-generated method documentation
*
* @return ThymeleafViewResolver
*/
@Bean
public ThymeleafViewResolver WebMvcConfiguration.javascriptThymeleafViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(getTemplateEngine());
resolver.setCharacterEncoding("UTF-8");
resolver.setContentType("application/javascript");
resolver.setViewNames(new String[] {"*.js"});
resolver.setCache(getThymeleafProperties().isCache());
return resolver;
}

/**
* TODO Auto-generated method documentation
*
* @return SpringResourceTemplateResolver
*/
@Bean
public SpringResourceTemplateResolver WebMvcConfiguration.javascriptTemplateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(getApplicationContext());
resolver.setPrefix("classpath:/templates/fragments/js/");
resolver.setTemplateMode(TemplateMode.JAVASCRIPT);
resolver.setCharacterEncoding("UTF-8");
resolver.setCheckExistence(true);
resolver.setCacheable(getThymeleafProperties().isCache());
return resolver;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).

package com.baeldung.config;

import com.baeldung.config.WebMvcConfiguration;
import io.tracee.binding.springmvc.TraceeInterceptor;
import java.lang.Override;
import java.util.Locale;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

privileged aspect WebMvcConfiguration_Roo_WebMvcConfiguration {

declare parents: WebMvcConfiguration extends WebMvcConfigurerAdapter;

declare @type: WebMvcConfiguration: @Configuration;

/**
* TODO Auto-generated method documentation
*
* @return LocalValidatorFactoryBean
*/
@Primary
@Bean
public LocalValidatorFactoryBean WebMvcConfiguration.validator() {
return new LocalValidatorFactoryBean();
}

/**
* TODO Auto-generated method documentation
*
* @return LocaleResolver
*/
@Bean
public LocaleResolver WebMvcConfiguration.localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(new Locale("en"));
return localeResolver;
}

/**
* TODO Auto-generated method documentation
*
* @return LocaleChangeInterceptor
*/
@Bean
public LocaleChangeInterceptor WebMvcConfiguration.localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}

/**
* TODO Auto-generated method documentation
*
* @param registry
*/
@Override
public void WebMvcConfiguration.addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
registry.addInterceptor(new TraceeInterceptor());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.baeldung.config.jackson;
import org.springframework.roo.addon.web.mvc.controller.annotations.config.RooDomainModelModule;

/**
* = DomainModelModule
TODO Auto-generated class documentation
*
*/
@RooDomainModelModule
public class DomainModelModule {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).

package com.baeldung.config.jackson;

import com.baeldung.config.jackson.DomainModelModule;
import com.baeldung.domain.Book;
import com.baeldung.web.BookJsonMixin;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.boot.jackson.JsonComponent;

privileged aspect DomainModelModule_Roo_DomainModelModule {

declare parents: DomainModelModule extends SimpleModule;

declare @type: DomainModelModule: @JsonComponent;

/**
* TODO Auto-generated constructor documentation
*
*/
public DomainModelModule.new() {
// Mixin registration

setMixInAnnotation(Book.class, BookJsonMixin.class);
}

}
58 changes: 58 additions & 0 deletions roo/src/main/java/com/baeldung/domain/Book.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.baeldung.domain;
import org.springframework.roo.addon.javabean.annotations.RooEquals;
import org.springframework.roo.addon.javabean.annotations.RooJavaBean;
import org.springframework.roo.addon.javabean.annotations.RooToString;
import org.springframework.roo.addon.jpa.annotations.entity.RooJpaEntity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;

/**
* = Book
TODO Auto-generated class documentation
*
*/
@RooJavaBean
@RooToString
@RooJpaEntity
@RooEquals(isJpaEntity = true)
public class Book {

/**
* TODO Auto-generated attribute documentation
*
*/
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

/**
* TODO Auto-generated attribute documentation
*
*/
@Version
private Integer version;

/**
* TODO Auto-generated attribute documentation
*
*/
@NotNull
private String title;

/**
* TODO Auto-generated attribute documentation
*
*/
@NotNull
private String author;

/**
* TODO Auto-generated attribute documentation
*
*/
@NotNull
private String isbn;
}
41 changes: 41 additions & 0 deletions roo/src/main/java/com/baeldung/domain/Book_Roo_Equals.aj
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).

package com.baeldung.domain;

import com.baeldung.domain.Book;
import java.util.Objects;

privileged aspect Book_Roo_Equals {

/**
* This `equals` implementation is specific for JPA entities and uses
* the entity identifier for it, following the article in
* https://vladmihalcea.com/2016/06/06/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/
*
* @param obj
* @return Boolean
*/
public boolean Book.equals(Object obj) {
if (this == obj) {
return true;
}
// instanceof is false if the instance is null
if (!(obj instanceof Book)) {
return false;
}
return getId() != null && Objects.equals(getId(), ((Book) obj).getId());
}

/**
* This `hashCode` implementation is specific for JPA entities and uses a fixed `int` value to be able
* to identify the entity in collections after a new id is assigned to the entity, following the article in
* https://vladmihalcea.com/2016/06/06/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/
*
* @return Integer
*/
public int Book.hashCode() {
return 31;
}

}
Loading