Skip to content

Commit

Permalink
Add mysql feature. Add security annotations to annotation processors. C…
Browse files Browse the repository at this point in the history
…loses #223, #224, #225, #226, #211
  • Loading branch information
jameskleeh committed May 19, 2020
1 parent b081ca4 commit 10c7e64
Show file tree
Hide file tree
Showing 17 changed files with 355 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,7 @@ Features features
}
@if (features.contains("spring-boot")) {
@annotationProcessor.template(features, "\"io.micronaut.spring:micronaut-spring-boot\"")
}
@if (features.contains("security-annotations")) {
@annotationProcessor.template(features, "\"io.micronaut:micronaut-security-annotations\"")
}
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,9 @@ dependencies {
@if (features.contains("postgres")) {
@dependency.template("org.postgresql", "postgresql", "runtimeOnly", "42.2.12")
}
@if (features.contains("mysql")) {
@dependency.template("mysql", "mysql-connector-java", "runtimeOnly", "8.0.20")
}
@if (features.contains("hibernate-gorm")) {
@dependency.template("org.apache.tomcat", "tomcat-jdbc", "runtimeOnly", null)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,9 @@ List<Property> properties
@if (features.contains("postgres")) {
@dependency.template("org.postgresql", "postgresql", "runtime", "42.2.12")
}
@if (features.contains("mysql")) {
@dependency.template("mysql", "mysql-connector-java", "runtime", "8.0.20")
}
@if (features.contains("hibernate-gorm")) {
@dependency.template("org.apache.tomcat", "tomcat-jdbc", "runtime", null)
}
Expand Down Expand Up @@ -731,6 +734,13 @@ List<Property> properties
<artifactId>micronaut-spring-boot</artifactId>
<version>${micronaut.spring.version}</version>
</path>
}
@if (features.contains("security-annotations")) {
<path>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-security-annotations</artifactId>
<version>${micronaut.security.version}</version>
</path>
}
</annotationProcessorPaths>
</configuration>
Expand Down Expand Up @@ -793,6 +803,13 @@ List<Property> properties
<artifactId>micronaut-spring-boot</artifactId>
<version>${micronaut.spring.version}</version>
</path>
}
@if (features.contains("security-annotations")) {
<path>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-security-annotations</artifactId>
<version>${micronaut.security.version}</version>
</path>
}
</annotationProcessorPaths>
</configuration>
Expand Down Expand Up @@ -889,6 +906,13 @@ List<Property> properties
<artifactId>micronaut-spring-boot</artifactId>
<version>${micronaut.spring.version}</version>
</annotationProcessorPath>
}
@if (features.contains("security-annotations")) {
<annotationProcessorPath>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-security-annotations</artifactId>
<version>${micronaut.security.version}</version>
</annotationProcessorPath>
}
</annotationProcessorPaths>
</configuration>
Expand Down Expand Up @@ -966,6 +990,13 @@ List<Property> properties
<artifactId>micronaut-spring-boot</artifactId>
<version>${micronaut.spring.version}</version>
</annotationProcessorPath>
}
@if (features.contains("security-annotations")) {
<annotationProcessorPath>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-security-annotations</artifactId>
<version>${micronaut.security.version}</version>
</annotationProcessorPath>
}
</annotationProcessorPaths>
</configuration>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Copyright 2020 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.micronaut.starter.feature.database;

import edu.umd.cs.findbugs.annotations.NonNull;

import javax.inject.Singleton;

