Skip to content

Commit

Permalink
Remove most generics in services and candidates
Browse files Browse the repository at this point in the history
They actually create more problems than they solve resulting in a bunch of unsafe casts
  • Loading branch information
Yeregorix committed Sep 2, 2024
1 parent 749cea6 commit 8b76548
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 78 deletions.
5 changes: 2 additions & 3 deletions src/main/java/org/spongepowered/plugin/PluginCandidate.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@
/**
* Represents the combination of a {@link PluginMetadata metadata} and {@link PluginResource resource}
* that will be a candidate for a {@link PluginContainer container}.
* @param <P> The resource type
*/
public interface PluginCandidate<P extends PluginResource> {
public interface PluginCandidate {

/**
* @return The {@link PluginMetadata metadata}
Expand All @@ -41,5 +40,5 @@ public interface PluginCandidate<P extends PluginResource> {
/**
* @return The {@link PluginResource resource}
*/
P resource();
PluginResource resource();
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@
* No class loading should occur at this time
* <p>
* Implementors are required to have a no-args constructor
* @param <P> The resource type
*/
public interface PluginLanguageService<P extends PluginResource> {
public interface PluginLanguageService {

/**
* @return The {@link String name}
Expand Down Expand Up @@ -65,5 +64,5 @@ public interface PluginLanguageService<P extends PluginResource> {
* @param resource The resource
* @return The {@link List candidates}
*/
List<PluginCandidate<P>> createPluginCandidates(Environment environment, P resource) throws Exception;
List<PluginCandidate> createPluginCandidates(Environment environment, PluginResource resource) throws Exception;
}
5 changes: 2 additions & 3 deletions src/main/java/org/spongepowered/plugin/PluginLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,9 @@
* A loader used to create and load {@link PluginContainer plugins}.
* <p>
* Implementors of this class are required to have a no-args constructor
* @param <R> The resource type
* @param <P> The container type
*/
public interface PluginLoader<R extends PluginResource, P extends PluginContainer> {
public interface PluginLoader<P extends PluginContainer> {

/**
* @return The {@link ArtifactVersion version}, as a maven artifact
Expand All @@ -49,5 +48,5 @@ public interface PluginLoader<R extends PluginResource, P extends PluginContaine
* @param targetClassLoader The classloader
* @throws InvalidPluginException If the candidate is invalid
*/
P loadPlugin(Environment environment, PluginCandidate<R> candidate, ClassLoader targetClassLoader) throws InvalidPluginException;
P loadPlugin(Environment environment, PluginCandidate candidate, ClassLoader targetClassLoader) throws InvalidPluginException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,33 +28,5 @@
import org.spongepowered.plugin.PluginResource;
import org.spongepowered.plugin.metadata.PluginMetadata;

import java.util.StringJoiner;

public final class StandardPluginCandidate<P extends PluginResource> implements PluginCandidate<P> {

private final PluginMetadata metadata;
private final P resource;

public StandardPluginCandidate(final PluginMetadata metadata, final P resource) {
this.metadata = metadata;
this.resource = resource;
}

@Override
public PluginMetadata metadata() {
return this.metadata;
}

@Override
public P resource() {
return this.resource;
}

@Override
public String toString() {
return new StringJoiner(", ", StandardPluginCandidate.class.getSimpleName() + "[", "]")
.add("metadata=" + this.metadata)
.add("resource=" + this.resource)
.toString();
}
public record StandardPluginCandidate(PluginMetadata metadata, PluginResource resource) implements PluginCandidate {
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import org.apache.logging.log4j.Logger;
import org.spongepowered.plugin.PluginCandidate;
import org.spongepowered.plugin.PluginContainer;
import org.spongepowered.plugin.PluginResource;
import org.spongepowered.plugin.metadata.PluginMetadata;

import java.net.URI;
Expand All @@ -38,15 +37,15 @@

public class StandardPluginContainer implements PluginContainer {

private final PluginCandidate<? extends PluginResource> candidate;
private final PluginCandidate candidate;
private final Logger logger;
private Object instance;

public StandardPluginContainer(final PluginCandidate<? extends PluginResource> candidate) {
public StandardPluginContainer(final PluginCandidate candidate) {
this(Objects.requireNonNull(candidate, "candidate"), LogManager.getLogger(candidate.metadata().id()));
}

public StandardPluginContainer(final PluginCandidate<? extends PluginResource> candidate, final Logger logger) {
public StandardPluginContainer(final PluginCandidate candidate, final Logger logger) {
this.candidate = Objects.requireNonNull(candidate, "candidate");
this.logger = Objects.requireNonNull(logger, "logger");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,24 @@
import java.util.Objects;
import java.util.Optional;

public abstract class StandardPluginLanguageService implements PluginLanguageService<PluginResource> {
public abstract class StandardPluginLanguageService implements PluginLanguageService {
protected final Logger logger = LogManager.getLogger(this.name());

@Override
public void initialize(final Environment environment) {
}

@Override
public List<PluginCandidate<PluginResource>> createPluginCandidates(final Environment environment, final PluginResource resource) throws Exception {
public List<PluginCandidate> createPluginCandidates(final Environment environment, final PluginResource resource) throws Exception {
Objects.requireNonNull(environment, "environment");
Objects.requireNonNull(resource, "resource");

final String metadataPath = environment.blackboard().get(Keys.METADATA_FILE_PATH);

final List<PluginCandidate<PluginResource>> candidates = new LinkedList<>();
final List<PluginCandidate> candidates = new LinkedList<>();

final Optional<InputStream> optStream = resource.openResource(metadataPath);
if (!optStream.isPresent()) {
if (optStream.isEmpty()) {
this.logger.debug("Container in path '{}' doesn't have a metadata file, skipping...", resource.path());
return candidates;
}
Expand All @@ -85,7 +85,7 @@ public List<PluginCandidate<PluginResource>> createPluginCandidates(final Enviro
continue;
}
containerHasMetadata = true;
candidates.add(new StandardPluginCandidate<>(metadata, resource));
candidates.add(new StandardPluginCandidate(metadata, resource));
}

if (!containerHasMetadata) {
Expand Down

This file was deleted.

0 comments on commit 8b76548

Please sign in to comment.