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

[0.10] Remove deprecated features #268

Merged
merged 1 commit into from
Jan 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import java.util.Arrays;
import java.util.Locale;
import java.util.Optional;
import java.util.logging.Logger;
import software.amazon.smithy.model.SourceException;
import software.amazon.smithy.model.node.Node;
import software.amazon.smithy.model.node.ObjectNode;
Expand All @@ -27,7 +26,6 @@
import software.amazon.smithy.model.traits.AbstractTrait;
import software.amazon.smithy.model.traits.AbstractTraitBuilder;
import software.amazon.smithy.model.traits.Trait;
import software.amazon.smithy.utils.OptionalUtils;
import software.amazon.smithy.utils.SmithyBuilder;
import software.amazon.smithy.utils.ToSmithyBuilder;

Expand All @@ -37,7 +35,6 @@
*/
public final class ServiceTrait extends AbstractTrait implements ToSmithyBuilder<ServiceTrait> {
public static final ShapeId ID = ShapeId.from("aws.api#service");
private static final Logger LOGGER = Logger.getLogger(ServiceTrait.class.getName());

private final String abbreviation;
private final String cloudFormationName;
Expand Down Expand Up @@ -67,14 +64,17 @@ public Trait createTrait(ShapeId target, Node value) {
"sdkId", "arnNamespace", "cloudFormationName", "cloudTrailEventSource", "abbreviation"));

Builder builder = builder();
String sdkId = getOneStringValue(objectNode, "sdkId", "sdkServiceId")
String sdkId = objectNode.getStringMember("sdkId")
.map(StringNode::getValue)
.orElseThrow(() -> new SourceException(String.format(
"No sdkId was provided. Perhaps you could set this to %s?",
target.getName()), value));
builder.sdkId(sdkId);
getOneStringValue(objectNode, "arnNamespace", "arnService")
objectNode.getStringMember("arnNamespace")
.map(StringNode::getValue)
.ifPresent(builder::arnNamespace);
getOneStringValue(objectNode, "cloudFormationName", "productName")
objectNode.getStringMember("cloudFormationName")
.map(StringNode::getValue)
.ifPresent(builder::cloudFormationName);
objectNode.getStringMember("cloudTrailEventSource").map(StringNode::getValue)
.ifPresent(builder::cloudTrailEventSource);
Expand All @@ -84,17 +84,6 @@ public Trait createTrait(ShapeId target, Node value) {
}
}

private static Optional<String> getOneStringValue(ObjectNode object, String key1, String key2) {
return OptionalUtils.or(object.getStringMember(key1), () -> {
Optional<StringNode> result = object.getStringMember(key2);
if (result.isPresent()) {
LOGGER.warning(() -> "The `" + ID + "` property `" + key2 + "` is deprecated. Use `"
+ key1 + "` instead.");
}
return result;
}).map(StringNode::getValue);
}

