Skip to content

Commit 89c8c00

Browse files
authored
Merge pull request #733 from forcedotcom/dev-3
@W-11321290@ Merging dev-3 to release-3 for 3.2.0
2 parents 131ee28 + b976639 commit 89c8c00

File tree

67 files changed

+1503
-390
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1503
-390
lines changed

cli-messaging/build.gradle.kts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
plugins {
2+
java
3+
}
4+
5+
version = "1.0"
6+
java.sourceCompatibility = JavaVersion.VERSION_1_8
7+
group = "com.salesforce.messaging"
8+
9+
repositories {
10+
mavenCentral()
11+
}
12+
13+
dependencies {
14+
implementation ("com.googlecode.json-simple:json-simple:1.1.1") {
15+
exclude("junit")
16+
}
17+
implementation("com.google.code.gson:gson:2.3")
18+
testImplementation("junit", "junit", "4.12")
19+
implementation("com.google.guava:guava:28.0-jre")
20+
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
21+
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
22+
}
23+
24+
tasks.getByName<Test>("test") {
25+
useJUnitPlatform()
26+
}
53.9 KB
Binary file not shown.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.1-bin.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists

cli-messaging/settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rootProject.name = "cli-messaging"

pmd-cataloger/src/main/java/sfdc/sfdx/scanner/messaging/SfdxMessager.java renamed to cli-messaging/src/main/java/com/salesforce/messaging/CliMessager.java

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
1-
package sfdc.sfdx.scanner.messaging;
2-
3-
import com.google.gson.Gson;
1+
package com.salesforce.messaging;
42

53
import java.util.ArrayList;
64
import java.util.Arrays;
75
import java.util.List;
86

