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

HV-2001 Generate module-info for published artifacts #1370

Merged
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
13 changes: 5 additions & 8 deletions annotation-processor/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<!-- This is a publicly distributed module that should be published: -->
<deploy.skip>false</deploy.skip>
<hibernate-validator-parent.path>..</hibernate-validator-parent.path>
<automatic.module.name>org.hibernate.validator.annotationprocessor</automatic.module.name>
<java.module.name>org.hibernate.validator.annotationprocessor</java.module.name>
yrodiere marked this conversation as resolved.
Show resolved Hide resolved
</properties>

<dependencies>
Expand Down Expand Up @@ -112,13 +112,6 @@
<goals>
<goal>jar</goal>
</goals>
<configuration>
<archive>
<manifestEntries>
<Automatic-Module-Name>${automatic.module.name}</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
Expand All @@ -141,6 +134,10 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
32 changes: 30 additions & 2 deletions cdi/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<properties>
<!-- This is a publicly distributed module that should be published: -->
<deploy.skip>false</deploy.skip>
<java.module.name>${hibernate-validator-cdi.module-name}</java.module.name>

<hibernate-validator-parent.path>..</hibernate-validator-parent.path>
</properties>
Expand All @@ -35,6 +36,15 @@
<groupId>${project.groupId}</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging-annotations</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
Expand Down Expand Up @@ -175,7 +185,6 @@
<manifestEntries>
<Specification-Title>Jakarta Validation</Specification-Title>
<Specification-Version>${parsed-version.jakarta.validation-api.majorVersion}.${parsed-version.jakarta.validation-api.minorVersion}</Specification-Version>
<Automatic-Module-Name>${hibernate-validator-cdi.module-name}</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
Expand All @@ -187,7 +196,7 @@
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-SymbolicName>${hibernate-validator-cdi.module-name}</Bundle-SymbolicName>
<Bundle-SymbolicName>${java.module.name}</Bundle-SymbolicName>
<Fragment-Host>${hibernate-validator.module-name}</Fragment-Host>
<Import-Package>
jakarta.validation.*;version="[3.0,4.0)",
Expand Down Expand Up @@ -225,6 +234,25 @@
<skip>false</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<executions>
<execution>
<id>add-module-infos</id>
<configuration>
<module>
<moduleInfo>
<opens>
<!-- Interceptor has to provide reflection access -->
org.hibernate.validator.cdi.interceptor.spi;
</opens>
</moduleInfo>
</module>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@
import org.hibernate.validator.cdi.internal.ValidationProviderHelper;
import org.hibernate.validator.cdi.internal.ValidatorBean;
import org.hibernate.validator.cdi.internal.ValidatorFactoryBean;
import org.hibernate.validator.cdi.internal.interceptor.ValidationEnabledAnnotatedType;
import org.hibernate.validator.cdi.internal.interceptor.ValidationInterceptor;
import org.hibernate.validator.cdi.interceptor.internal.ValidationEnabledAnnotatedType;
import org.hibernate.validator.cdi.interceptor.spi.ValidationInterceptor;
import org.hibernate.validator.cdi.internal.util.GetterPropertySelectionStrategyHelper;
import org.hibernate.validator.internal.util.Contracts;
import org.hibernate.validator.internal.util.ExecutableHelper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.internal;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.internal;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.internal;

import java.lang.reflect.Constructor;
import jakarta.enterprise.inject.spi.AnnotatedConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.internal;

import java.lang.reflect.Method;
import jakarta.enterprise.inject.spi.AnnotatedMethod;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.internal;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
/**
* <p>Classes for enabling Bean Validation method validation via a CDI interceptor.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.internal;
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.interceptor;
package org.hibernate.validator.cdi.interceptor.spi;
yrodiere marked this conversation as resolved.
Show resolved Hide resolved

import java.io.Serializable;
import java.lang.reflect.Member;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;

import org.hibernate.validator.cdi.interceptor.internal.MethodValidated;

import jakarta.annotation.Priority;
import jakarta.inject.Inject;
import jakarta.interceptor.AroundConstruct;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,27 @@
*/
package org.hibernate.validator.cdi.internal;

import static org.hibernate.validator.internal.util.CollectionHelper.newHashSet;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import jakarta.enterprise.inject.Any;
import jakarta.enterprise.inject.Default;
import jakarta.enterprise.util.AnnotationLiteral;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import java.util.stream.Collectors;

import org.hibernate.validator.HibernateValidatorFactory;
import org.hibernate.validator.cdi.HibernateValidator;
import org.hibernate.validator.internal.engine.ValidatorFactoryImpl;
import org.hibernate.validator.internal.engine.ValidatorImpl;
import org.hibernate.validator.internal.util.CollectionHelper;
import org.hibernate.validator.internal.util.classhierarchy.ClassHierarchyHelper;

import static org.hibernate.validator.internal.util.CollectionHelper.newHashSet;
import jakarta.enterprise.inject.Any;
import jakarta.enterprise.inject.Default;
import jakarta.enterprise.util.AnnotationLiteral;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;