/**
* @return Creates a builder used to build a {@link ServiceTrait}.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public class ServiceTraitTest {

@Test
public void loadsTraitWithString() {
Node node = Node.parse("{\"sdkServiceId\": \"Foo\"}");
Node node = Node.parse("{\"sdkId\": \"Foo\"}");
TraitFactory provider = TraitFactory.createServiceFactory();
Optional<Trait> trait = provider.createTrait(ServiceTrait.ID, ShapeId.from("ns.foo#Foo"), node);

Expand All @@ -50,7 +50,7 @@ public void loadsTraitWithString() {

@Test
public void loadsTraitWithOptionalValues() {
Node node = Node.parse("{\"sdkServiceId\": \"Foo\", \"arnService\": \"service\", \"productName\": \"Baz\"}");
Node node = Node.parse("{\"sdkId\": \"Foo\", \"arnNamespace\": \"service\", \"cloudFormationName\": \"Baz\"}");
TraitFactory provider = TraitFactory.createServiceFactory();
Optional<Trait> trait = provider.createTrait(ServiceTrait.ID, ShapeId.from("ns.foo#foo"), node);

Expand All @@ -64,7 +64,7 @@ public void loadsTraitWithOptionalValues() {

@Test
public void loadsEventSource() {
Node node = Node.parse("{\"sdkServiceId\": \"Foo\", \"cloudTrailEventSource\": \"foo.amazonaws.com\"}");
Node node = Node.parse("{\"sdkId\": \"Foo\", \"cloudTrailEventSource\": \"foo.amazonaws.com\"}");
TraitFactory provider = TraitFactory.createServiceFactory();
Optional<Trait> trait = provider.createTrait(ServiceTrait.ID, ShapeId.from("ns.foo#foo"), node);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"traits": {
"aws.api#service": {
"sdkServiceId": "Some Value"
"sdkId": "Some Value"
}
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
],
"traits": {
"aws.api#service": {
"sdkServiceId": "Some Value",
"sdkId": "Some Value",
"arnNamespace": "service",
"cloudFormationName": "SomeService"
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import java.util.Optional;
import java.util.stream.Stream;
import software.amazon.smithy.codegen.core.CodegenException;
import software.amazon.smithy.codegen.core.TemplateEngine;
import software.amazon.smithy.model.node.ArrayNode;
import software.amazon.smithy.model.node.BooleanNode;
import software.amazon.smithy.model.node.Node;
Expand All @@ -49,7 +48,7 @@
*
* @see <a href="https://freemarker.apache.org/">FreeMarker</a>
*/
public final class FreeMarkerEngine implements TemplateEngine {
public final class FreeMarkerEngine {

private final Configuration freeMarkerConfig;
private final Map<String, Object> defaultContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package software.amazon.smithy.model.loader;

import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import software.amazon.smithy.model.Model;
Expand All @@ -33,7 +32,6 @@
import software.amazon.smithy.model.shapes.LongShape;
import software.amazon.smithy.model.shapes.Shape;
import software.amazon.smithy.model.shapes.ShapeId;
import software.amazon.smithy.model.shapes.ShapeIdSyntaxException;
import software.amazon.smithy.model.shapes.ShortShape;
import software.amazon.smithy.model.shapes.StringShape;
import software.amazon.smithy.model.shapes.TimestampShape;
Expand Down Expand Up @@ -88,7 +86,6 @@
import software.amazon.smithy.model.traits.XmlNameTrait;
import software.amazon.smithy.model.traits.XmlNamespaceTrait;
import software.amazon.smithy.utils.ListUtils;
import software.amazon.smithy.utils.OptionalUtils;
import software.amazon.smithy.utils.SetUtils;

/**
Expand Down Expand Up @@ -224,26 +221,6 @@ public static boolean isPublicPreludeShape(ToShapeId id) {
return PUBLIC_PRELUDE_SHAPE_IDS.contains(toId) || PRELUDE_TRAITS.contains(toId);
}

/**
* Returns the resolved shape of a shape target by first checking if a
* shape in the namespace relative to the target matches the given name,
* and then by checking if a public prelude shape matches the given name.
*
* @param model Model to resolve against.
* @param fromNamespace Namespace the target was defined in.
* @param target The shape target (e.g., "foo", "smithy.api#String", etc.).
* @return Returns the optionally resolved shape.
* @throws ShapeIdSyntaxException if the target or namespace is invalid.
*/
public static Optional<Shape> resolveShapeId(Model model, String fromNamespace, String target) {
// First check shapes in the same namespace.
return OptionalUtils.or(
model.getShape(ShapeId.fromOptionalNamespace(fromNamespace, target)),
// Then check shapes in the prelude that are public.
() -> model.getShape(ShapeId.fromParts(NAMESPACE, target)).filter(Prelude::isPublicPreludeShape)
);
}

// Used by the ModelAssembler to load the prelude into another visitor.
static Model getPreludeModel() {
return PreludeHolder.PRELUDE;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.logging.Logger;
import software.amazon.smithy.model.SourceException;
import software.amazon.smithy.model.node.ArrayNode;
import software.amazon.smithy.model.node.Node;
Expand All @@ -40,7 +39,6 @@
* validators; smithy.suppressions and suppressions.
*/
final class ValidationLoader {
private static final Logger LOGGER = Logger.getLogger(ValidationLoader.class.getName());
private static final List<String> SEVERITIES = ListUtils.of("DANGER", "WARNING", "NOTE");
private static final List<String> SUPPRESSION_PROPERTIES = ListUtils.of("ids", "shapes", "reason");
private static final List<String> VALIDATOR_PROPERTIES = ListUtils.of(
Expand All @@ -49,35 +47,11 @@ final class ValidationLoader {
private ValidationLoader() {}

static ValidatedResult<List<ValidatorDefinition>> loadValidators(Map<String, Node> metadata) {
return loadMultiple(metadata, "validators", "smithy.validators", ValidationLoader::loadSingleValidator);
return load(metadata, "validators", ValidationLoader::loadSingleValidator);
}

static ValidatedResult<List<Suppression>> loadSuppressions(Map<String, Node> metadata) {
return loadMultiple(metadata, "suppressions", "smithy.suppressions", ValidationLoader::loadSingleSuppression);
}

private static <T> ValidatedResult<List<T>> loadMultiple(
Map<String, Node> metadata,
String newKey,
String oldKey,
Function<ObjectNode, T> f
) {
if (!metadata.containsKey(oldKey)) {
return load(metadata, newKey, f);
}

LOGGER.warning(String.format("`%s` is deprecated. Use `%s` instead", oldKey, newKey));
if (!metadata.containsKey(newKey)) {
return load(metadata, oldKey, f);
}

ValidatedResult<List<T>> result1 = load(metadata, newKey, f);
ValidatedResult<List<T>> result2 = load(metadata, oldKey, f);
List<T> merged = new ArrayList<>(result1.getResult().orElse(ListUtils.of()));
merged.addAll(result2.getResult().orElse(ListUtils.of()));
List<ValidationEvent> events = new ArrayList<>(result1.getValidationEvents());
events.addAll(result2.getValidationEvents());
return new ValidatedResult<>(merged, events);
return load(metadata, "suppressions", ValidationLoader::loadSingleSuppression);
}

private static <T> ValidatedResult<List<T>> load(
Expand Down
Loading