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

Sonar Fixes #648

Merged
merged 3 commits into from
Jul 19, 2024
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
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ public abstract class Event<T> {
protected final String defaultQualifier;

protected Event(ObserverManager manager, Type type) {
this.observers = manager.observersByType(type);
this.defaultQualifier = "";
this(manager, type, "");
}

protected Event(ObserverManager manager, Type type, String qualifier) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package io.avaje.inject.generator;

import static io.avaje.inject.generator.APContext.logError;
import static java.util.stream.Collectors.toList;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
Expand Down Expand Up @@ -269,13 +267,13 @@ List<MetaData> createFactoryMethodMeta() {
}

MetaData createMeta() {
String type;
String metaType;
if (beanType.getNestingKind().isNested()) {
type = beanType.getEnclosingElement().toString() + "$" + beanType.getSimpleName();
metaType = beanType.getEnclosingElement().toString() + "$" + beanType.getSimpleName();
} else {
type = beanQualifiedName();
metaType = beanQualifiedName();
}
MetaData metaData = new MetaData(type, name);
MetaData metaData = new MetaData(metaType, name);
metaData.update(this);
return metaData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,17 @@
import static java.util.Map.entry;
import static java.util.stream.Collectors.toList;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.ElementFilter;
import io.avaje.inject.spi.AvajeModule;
import io.avaje.inject.spi.InjectPlugin;


/**
* The types provided by other modules in the classpath at compile time.
*
Expand All @@ -20,7 +31,7 @@
final class ExternalProvider {

private static final ClassLoader CLASS_LOADER = ExternalProvider.class.getClassLoader();
private static final boolean injectAvailable = moduleCP();
private static final boolean INJECT_AVAILABLE = moduleCP();
private static final Map<String, List<String>> avajePlugins = Map.ofEntries(
entry("io.avaje.inject.events.spi.ObserverManagerPlugin", of("io.avaje.inject.events.ObserverManager")),
entry("io.avaje.jsonb.inject.DefaultJsonbProvider", of("io.avaje.jsonb.Jsonb")),
Expand Down Expand Up @@ -48,7 +59,7 @@ private static boolean moduleCP() {
}

static void registerModuleProvidedTypes(Set<String> providedTypes) {
if (!injectAvailable) {
if (!INJECT_AVAILABLE) {
if (!pluginExists("avaje-module-provides.txt")) {
APContext.logNote("Unable to detect Avaje Inject in Annotation Processor ClassPath, use the Avaje Inject Maven/Gradle plugin for detecting Inject Modules from dependencies");
}
Expand Down Expand Up @@ -99,7 +110,7 @@ static void registerPluginProvidedTypes(ScopeInfo defaultScope) {
}
});
defaultScope.pluginProvided("io.avaje.inject.event.ObserverManager");
if (!injectAvailable) {
if (!INJECT_AVAILABLE) {
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

final class LoadServices {

private LoadServices() {}

static List<AvajeModule> loadModules(ClassLoader classLoader) {
List<AvajeModule> modules = new ArrayList<>();
// load using older Module
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package io.avaje.inject.generator;

import static io.avaje.inject.generator.APContext.typeElement;
import static java.util.stream.Collectors.toList;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;


/**
* Holds the data as per <code>@DependencyMeta</code>
*/
final class MetaData {

private static final String INDENT = " ";

private static final String NEWLINE = "\n";

private final String type;
Expand Down Expand Up @@ -213,7 +213,7 @@ void buildMethod(Append append) {
|| hasDependsOn
|| hasProvides
|| hasAutoProvides) {
append.eol().append(" ");
append.eol().append(INDENT);
}

append.append("type = \"").append(type).append("\"");
Expand Down Expand Up @@ -258,7 +258,7 @@ private void appendProvides(Append sb, String attribute, List<String> types) {
types.removeIf(s -> s.contains(":"));
}

sb.append(",").eol().append(" ").append(attribute).append(" = {");
sb.append(",").eol().append(INDENT).append(attribute).append(" = {");
final var size = types.size();
if (size > 1) {
sb.eol().append(" ");
Expand All @@ -277,7 +277,7 @@ private void appendProvides(Append sb, String attribute, List<String> types) {
sb.append("\"");
}
if (size > 1) {
sb.eol().append(" ");
sb.eol().append(INDENT);
}
sb.append("}");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,31 +197,44 @@ private int processQueueRound(boolean includeExternal) {

private boolean allDependenciesWired(MetaData queuedMeta, boolean includeExternal) {
for (Dependency dependency : queuedMeta.dependsOn()) {
final var dependencyName = dependency.name();
if (!Util.isProvider(dependencyName) && !Constants.BEANSCOPE.equals(dependency.name())) {
// check non-provider dependency is satisfied
ProviderList providerList = providers.get(dependencyName);
if (providerList == null) {
if (!scopeInfo.providedByOther(dependency)) {
if (includeExternal && externallyProvided(dependencyName)) {
if (Util.isAspectProvider(dependencyName)) {
autoRequiresAspects.add(Util.extractAspectType(dependencyName));
} else {
autoRequires.add(dependencyName);
}
queuedMeta.markWithExternalDependency(dependencyName);
} else {
return false;
}
}
} else if (!providerList.isAllWired()) {
return false;
}
String dependencyName = dependency.name();
if (Util.isProvider(dependencyName) || Constants.BEANSCOPE.equals(dependencyName)) {
continue;
}
if (!dependencySatisfied(dependency, includeExternal, queuedMeta)) {
return false;
}
}
return true;
}

private boolean dependencySatisfied(Dependency dependency, boolean includeExternal, MetaData queuedMeta) {
String dependencyName = dependency.name();
var providerList = providers.get(dependencyName);
if (providerList == null) {
if (scopeInfo.providedByOther(dependency)) {
return true;
} else {
return isExternal(dependencyName, includeExternal, queuedMeta);
}
} else {
return providerList.isAllWired();
}
}

private boolean isExternal(String dependencyName, boolean includeExternal, MetaData queuedMeta) {
if (includeExternal && externallyProvided(dependencyName)) {
if (Util.isAspectProvider(dependencyName)) {
autoRequiresAspects.add(Util.extractAspectType(dependencyName));
} else {
autoRequires.add(dependencyName);
}
queuedMeta.markWithExternalDependency(dependencyName);
return true;
}
return false;
}

Set<String> autoRequires() {
return autoRequires;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package io.avaje.inject.generator;

import static java.lang.annotation.ElementType.LOCAL_VARIABLE;

import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ void read(TypeElement type) {
case METHOD:
readMethod(element, type);
break;
default:
break;
}
}
}
Expand Down Expand Up @@ -152,12 +154,12 @@ private void checkForAspect(ExecutableElement methodElement) {
if (modifiers.contains(Modifier.PRIVATE) || modifiers.contains(Modifier.STATIC) || modifiers.contains(Modifier.ABSTRACT)) {
return;
}
int nameIndex = methodNameIndex(methodElement.getSimpleName().toString());
int methodNameIndex = methodNameIndex(methodElement.getSimpleName().toString());
List<AspectPair> aspectPairs = readAspects(methodElement);
aspectPairs.addAll(typeAspects);

if (!aspectPairs.isEmpty()) {
aspectMethods.add(new AspectMethod(nameIndex, aspectPairs, methodElement));
aspectMethods.add(new AspectMethod(methodNameIndex, aspectPairs, methodElement));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ String getMethod(boolean nullable, boolean beanMap) {
return "getOptional(";
case PROVIDER:
return "getProvider(";
default:
break;
}
return nullable ? "getNullable(" : "get(";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import io.avaje.inject.BeanScope;
import io.avaje.lang.Nullable;

import java.lang.reflect.Type;
import java.util.ServiceLoader;

final class PluginMgr {

private PluginMgr() {}

private static final Plugin plugin = init();

private static Plugin init() {
Expand Down
4 changes: 2 additions & 2 deletions inject/src/main/java/io/avaje/inject/spi/DBeanScope.java
Original file line number Diff line number Diff line change
Expand Up @@ -311,9 +311,9 @@ int initPriority(Class<? extends Annotation> priorityAnnotation) {
try {
final Annotation ann = bean.getClass().getDeclaredAnnotation(priorityAnnotation);
if (ann != null) {
final int priority = (Integer) priorityAnnotation.getMethod("value").invoke(ann);
final int newPriority = (Integer) priorityAnnotation.getMethod("value").invoke(ann);
priorityDefined = true;
return priority;
return newPriority;
}
} catch (Exception e) {
// If this happens, something has gone very wrong since a non-confirming @Priority was found...
Expand Down
8 changes: 4 additions & 4 deletions inject/src/main/java/io/avaje/inject/spi/DContextEntry.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,13 @@ static final class EntryMatcher {
}

private Provider<?> provider(List<DContextEntryBean> entries) {
DContextEntryBean match = findMatch(entries);
return match == null ? null : match.provider();
DContextEntryBean foundMatch = findMatch(entries);
return foundMatch == null ? null : foundMatch.provider();
}

private Object match(List<DContextEntryBean> entries) {
DContextEntryBean match = findMatch(entries);
return match == null ? null : match.bean();
DContextEntryBean foundMatch = findMatch(entries);
return foundMatch == null ? null : foundMatch.bean();
}

private DContextEntryBean findMatch(List<DContextEntryBean> entries) {
Expand Down
Loading