/**
* Provides functionality for dealing with validation provider types.
Expand Down Expand Up @@ -58,11 +63,13 @@ public static ValidationProviderHelper forHibernateValidator() {
);
}

private ValidationProviderHelper(boolean isDefaultProvider,
private ValidationProviderHelper(
boolean isDefaultProvider,
boolean isHibernateValidator,
Class<? extends ValidatorFactory> validatorFactoryClass,
Class<? extends Validator> validatorClass,
Set<Annotation> qualifiers) {
Set<Annotation> qualifiers
) {
this.isDefaultProvider = isDefaultProvider;
this.isHibernateValidator = isHibernateValidator;
this.validatorFactoryClass = validatorFactoryClass;
Expand Down Expand Up @@ -108,8 +115,10 @@ Set<Annotation> getQualifiers() {
* Returns the qualifiers to be used for registering a validator or validator factory.
*/
@SuppressWarnings("serial")
private static Set<Annotation> determineRequiredQualifiers(boolean isDefaultProvider,
boolean isHibernateValidator) {
private static Set<Annotation> determineRequiredQualifiers(
boolean isDefaultProvider,
boolean isHibernateValidator
) {
HashSet<Annotation> qualifiers = newHashSet( 3 );

if ( isDefaultProvider ) {
Expand All @@ -134,6 +143,30 @@ private static Set<Annotation> determineRequiredQualifiers(boolean isDefaultProv
return qualifiers;
}

public Set<Type> determineValidatorFactoryCdiTypes() {
return Collections.unmodifiableSet(
CollectionHelper.<Type>newHashSet(
ClassHierarchyHelper.getHierarchy( getValidatorFactoryBeanClass() )
.stream()
// We do not include Hibernate Validator internal types:
.filter( klass -> !( isHibernateValidator && isHibernateValidatorInternalType( klass ) ) )
.collect( Collectors.toSet() )
)
);
}

public Set<Type> determineValidatorCdiTypes() {
return Collections.unmodifiableSet(
CollectionHelper.<Type>newHashSet(
ClassHierarchyHelper.getHierarchy( getValidatorBeanClass() )
.stream()
// We do not include Hibernate Validator internal types:
.filter( klass -> !( isHibernateValidator && isHibernateValidatorInternalType( klass ) ) )
.collect( Collectors.toSet() )
)
);
}

@Override
public String toString() {
return "ValidationProviderHelper [isDefaultProvider="
Expand All @@ -142,4 +175,10 @@ public String toString() {
+ validatorFactoryClass + ", validatorClass=" + validatorClass
+ ", qualifiers=" + qualifiers + "]";
}

private static boolean isHibernateValidatorInternalType(Class<?> klass) {
return klass.getPackageName().startsWith( "org.hibernate.validator." )
&& ( klass.getPackageName().endsWith( ".internal" )
|| klass.getPackageName().contains( ".internal." ) );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.Set;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.context.spi.CreationalContext;
import jakarta.enterprise.inject.spi.Bean;
Expand All @@ -19,9 +20,6 @@
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;

import org.hibernate.validator.internal.util.CollectionHelper;
import org.hibernate.validator.internal.util.classhierarchy.ClassHierarchyHelper;

/**
* A {@link Bean} representing a {@link Validator}. There is one instance of this type representing the default
* validator and optionally another instance representing the HV validator in case the default provider is not HV.
Expand All @@ -36,16 +34,11 @@ public class ValidatorBean implements Bean<Validator>, PassivationCapable {
private final Set<Type> types;
private final Bean<?> validatorFactoryBean;

public ValidatorBean(BeanManager beanManager, Bean<?> validatorFactoryBean,
ValidationProviderHelper validationProviderHelper) {
public ValidatorBean(BeanManager beanManager, Bean<?> validatorFactoryBean, ValidationProviderHelper validationProviderHelper) {
this.beanManager = beanManager;
this.validatorFactoryBean = validatorFactoryBean;
this.validationProviderHelper = validationProviderHelper;
this.types = Collections.unmodifiableSet(
CollectionHelper.<Type>newHashSet(
ClassHierarchyHelper.getHierarchy( validationProviderHelper.getValidatorBeanClass() )
)
);
this.types = validationProviderHelper.determineValidatorCdiTypes();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,8 @@

import org.hibernate.validator.HibernateValidatorConfiguration;
import org.hibernate.validator.cdi.spi.BeanNames;
import org.hibernate.validator.cdi.spi.InjectingConstraintValidatorFactory;
import org.hibernate.validator.internal.engine.valueextraction.ValueExtractorDescriptor;
import org.hibernate.validator.internal.util.CollectionHelper;
import org.hibernate.validator.internal.util.classhierarchy.ClassHierarchyHelper;
import org.hibernate.validator.internal.util.actions.GetClassLoader;
import org.hibernate.validator.internal.util.actions.GetInstancesFromServiceLoader;
import org.hibernate.validator.internal.util.actions.LoadClass;
Expand All @@ -67,11 +66,7 @@ public ValidatorFactoryBean(BeanManager beanManager, ValidationProviderHelper va
this.beanManager = beanManager;
this.destructibleResources = newHashSet( 5 );
this.validationProviderHelper = validationProviderHelper;
this.types = Collections.unmodifiableSet(
CollectionHelper.<Type>newHashSet(
ClassHierarchyHelper.getHierarchy( validationProviderHelper.getValidatorFactoryBeanClass() )
)
);
this.types = validationProviderHelper.determineValidatorFactoryCdiTypes();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.cdi.internal.util;

public final class BuiltInConstraintValidatorUtils {

private BuiltInConstraintValidatorUtils() {
}

public static boolean isBuiltInConstraintValidator(Class<?> klass) {
return klass.getPackageName().startsWith( "org.hibernate.validator.internal.constraintvalidators." );
}
}
Loading