openrewrite / openrewrite/rewrite-migrate-java
Replace deprecated "denigrated" `java.security.cert` APIs that represent DNs as Principal or String objects. `JDK-8250970`
Open
Nobody has claimed this yet.
recipe
- Dominant language
- Java
- Stars
- 156
- Forks
- 130
- Avg merge
- 20h 57m
- Merged PRs (30d)
- 21
Description
/**
* Gets the {@code subject} (subject distinguished name) value
* from the certificate. If the {@code subject} value is empty,
* then the {@code getName()} method of the returned
* {@code Principal} object returns an empty string ("").
*
* <p> The ASN.1 definition for this is:
* <pre>
* subject Name
* </pre>
*
* <p>See {@link #getIssuerDN() getIssuerDN} for {@code Name}
* and other relevant definitions.
*
* @return a Principal whose name is the subject name.
*
* @deprecated Use {@link #getSubjectX500Principal} instead. This method
* returns the {@code subject} as an implementation specific
* {@code Principal} object, which should not be relied upon by portable
* code.
*/
@Deprecated(since="16")
public abstract Principal getSubjectDN();
/**
* Returns the subject (subject distinguished name) value from the
* certificate as an {@code X500Principal}. If the subject value
* is empty, then the {@code getName()} method of the returned
* {@code X500Principal} object returns an empty string ("").
* <p>
* It is recommended that subclasses override this method.
*
* @return an {@code X500Principal} representing the subject
* distinguished name
* @since 1.4
*/
public X500Principal getSubjectX500Principal() {
if (subjectX500Principal == null) {
subjectX500Principal = X509CertImpl.getSubjectX500Principal(this);
}
return subjectX500Principal;
}
Other deprecations : https://bugs.openjdk.org/browse/JDK-8250970
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with JDK-8250970 to identify the deprecated java.security.cert APIs covered beyond the getSubjectDN example. Then locate the corresponding migration recipe entry points in this repository and determine how each API should be replaced, including getSubjectDN with getSubjectX500Principal. Done means the deprecated DN representations listed by the issue are covered by the migration recipe.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- tooling
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100