9-
public class SfdxMessager {
7+
import com.google.gson.Gson;
8+
9+
public class CliMessager {
1010
// The START string gives us something to scan for when we're processing output.
1111
private static final String START = "SFDX-START";
1212
// The END string lets us know when a message stops, which should prevent bugs involving multi-line output.
1313
private static final String END = "SFDX-END";
1414

1515
private static final List<Message> MESSAGES = new ArrayList<>();
1616

17-
private static SfdxMessager INSTANCE = null;
18-
19-
public static SfdxMessager getInstance() {
20-
if (INSTANCE == null) {
21-
INSTANCE = new SfdxMessager();
22-
}
23-
return INSTANCE;
17+
public static CliMessager getInstance() {
18+
return LazyHolder.INSTANCE;
2419
}
2520

2621
/**
@@ -31,7 +26,7 @@ public static SfdxMessager getInstance() {
3126
*
3227
* @param exception to send to Typescript layer
3328
*/
34-
public void addMessage(SfdxScannerException exception) {
29+
public void addMessage(MessagePassableException exception) {
3530
final EventKey eventKey = exception.getEventKey();
3631
addMessage(
3732
exception.getFullStacktrace(),
@@ -65,7 +60,12 @@ public void addMessage(String internalLog, EventKey eventKey, String... args) {
6560
MESSAGES.add(message);
6661
}
6762

68-
63+
/**
64+
* Convert all messages stored by the instance into a JSON-formatted string, enclosed in the start and end strings.
65+
* Java code can use this method to log the messages to console, and TypeScript code can seek the start and stop
66+
* strings to get an array of messages that can be deserialized.
67+
* @return
68+
*/
6969
public String getAllMessagesWithFormatting() {
7070
final String messagesAsJson = getMessagesAsJson();
7171
return START + messagesAsJson + END;
@@ -75,7 +75,6 @@ private String getMessagesAsJson() {
7575
return new Gson().toJson(MESSAGES);
7676
}
7777

78-
7978
/**
8079
* TO BE USED ONLY BY TESTS!
8180
*
@@ -93,15 +92,8 @@ public void resetMessages() {
9392
MESSAGES.clear();
9493
}
9594

96-
enum MessageHandler {
97-
UX,
98-
INTERNAL
99-
}
100-
101-
enum MessageType {
102-
INFO,
103-
WARNING,
104-
ERROR
95+
private static final class LazyHolder {
96+
// Postpone initialization until first use
97+
private static final CliMessager INSTANCE = new CliMessager();
10598
}
10699
}
107-

pmd-cataloger/src/main/java/sfdc/sfdx/scanner/messaging/EventKey.java renamed to cli-messaging/src/main/java/com/salesforce/messaging/EventKey.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package sfdc.sfdx.scanner.messaging;
2-
import static sfdc.sfdx.scanner.messaging.SfdxMessager.*;
1+
package com.salesforce.messaging;
2+
import static com.salesforce.messaging.Message.*;
33

44
public enum EventKey {
5-
// MAKE SURE messageKey OF EVERY VALUE ADDED HERE HAS AN ENTRY IN 'messages/EventKeyTemplates.js'!
5+
// MAKE SURE `messageKey` OF EVERY VALUE ADDED HERE HAS AN ENTRY IN 'messages/EventKeyTemplates.js'!
66
INFO_GENERAL_INTERNAL_LOG("info.generalInternalLog", 1, MessageType.INFO, MessageHandler.INTERNAL, true),
77
WARNING_INVALID_CAT_SKIPPED("warning.invalidCategorySkipped", 1, MessageType.WARNING, MessageHandler.UX, true),
88
WARNING_INVALID_RULESET_SKIPPED("warning.invalidRulesetSkipped", 1, MessageType.WARNING, MessageHandler.UX, true),
@@ -19,13 +19,15 @@ public enum EventKey {
1919
ERROR_EXTERNAL_MULTIPLE_RULE_DESC("error.external.multipleRuleDesc", 2, MessageType.ERROR, MessageHandler.UX, false),
2020
ERROR_EXTERNAL_RECURSION_LIMIT("error.external.recursionLimitReached", 2, MessageType.ERROR, MessageHandler.UX, false),
2121
ERROR_EXTERNAL_XML_NOT_READABLE("error.external.xmlNotReadable", 2, MessageType.ERROR, MessageHandler.UX, false),
22-
ERROR_EXTERNAL_XML_NOT_PARSABLE("error.external.xmlNotParsable", 2, MessageType.ERROR, MessageHandler.UX, false);
23-
24-
String messageKey;
25-
int argCount;
26-
MessageType messageType;
27-
MessageHandler messageHandler;
28-
boolean verbose;//true: only when verbose is true, false: ignores verbose flag and always prints
22+
ERROR_EXTERNAL_XML_NOT_PARSABLE("error.external.xmlNotParsable", 2, MessageType.ERROR, MessageHandler.UX, false),
23+
WARNING_MULTIPLE_METHOD_TARGET_MATCHES("warning.multipleMethodTargetMatches", 3, MessageType.WARNING, MessageHandler.UX, false),
24+
WARNING_NO_METHOD_TARGET_MATCHES("warning.noMethodTargetMatches", 2, MessageType.WARNING, MessageHandler.UX, false);
25+
26+
final String messageKey;
27+
final int argCount;
28+
final MessageType messageType;
29+
final MessageHandler messageHandler;
30+
final boolean verbose;//true: only when verbose is true, false: ignores verbose flag and always prints
2931

3032
EventKey(String messageKey, int argCount, MessageType messageType, MessageHandler messageHandler, boolean verbose) {
3133
this.messageKey = messageKey;
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,25 @@
1-
package sfdc.sfdx.scanner.messaging;
1+
package com.salesforce.messaging;
22

3-
import com.google.gson.Gson;
4-
import static sfdc.sfdx.scanner.messaging.SfdxMessager.*;
53
import java.time.Instant;
64
import java.util.List;
75

86
public class Message {
9-
private String messageKey;
10-
private List<String> args;
11-
private String internalLog;
12-
private MessageType type;
13-
private MessageHandler handler;
14-
private boolean verbose;
15-
private long time;
7+
final private String messageKey;
8+
final private List<String> args;
9+
final private String internalLog;
10+
final private MessageType type;
11+
final private MessageHandler handler;
12+
final private boolean verbose;
13+
final private long time;
1614

1715
Message(String messageKey, List<String> args, String internalLog, MessageType type, MessageHandler handler, boolean verbose) {
1816
this.messageKey = messageKey;
1917
this.args = args;
2018
this.internalLog = internalLog;
2119
this.type = type;
2220
this.handler = handler;
23-
this.time = Instant.now().toEpochMilli();
2421
this.verbose = verbose;
25-
}
26-
27-
String toJson() {
28-
return new Gson().toJson(this);
22+
this.time = Instant.now().toEpochMilli();
2923
}
3024

3125
public String getMessageKey() {
@@ -40,4 +34,14 @@ public String getInternalLog() {
4034
return internalLog;
4135
}
4236

37+
enum MessageHandler {
38+
UX,
39+
INTERNAL
40+
}
41+
42+
enum MessageType {
43+
INFO,
44+
WARNING,
45+
ERROR
46+
}
4347
}

pmd-cataloger/src/main/java/sfdc/sfdx/scanner/messaging/SfdxScannerException.java renamed to cli-messaging/src/main/java/com/salesforce/messaging/MessagePassableException.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
1-
package sfdc.sfdx.scanner.messaging;
1+
package com.salesforce.messaging;
22

33
import com.google.common.base.Throwables;
4-
import sfdc.sfdx.scanner.messaging.EventKey;
54

65
import java.util.Arrays;
76

87
/**
98
* Internal exception representation.
109
* Extends RuntimeException to avoid declaring everywhere
11-
* Handles capability to plug into SfdxMessager
10+
* Handles capability to plug into CliMessager
1211
*/
13-
public class SfdxScannerException extends RuntimeException {
12+
public class MessagePassableException extends RuntimeException {
1413

1514
private final EventKey eventKey;
1615
private final String[] args;
1716

18-
public SfdxScannerException(EventKey eventKey, String... args) {
17+
public MessagePassableException(EventKey eventKey, String... args) {
1918
this(eventKey, null, args);
2019
}
2120

22-
public SfdxScannerException(EventKey eventKey, Throwable throwable, String... args) {
21+
public MessagePassableException(EventKey eventKey, Throwable throwable, String... args) {
2322
super(throwable);
2423

2524
this.eventKey = eventKey;
@@ -40,7 +39,7 @@ public String getFullStacktrace() {
4039

4140
@Override
4241
public String toString() {
43-
return "SfdxScannerException{" +
42+
return "MessagePassableException{" +
4443
"eventKey=" + eventKey +
4544
", args=" + Arrays.toString(args) +
4645
'}';

pmd-cataloger/src/test/java/sfdc/sfdx/scanner/messaging/EventKeyTest.java renamed to cli-messaging/src/test/java/com/salesforce/messaging/EventKeyTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package sfdc.sfdx.scanner.messaging;
1+
package com.salesforce.messaging;
22

33
import org.json.simple.JSONObject;
44
import org.json.simple.parser.JSONParser;
@@ -12,7 +12,7 @@
1212
import org.junit.runners.Parameterized;
1313
import org.junit.runners.Parameterized.Parameters;
1414

15-
import static sfdc.sfdx.scanner.messaging.SfdxMessager.*;
15+
import static com.salesforce.messaging.Message.*;
1616

1717
import java.io.IOException;
1818
import java.nio.file.Files;

messages/EventKeyTemplates.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ module.exports = {
1818
"pmdSkippedFile": "PMD failed to evaluate against file '%s'. Message: %s",
1919
"pmdSuppressedViolation": "PMD suppressed violation against file '%s'. Message: %s. Suppression Type: %s. User Message: %s",
2020
"unexpectedPmdNodeType": "Encountered unexpected PMD node of type '%s'",
21+
"multipleMethodTargetMatches": "Total of %s methods in file %s matched name #%s",
22+
"noMethodTargetMatches": "No methods in file %s matched name #%s()",
2123
"pmdConfigError": "PMD failed to evaluate rule '%s'. Message: %s"
2224
},
2325
"error": {

0 commit comments

Comments
 (0)