Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ final class MethodReader {
var beanTypes = BeanTypesPrism.getOptionalOn(element).map(BeanTypesPrism::value);
beanTypes.ifPresent(t -> Util.validateBeanTypes(element, t));
this.typeReader =
new TypeReader(beanTypes.orElse(List.of()), genericType, returnElement, importTypes);
new TypeReader(
beanTypes.orElse(List.of()), genericType, returnElement, importTypes, element);
typeReader.process();
MethodLifecycleReader lifecycleReader = new MethodLifecycleReader(returnElement, initMethod, destroyMethod);
this.initMethod = lifecycleReader.initMethod();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,15 @@ final class TypeExtendsReader {
* The implied qualifier name based on naming convention.
*/
private String qualifierName;

TypeExtendsReader(UType baseUType, TypeElement baseType, boolean factory, ImportTypeMap importTypes, boolean proxyBean) {
private Element source;

TypeExtendsReader(
UType baseUType,
TypeElement baseType,
boolean factory,
ImportTypeMap importTypes,
boolean proxyBean,
Element source) {
this.baseUType = baseUType;
this.baseType = baseType;
this.extendsInjection = new TypeExtendsInjection(baseType, factory, importTypes);
Expand All @@ -54,6 +61,7 @@ final class TypeExtendsReader {
this.controller = ControllerPrism.isPresent(baseType);
this.closeable = closeableClient(baseType);
this.autoProvide = autoProvide();
this.source = source;
}

/**
Expand Down Expand Up @@ -255,7 +263,11 @@ private void readInterfacesOf(TypeMirror anInterface) {
}

private boolean isPublic(Element element) {
return element != null && element.getModifiers().contains(Modifier.PUBLIC);
return element != null && element.getModifiers().contains(Modifier.PUBLIC)
|| source != null
&& APContext.elements()
.getPackageOf(element)
.equals(APContext.elements().getPackageOf(source));
}

void validate() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.Set;

import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
Expand All @@ -28,15 +29,16 @@ final class TypeReader {
TypeElement beanType,
ImportTypeMap importTypes,
boolean factory) {
this(injectsTypes, genericType, true, beanType, importTypes, factory);
this(injectsTypes, genericType, true, beanType, importTypes, factory, beanType);
}

TypeReader(
List<TypeMirror> injectsTypes,
UType genericType,
TypeElement returnElement,
ImportTypeMap importTypes) {
this(injectsTypes, genericType, false, returnElement, importTypes, false);
ImportTypeMap importTypes,
ExecutableElement source) {
this(injectsTypes, genericType, false, returnElement, importTypes, false, source);
}

private TypeReader(
Expand All @@ -45,13 +47,15 @@ private TypeReader(
boolean forBean,
TypeElement beanType,
ImportTypeMap importTypes,
boolean factory) {
boolean factory,
Element source) {
this.injectsTypes = injectsTypes.stream().map(UType::parse).collect(toList());
this.forBean = forBean;
this.beanType = beanType;
this.importTypes = importTypes;
final boolean proxyBean = forBean && ProxyPrism.isPresent(beanType);
this.extendsReader = new TypeExtendsReader(genericType, beanType, factory, importTypes, proxyBean);
this.extendsReader =
new TypeExtendsReader(genericType, beanType, factory, importTypes, proxyBean, source);
this.annotationReader = new TypeAnnotationReader(beanType);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.avaje.inject.generator.models.valid;

import io.avaje.inject.Bean;
import io.avaje.inject.Factory;
import io.avaje.inject.generator.models.valid.pkg_private.PubExposed;

@Factory
public class InhPub {

@Bean
PubExposed exposed() {
return new PubExposed();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package io.avaje.inject.generator.models.valid.pkg_private;

interface Adder {
int add(int a, int b);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.avaje.inject.generator.models.valid.pkg_private;

import jakarta.inject.Singleton;

@Singleton
class AdderImpl implements Adder {

@Override
public int add(int a, int b) {
return a + b;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.avaje.inject.generator.models.valid.pkg_private;

import jakarta.inject.Singleton;

@Singleton
public class Calculator {
private final Adder adder;

public Calculator(Adder adder) {
this.adder = adder;
}

public int sum(int a, int b) {
return adder.add(a, b);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.avaje.inject.generator.models.valid.pkg_private;

/**
* Package protected (NOT public)
*/
class NonPubBase {

public String hello() {
return "hello";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.avaje.inject.generator.models.valid.pkg_private;

interface NonPubIface {

String ifaceMethod();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.avaje.inject.generator.models.valid.pkg_private;

/**
* Extends a package protected class, implements package protected interface.
* <p>
* Neither should be including in the generated isAddBeanFor().
*/
public class PubExposed extends NonPubBase implements NonPubIface {

@Override
public String ifaceMethod() {
return "ifaceMethod";
}

}