@Singleton
public class MySQL implements DatabaseDriverFeature {

@Override
@NonNull
public String getName() {
return "mysql";
}

@Override
public String getTitle() {
return "MySQL open source database system.";
}

@Override
public String getDescription() {
return "Adds the MySQL driver and default config.";
}

@Override
public String getJdbcUrl() {
return "jdbc:mysql://localhost:3306/db";
}

@Override
public String getDriverClass() {
return "com.mysql.jdbc.Driver";
}

@Override
public String getDefaultUser() {
return "root";
}

@Override
public String getDefaultPassword() {
return "";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@
*/
package io.micronaut.starter.feature.database;

import edu.umd.cs.findbugs.annotations.NonNull;

import javax.inject.Singleton;

@Singleton
public class PostgreSQL implements DatabaseDriverFeature {

@Override
@NonNull
public String getName() {
return "postgres";
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package io.micronaut.starter.feature.security;

import io.micronaut.starter.application.ApplicationType;
import io.micronaut.starter.feature.Feature;

import javax.inject.Singleton;

@Singleton
public class SecurityAnnotations implements Feature {

@Override
public String getName() {
return "security-annotations";
}

@Override
public boolean supports(ApplicationType applicationType) {
return true;
}

@Override
public boolean isVisible() {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,19 @@
import io.micronaut.starter.application.generator.GeneratorContext;
import io.micronaut.starter.feature.Category;
import io.micronaut.starter.feature.Feature;
import io.micronaut.starter.feature.FeatureContext;

import javax.inject.Singleton;

@Singleton
public class SecurityJWT implements Feature {

private final SecurityAnnotations securityAnnotations;

public SecurityJWT(SecurityAnnotations securityAnnotations) {
this.securityAnnotations = securityAnnotations;
}

@Override
public String getName() {
return "security-jwt";
Expand All @@ -40,6 +47,13 @@ public String getDescription() {
return "Adds support for JWT (JSON Web Token) based Authentication";
}

@Override
public void processSelectedFeatures(FeatureContext featureContext) {
if (!featureContext.isPresent(SecurityAnnotations.class)) {
featureContext.addFeature(securityAnnotations);
}
}

@Override
public void apply(GeneratorContext generatorContext) {
generatorContext.getConfiguration().put("micronaut.security.endpoints.login.enabled", true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,19 @@
import io.micronaut.starter.application.ApplicationType;
import io.micronaut.starter.feature.Category;
import io.micronaut.starter.feature.Feature;
import io.micronaut.starter.feature.FeatureContext;

import javax.inject.Singleton;

@Singleton
public class SecurityLdap implements Feature {

private final SecurityAnnotations securityAnnotations;

public SecurityLdap(SecurityAnnotations securityAnnotations) {
this.securityAnnotations = securityAnnotations;
}

@NonNull
@Override
public String getName() {
Expand All @@ -41,6 +48,13 @@ public String getDescription() {
return "Adds support for authentication with LDAP servers";
}

@Override
public void processSelectedFeatures(FeatureContext featureContext) {
if (!featureContext.isPresent(SecurityAnnotations.class)) {
featureContext.addFeature(securityAnnotations);
}
}

@Override
public boolean supports(ApplicationType applicationType) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,19 @@
import io.micronaut.starter.application.generator.GeneratorContext;
import io.micronaut.starter.feature.Category;
import io.micronaut.starter.feature.Feature;
import io.micronaut.starter.feature.FeatureContext;

import javax.inject.Singleton;

@Singleton
public class SecurityOAuth2 implements Feature {

private final SecurityAnnotations securityAnnotations;

public SecurityOAuth2(SecurityAnnotations securityAnnotations) {
this.securityAnnotations = securityAnnotations;
}

@NonNull
@Override
public String getName() {
Expand All @@ -42,6 +49,13 @@ public String getDescription() {
return "Adds support for authentication with OAuth 2.0 providers";
}

@Override
public void processSelectedFeatures(FeatureContext featureContext) {
if (!featureContext.isPresent(SecurityAnnotations.class)) {
featureContext.addFeature(securityAnnotations);
}
}

@Override
public void apply(GeneratorContext generatorContext) {
if (generatorContext.isFeaturePresent(SecurityJWT.class)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,19 @@
import io.micronaut.starter.application.generator.GeneratorContext;
import io.micronaut.starter.feature.Category;
import io.micronaut.starter.feature.Feature;
import io.micronaut.starter.feature.FeatureContext;

import javax.inject.Singleton;

@Singleton
public class SecuritySession implements Feature {

private final SecurityAnnotations securityAnnotations;

public SecuritySession(SecurityAnnotations securityAnnotations) {
this.securityAnnotations = securityAnnotations;
}

@Override
public String getName() {
return "security-session";
Expand All @@ -40,6 +47,13 @@ public String getDescription() {
return "Adds support for Session based Authentication";
}

@Override
public void processSelectedFeatures(FeatureContext featureContext) {
if (!featureContext.isPresent(SecurityAnnotations.class)) {
featureContext.addFeature(securityAnnotations);
}
}

@Override
public void apply(GeneratorContext generatorContext) {
generatorContext.getConfiguration().put("micronaut.security.endpoints.login.enabled", true);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package io.micronaut.starter.feature.database

import io.micronaut.starter.BeanContextSpec
import io.micronaut.starter.application.ApplicationType
import io.micronaut.starter.feature.build.gradle.templates.buildGradle
import io.micronaut.starter.feature.build.maven.templates.pom
import io.micronaut.starter.options.Language
import spock.lang.Unroll

class MySQLSpec extends BeanContextSpec {

@Unroll
void 'test gradle mysql feature for language=#language'() {
when:
String template = buildGradle.template(ApplicationType.DEFAULT, buildProject(), getFeatures(['mysql'], language)).render().toString()

then:
template.contains('runtimeOnly("mysql:mysql-connector-java:8.0.20")')

where:
language << Language.values().toList()
}

@Unroll
void 'test maven mysql feature for language=#language'() {
when:
String template = pom.template(ApplicationType.DEFAULT, buildProject(), getFeatures(['mysql'], language), []).render().toString()

then:
template.contains("""
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
<scope>runtime</scope>
</dependency>
""")

where:
language << Language.values().toList()
}

}
Loading

0 comments on commit 10c7e64

Please sign in to comment.