ShortenFullyQualifiedTypeReferences
[WARNING] PMD Failure: org.apache.maven.api.services.ArtifactFactoryRequest:72 Rule:UnnecessaryFullyQualifiedName Priority:4 Unnecessary qualifier 'ArtifactFactoryRequest': 'builder' is already in scope.
- https://github.com/apache/maven/pull/2444
- https://github.com/apache/maven/blob/a35930efd1f160285c39dfba8e85aeadb7ec948a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java#L72
seven deuce never lose
-->
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.api.services;
import java.util.Objects;
import org.apache.maven.api.Session;
import org.apache.maven.api.annotations.Experimental;
import org.apache.maven.api.annotations.Immutable;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.NotThreadSafe;
import org.apache.maven.api.annotations.Nullable;
import static java.util.Objects.requireNonNull;
/**
*
*
* @since 4.0.0
*/
@Experimental
@Immutable
public interface ArtifactFactoryRequest extends Request<Session> {
String getGroupId();
String getArtifactId();
String getVersion();
String getClassifier();
String getExtension();
String getType();
static ArtifactFactoryRequest build(
Session session, String groupId, String artifactId, String version, String extension) {
return ArtifactFactoryRequest.builder()
.session(requireNonNull(session, "session cannot be null"))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
.extension(extension)
.build();
}
static ArtifactFactoryRequest build(
Session session,
String groupId,
String artifactId,
String version,
String classifier,
String extension,
String type) {
return ArtifactFactoryRequest.builder()
.session(requireNonNull(session, "session cannot be null"))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
.classifier(classifier)
.extension(extension)
.type(type)
.build();
}
static ArtifactFactoryRequestBuilder builder() {
return new ArtifactFactoryRequestBuilder();
}
@NotThreadSafe
class ArtifactFactoryRequestBuilder {
private Session session;
private RequestTrace trace;
private String groupId;
private String artifactId;
private String version;
private String classifier;
private String extension;
private String type;
ArtifactFactoryRequestBuilder() {}
public ArtifactFactoryRequestBuilder session(Session session) {
this.session = session;
return this;
}
public ArtifactFactoryRequestBuilder trace(RequestTrace trace) {
this.trace = trace;
return this;
}
public ArtifactFactoryRequestBuilder groupId(String groupId) {
this.groupId = groupId;
return this;
}
public ArtifactFactoryRequestBuilder artifactId(String artifactId) {
this.artifactId = artifactId;
return this;
}
public ArtifactFactoryRequestBuilder version(String version) {
this.version = version;
return this;
}
public ArtifactFactoryRequestBuilder classifier(String classifier) {
this.classifier = classifier;
return this;
}
public ArtifactFactoryRequestBuilder extension(String extension) {
this.extension = extension;
return this;
}
public ArtifactFactoryRequestBuilder type(String type) {
this.type = type;
return this;
}
public ArtifactFactoryRequest build() {
return new DefaultArtifactFactoryRequest(
session, trace, groupId, artifactId, version, classifier, extension, type);
}
private static class DefaultArtifactFactoryRequest extends BaseRequest<Session>
implements ArtifactFactoryRequest {
private final String groupId;
private final String artifactId;
private final String version;
private final String classifier;
private final String extension;
private final String type;
@SuppressWarnings("checkstyle:ParameterNumber")
DefaultArtifactFactoryRequest(
@Nonnull Session session,
@Nullable RequestTrace trace,
String groupId,
String artifactId,
String version,
String classifier,
String extension,
String type) {
super(session, trace);
this.groupId = groupId;
this.artifactId = artifactId;
this.version = version;
this.classifier = classifier;
this.extension = extension;
this.type = type;
}
@Override
public String getGroupId() {
return groupId;
}
@Override
public String getArtifactId() {
return artifactId;
}
@Override
public String getVersion() {
return version;
}
@Override
public String getClassifier() {
return classifier;
}
@Override
public String getExtension() {
return extension;
}
@Override
public String getType() {
return type;
}
@Override
public boolean equals(Object o) {
return o instanceof DefaultArtifactFactoryRequest that
&& Objects.equals(groupId, that.groupId)
&& Objects.equals(artifactId, that.artifactId)
&& Objects.equals(version, that.version)
&& Objects.equals(classifier, that.classifier)
&& Objects.equals(extension, that.extension)
&& Objects.equals(type, that.type);
}
@Override
public int hashCode() {
return Objects.hash(groupId, artifactId, version, classifier, extension, type);
}
@Override
public String toString() {
return "ArtifactFactoryRequest[" + "groupId='"
+ groupId + '\'' + ", artifactId='"
+ artifactId + '\'' + ", version='"
+ version + '\'' + ", classifier='"
+ classifier + '\'' + ", extension='"
+ extension + '\'' + ", type='"
+ type + '\'' + ']';
}
}
}
}
What did you expect to see?
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.api.services;
import java.util.Objects;
import org.apache.maven.api.Session;
import org.apache.maven.api.annotations.Experimental;
import org.apache.maven.api.annotations.Immutable;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.NotThreadSafe;
import org.apache.maven.api.annotations.Nullable;
import static java.util.Objects.requireNonNull;
/**
*
*
* @since 4.0.0
*/
@Experimental
@Immutable
public interface ArtifactFactoryRequest extends Request<Session> {
String getGroupId();
String getArtifactId();
String getVersion();
String getClassifier();
String getExtension();
String getType();
static ArtifactFactoryRequest build(
Session session, String groupId, String artifactId, String version, String extension) {
return builder()
.session(requireNonNull(session, "session cannot be null"))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
.extension(extension)
.build();
}
static ArtifactFactoryRequest build(
Session session,
String groupId,
String artifactId,
String version,
String classifier,
String extension,
String type) {
return builder()
.session(requireNonNull(session, "session cannot be null"))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
.classifier(classifier)
.extension(extension)
.type(type)
.build();
}
static ArtifactFactoryRequestBuilder builder() {
return new ArtifactFactoryRequestBuilder();
}
@NotThreadSafe
class ArtifactFactoryRequestBuilder {
private Session session;
private RequestTrace trace;
private String groupId;
private String artifactId;
private String version;
private String classifier;
private String extension;
private String type;
ArtifactFactoryRequestBuilder() {}
public ArtifactFactoryRequestBuilder session(Session session) {
this.session = session;
return this;
}
public ArtifactFactoryRequestBuilder trace(RequestTrace trace) {
this.trace = trace;
return this;
}
public ArtifactFactoryRequestBuilder groupId(String groupId) {
this.groupId = groupId;
return this;
}
public ArtifactFactoryRequestBuilder artifactId(String artifactId) {
this.artifactId = artifactId;
return this;
}
public ArtifactFactoryRequestBuilder version(String version) {
this.version = version;
return this;
}
public ArtifactFactoryRequestBuilder classifier(String classifier) {
this.classifier = classifier;
return this;
}
public ArtifactFactoryRequestBuilder extension(String extension) {
this.extension = extension;
return this;
}
public ArtifactFactoryRequestBuilder type(String type) {
this.type = type;
return this;
}
public ArtifactFactoryRequest build() {
return new DefaultArtifactFactoryRequest(
session, trace, groupId, artifactId, version, classifier, extension, type);
}
private static class DefaultArtifactFactoryRequest extends BaseRequest<Session>
implements ArtifactFactoryRequest {
private final String groupId;
private final String artifactId;
private final String version;
private final String classifier;
private final String extension;
private final String type;
@SuppressWarnings("checkstyle:ParameterNumber")
DefaultArtifactFactoryRequest(
@Nonnull Session session,
@Nullable RequestTrace trace,
String groupId,
String artifactId,
String version,
String classifier,
String extension,
String type) {
super(session, trace);
this.groupId = groupId;
this.artifactId = artifactId;
this.version = version;
this.classifier = classifier;
this.extension = extension;
this.type = type;
}
@Override
public String getGroupId() {
return groupId;
}
@Override
public String getArtifactId() {
return artifactId;
}
@Override
public String getVersion() {
return version;
}
@Override
public String getClassifier() {
return classifier;
}
@Override
public String getExtension() {
return extension;
}
@Override
public String getType() {
return type;
}
@Override
public boolean equals(Object o) {
return o instanceof DefaultArtifactFactoryRequest that
&& Objects.equals(groupId, that.groupId)
&& Objects.equals(artifactId, that.artifactId)
&& Objects.equals(version, that.version)
&& Objects.equals(classifier, that.classifier)
&& Objects.equals(extension, that.extension)
&& Objects.equals(type, that.type);
}
@Override
public int hashCode() {
return Objects.hash(groupId, artifactId, version, classifier, extension, type);
}
@Override
public String toString() {
return "ArtifactFactoryRequest[" + "groupId='"
+ groupId + '\'' + ", artifactId='"
+ artifactId + '\'' + ", version='"
+ version + '\'' + ", classifier='"
+ classifier + '\'' + ", extension='"
+ extension + '\'' + ", type='"
+ type + '\'' + ']';
}
}
}
}
What did you see instead?
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.api.services;
import java.util.Objects;
import org.apache.maven.api.Session;
import org.apache.maven.api.annotations.Experimental;
import org.apache.maven.api.annotations.Immutable;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.NotThreadSafe;
import org.apache.maven.api.annotations.Nullable;
import static java.util.Objects.requireNonNull;
/**
*
*
* @since 4.0.0
*/
@Experimental
@Immutable
public interface ArtifactFactoryRequest extends Request<Session> {
String getGroupId();
String getArtifactId();
String getVersion();
String getClassifier();
String getExtension();
String getType();
static ArtifactFactoryRequest build(
Session session, String groupId, String artifactId, String version, String extension) {
return ArtifactFactoryRequest.builder()
.session(requireNonNull(session, "session cannot be null"))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
.extension(extension)
.build();
}
static ArtifactFactoryRequest build(
Session session,
String groupId,
String artifactId,
String version,
String classifier,
String extension,
String type) {
return ArtifactFactoryRequest.builder()
.session(requireNonNull(session, "session cannot be null"))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
.classifier(classifier)
.extension(extension)
.type(type)
.build();
}
static ArtifactFactoryRequestBuilder builder() {
return new ArtifactFactoryRequestBuilder();
}
@NotThreadSafe
class ArtifactFactoryRequestBuilder {
private Session session;
private RequestTrace trace;
private String groupId;
private String artifactId;
private String version;
private String classifier;
private String extension;
private String type;
ArtifactFactoryRequestBuilder() {}
public ArtifactFactoryRequestBuilder session(Session session) {
this.session = session;
return this;
}
public ArtifactFactoryRequestBuilder trace(RequestTrace trace) {
this.trace = trace;
return this;
}
public ArtifactFactoryRequestBuilder groupId(String groupId) {
this.groupId = groupId;
return this;
}
public ArtifactFactoryRequestBuilder artifactId(String artifactId) {
this.artifactId = artifactId;
return this;
}
public ArtifactFactoryRequestBuilder version(String version) {
this.version = version;
return this;
}
public ArtifactFactoryRequestBuilder classifier(String classifier) {
this.classifier = classifier;
return this;
}
public ArtifactFactoryRequestBuilder extension(String extension) {
this.extension = extension;
return this;
}
public ArtifactFactoryRequestBuilder type(String type) {
this.type = type;
return this;
}
public ArtifactFactoryRequest build() {
return new DefaultArtifactFactoryRequest(
session, trace, groupId, artifactId, version, classifier, extension, type);
}
private static class DefaultArtifactFactoryRequest extends BaseRequest<Session>
implements ArtifactFactoryRequest {
private final String groupId;
private final String artifactId;
private final String version;
private final String classifier;
private final String extension;
private final String type;
@SuppressWarnings("checkstyle:ParameterNumber")
DefaultArtifactFactoryRequest(
@Nonnull Session session,
@Nullable RequestTrace trace,
String groupId,
String artifactId,
String version,
String classifier,
String extension,
String type) {
super(session, trace);
this.groupId = groupId;
this.artifactId = artifactId;
this.version = version;
this.classifier = classifier;
this.extension = extension;
this.type = type;
}
@Override
public String getGroupId() {
return groupId;
}
@Override
public String getArtifactId() {
return artifactId;
}
@Override
public String getVersion() {
return version;
}
@Override
public String getClassifier() {
return classifier;
}
@Override
public String getExtension() {
return extension;
}
@Override
public String getType() {
return type;
}
@Override
public boolean equals(Object o) {
return o instanceof DefaultArtifactFactoryRequest that
&& Objects.equals(groupId, that.groupId)
&& Objects.equals(artifactId, that.artifactId)
&& Objects.equals(version, that.version)
&& Objects.equals(classifier, that.classifier)
&& Objects.equals(extension, that.extension)
&& Objects.equals(type, that.type);
}
@Override
public int hashCode() {
return Objects.hash(groupId, artifactId, version, classifier, extension, type);
}
@Override
public String toString() {
return "ArtifactFactoryRequest[" + "groupId='"
+ groupId + '\'' + ", artifactId='"
+ artifactId + '\'' + ", version='"
+ version + '\'' + ", classifier='"
+ classifier + '\'' + ", extension='"
+ extension + '\'' + ", type='"
+ type + '\'' + ']';
}
}
}
}
What is the full stack trace of any errors you encountered?
stacktrace output here
Are you interested in contributing a fix to OpenRewrite?
So if I understand correctly you expect ArtifactFactoryRequest.builder() to be changed to just builder() ? If so I'd consider that extending what the recipe covers, but not a bug with the current implementation; correct?
right. was searching for another recipe but only found this related to fully qualified imports.
BTW: IDE rule is not fixing it, as well so its blindspot overall.
might be quick one as well, due to related recipe already existent.
Seems need to adjust scope, core functionality seems covered already.
@iddeepak
might be quick one as well, due to related recipe already existent.
Seems need to adjust scope, core functionality seems covered already.
Do you think we should handle this case in ShortenFullyQualifiedMemberReferences? – Removing self-qualified static method calls – Removing self-qualified static member variables – Removing enclosing class qualifiers for static inner classes
These are just a few that came to mind.
but not a bug with the current implementation
might be new recipe, but @timtebeek has so check this. I would see it as one unit, like PMD does.
https://pmd.github.io/pmd/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname