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

🐛 Catch up java validator to Doc Css logic #28313

Merged
merged 24 commits into from
May 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
42d0a78
catch up April 21 changes
GeorgeLuo Apr 22, 2020
a44f7ee
save
GeorgeLuo Apr 22, 2020
708cb22
more changes.
GeorgeLuo Apr 23, 2020
263aff9
more changes, added new visitor classes
GeorgeLuo Apr 30, 2020
666b691
more work to transfer the max byte len logic
GeorgeLuo Apr 30, 2020
83fc60a
finish moving css length check logic, next need to clean up original …
GeorgeLuo May 4, 2020
66ced9b
add call to validateAttrCss, remap references to builder to wrapper c…
GeorgeLuo May 4, 2020
57f9692
converted some builder references to ValidateTagResult, will need to …
GeorgeLuo May 4, 2020
03c4974
Changing implementation to use the new css doc spec.
nhant01 May 8, 2020
54d36e2
Changing implementation to use the new css doc spec.
nhant01 May 8, 2020
c19042c
Fixed up checkstyles errors and indentations.
nhant01 May 9, 2020
63813a0
Fixed a bug exit on first error condition.
nhant01 May 12, 2020
ca3b614
Update lib and version.
nhant01 May 12, 2020
bc41d22
Merge branch 'master' into GeorgeLuo-changes-apr-21
GeorgeLuo May 12, 2020
27899b9
fix the dependencies in BUILD
GeorgeLuo May 12, 2020
2ac2f0e
Merge branch 'GeorgeLuo-changes-apr-21' of https://github.com/GeorgeL…
GeorgeLuo May 12, 2020
919f657
fix build and workspace, some debug lines
GeorgeLuo May 13, 2020
0233a40
pom.xml to match bazel
GeorgeLuo May 13, 2020
5d304e1
fix jackson reference
GeorgeLuo May 13, 2020
04bec29
restore a test dependency. bazel finishes tests now.
GeorgeLuo May 13, 2020
8a94aee
fix pom
GeorgeLuo May 18, 2020
5121221
rebase pom from master
GeorgeLuo May 18, 2020
11720f6
update protobuf.version per spotbugs
GeorgeLuo May 19, 2020
0aa2f2e
Merge branch 'master' into GeorgeLuo-changes-apr-21
GeorgeLuo May 19, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 5 additions & 1 deletion validator/java/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ java_library(
deps = [
"@maven//:org_w3c_css_sac",
"@maven//:com_google_code_findbugs_jsr305",
"@maven//:org_json_json",
"@maven//:com_fasterxml_jackson_core_jackson_annotations",
"@maven//:com_fasterxml_jackson_jaxrs_jackson_jaxrs_base",
"@maven//:com_fasterxml_jackson_jaxrs_jackson_jaxrs_json_provider",
"@maven//:com_fasterxml_jackson_core_jackson_databind",
"@maven//:com_fasterxml_jackson_core_jackson_core",
"@maven//:net_sourceforge_cssparser_cssparser",
"@maven//:org_testng_testng",
"@maven//:ch_qos_logback_logback_classic",
Expand Down
6 changes: 5 additions & 1 deletion validator/java/WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = [
"com.google.code.findbugs:jsr305:3.0.2",
"org.json:json:20190722",
"com.fasterxml.jackson.core:jackson-annotations:2.11.0",
"com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.11.0",
"com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.11.0",
"com.fasterxml.jackson.core:jackson-databind:2.11.0",
"com.fasterxml.jackson.core:jackson-core:2.11.0",
"net.sourceforge.cssparser:cssparser:0.9.27",
"org.w3c.css:sac:1.3",
"org.testng:testng:6.8",
Expand Down
7 changes: 4 additions & 3 deletions validator/java/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
set -e # Exit on error
bazel clean
bazel run //:fetchAMPResources
bazel build //:amphtml_validator_java_proto_lib
bazel build -s //:amphtml_validator_java_proto_lib
bazel run //:copyValidatorJavaSource
bazel build //:amphtml_validator_lib
bazel build //:amphtml_validator_test
bazel build -s //:amphtml_validator_lib
bazel build -s //:amphtml_validator_test

2 changes: 2 additions & 0 deletions validator/java/exclude-pmd.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ dev.amp.validator.ValidatorProtos$ErrorFormat$Builder=AvoidThrowingNullPointerEx
dev.amp.validator.ValidatorProtos$ValidationResult$Builder=AvoidThrowingNullPointerException
dev.amp.validator.ValidatorProtos$ValidatorInfo$Builder=AvoidThrowingNullPointerException
dev.amp.validator.ValidatorProtos$ValueSetRequirement$Builder=AvoidThrowingNullPointerException
dev.amp.validator.ValidatorProtos$DocCssSpec$Builder=AvoidThrowingNullPointerException
dev.amp.validator.ValidatorProtos$DeclarationList$Builder=AvoidThrowingNullPointerException
dev.amp.validator.ValidatorProtos$ValueSetProvision$Builder=AvoidThrowingNullPointerException
AMPValidatorLoader=AvoidThrowingNullPointerException,SignatureDeclareThrowsException
AMPValidatorManager=AvoidThrowingNullPointerException,SignatureDeclareThrowsException
31 changes: 27 additions & 4 deletions validator/java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>

<os-maven-plugin.version>1.6.2</os-maven-plugin.version>
<protobuf.version>3.11.4</protobuf.version>
<protobuf.version>3.12.0</protobuf.version>
<maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version>
<jdk.version>1.8</jdk.version>
<main.basedir>${project.basedir}</main.basedir>
Expand Down Expand Up @@ -511,10 +511,31 @@
</build>

<dependencies>
<!-- Jackson dependencies -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>net.sourceforge.cssparser</groupId>
Expand All @@ -525,6 +546,7 @@
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.32</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
Expand All @@ -536,6 +558,7 @@
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Expand Down
41 changes: 10 additions & 31 deletions validator/java/src/main/java/dev/amp/validator/AMPHtmlHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,15 @@

package dev.amp.validator;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.amp.validator.css.CssValidationException;
import dev.amp.validator.exception.ExitOnFirstErrorException;
import dev.amp.validator.exception.MaxParseNodesException;
import dev.amp.validator.exception.TagValidationException;
import dev.amp.validator.exception.ValidatorException;
import dev.amp.validator.utils.ByteUtils;
import dev.amp.validator.utils.TagSpecUtils;
import org.json.JSONObject;
import org.json.JSONException;

import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
Expand All @@ -40,7 +39,6 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
* Validation handler which accepts callbacks from HTML parser.
Expand Down Expand Up @@ -150,30 +148,6 @@ public void startElement(final String uri, final String localName,
this.emitMissingExtensionErrors();
}

Map<String, String> attrsByKey = encounteredTag.attrsByKey();
String styleAttr = attrsByKey.get("style");
if (styleAttr != null) {
int styleLen = ByteUtils.byteLength(styleAttr);
this.context.addInlineStyleByteSize(styleLen);
for (ValidatorProtos.CssLengthSpec cssLengthSpec : this.context.getRules().getCssLengthSpec()) {
if (cssLengthSpec.getMaxBytesPerInlineStyle() != -1
&& styleLen > cssLengthSpec.getMaxBytesPerInlineStyle()) {

List<String> params = new ArrayList<>();
params.add(encounteredTag.lowerName());
params.add(Integer.toString(styleLen));
params.add(Integer.toString(cssLengthSpec.getMaxBytesPerInlineStyle()));

this.context.addError(
ValidatorProtos.ValidationError.Code.INLINE_STYLE_TOO_LONG,
this.context.getLineCol(), params,
cssLengthSpec.getSpecUrl(), this.validationResult);
//TODO - tagchowder doesn't seem to maintain duplicate attributes.
//encounteredTag.dedupeAttrs();
}
}
}

try {
ValidateTagResult resultForReferencePoint =
new ValidateTagResult(ValidatorProtos.ValidationResult.newBuilder(), null);
Expand Down Expand Up @@ -317,8 +291,8 @@ public void cdata(@Nonnull final String text) throws TagValidationException, Css
if (!this.context.getTagStack().hasAncestor("TEMPLATE")
&& this.context.getTagStack().isScriptTypeJsonChild()) {
try {
new JSONObject(text);
} catch (JSONException e) {
OBJECT_MAPPER.readTree(text);
} catch (JsonProcessingException e) {
List<String> params = new ArrayList<>();
this.context.addWarning(
ValidatorProtos.ValidationError.Code.INVALID_JSON_CDATA,
Expand Down Expand Up @@ -399,5 +373,10 @@ public void characters(final char[] ch, final int start, final int length) {
* Characters can be called multiple times per tag.
*/
private StringBuilder charactersBuilder;

/**
* Jackson ObjectMapper instance.
*/
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
}