Skip to content

Add support for generating waiter acceptors. #2036

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

Merged
merged 2 commits into from
Sep 15, 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 @@ -15,6 +15,7 @@

package software.amazon.awssdk.codegen.jmespath.component;

import software.amazon.awssdk.codegen.jmespath.parser.JmesPathVisitor;
import software.amazon.awssdk.utils.Validate;

/**
Expand Down Expand Up @@ -89,7 +90,7 @@ public BracketSpecifierWithQuestionMark asBracketSpecifierWithQuestionMark() {
return bracketSpecifierWithQuestionMark;
}

public void visit(Visitor visitor) {
public void visit(JmesPathVisitor visitor) {
if (isBracketSpecifierWithContents()) {
visitor.visitBracketSpecifierWithContents(asBracketSpecifierWithContents());
} else if (isBracketSpecifierWithoutContents()) {
Expand All @@ -100,15 +101,4 @@ public void visit(Visitor visitor) {
throw new IllegalStateException();
}
}

public interface Visitor {
default void visitBracketSpecifierWithContents(BracketSpecifierWithContents bracketSpecifierWithContents) {
}

default void visitBracketSpecifierWithoutContents(BracketSpecifierWithoutContents bracketSpecifierWithContents) {
}

default void visitBracketSpecifierWithQuestionMark(BracketSpecifierWithQuestionMark bracketSpecifierWithContents) {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

package software.amazon.awssdk.codegen.jmespath.component;

import software.amazon.awssdk.codegen.jmespath.parser.JmesPathVisitor;
import software.amazon.awssdk.utils.Validate;

/**
Expand Down Expand Up @@ -81,7 +82,7 @@ public SliceExpression asSliceExpression() {
return sliceExpression;
}

public void visit(Visitor visitor) {
public void visit(JmesPathVisitor visitor) {
if (isNumber()) {
visitor.visitNumber(asNumber());
} else if (isWildcardExpression()) {
Expand All @@ -92,15 +93,4 @@ public void visit(Visitor visitor) {
throw new IllegalStateException();
}
}

public interface Visitor {
default void visitNumber(int asNumber) {
}

default void visitWildcardExpression(WildcardExpression asWildcardExpression) {
}

default void visitSliceExpression(SliceExpression asSliceExpression) {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

package software.amazon.awssdk.codegen.jmespath.component;

import software.amazon.awssdk.codegen.jmespath.parser.JmesPathVisitor;
import software.amazon.awssdk.utils.Validate;

/**
Expand Down Expand Up @@ -297,7 +298,7 @@ public CurrentNode asCurrentNode() {
return currentNode;
}

public void visit(Visitor visitor) {
public void visit(JmesPathVisitor visitor) {
if (isSubExpression()) {
visitor.visitSubExpression(asSubExpression());
} else if (isSubExpression()) {
Expand Down Expand Up @@ -336,57 +337,4 @@ public void visit(Visitor visitor) {
throw new IllegalStateException();
}
}

public interface Visitor {
default void visitExpression(Expression expression) {
}

default void visitSubExpression(SubExpression subExpression) {
}

default void visitIndexExpression(IndexExpression indexExpression) {
}

default void visitComparatorExpression(ComparatorExpression comparatorExpression) {
}

default void visitOrExpression(OrExpression orExpression) {
}

default void visitIdentifier(String identifier) {
}

default void visitAndExpression(AndExpression andExpression) {
}

default void visitNotExpression(NotExpression notExpression) {
}

default void visitParenExpression(ParenExpression parenExpression) {
}

default void visitWildcardExpression(WildcardExpression star) {
}

default void visitMultiSelectList(MultiSelectList multiSelectList) {
}

default void visitMultiSelectHash(MultiSelectHash multiSelectHash) {
}

default void visitLiteral(Literal literal) {
}

default void visitFunctionExpression(FunctionExpression functionExpression) {
}

default void visitPipeExpression(PipeExpression pipeExpression) {
}

default void visitRawString(String rawString) {
}

default void visitCurrentNode(CurrentNode currentNode) {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package software.amazon.awssdk.codegen.jmespath.component;


import software.amazon.awssdk.codegen.jmespath.parser.JmesPathVisitor;
import software.amazon.awssdk.utils.Validate;

/**
Expand Down Expand Up @@ -62,7 +63,7 @@ public ExpressionType asExpressionType() {
return expressionType;
}

public void visit(Visitor visitor) {
public void visit(JmesPathVisitor visitor) {
if (isExpression()) {
visitor.visitExpression(asExpression());
} else if (isExpressionType()) {
Expand All @@ -71,12 +72,4 @@ public void visit(Visitor visitor) {
throw new IllegalStateException();
}
}

interface Visitor {
default void visitExpression(Expression expression) {
}

default void visitExpressionType(ExpressionType expressionType) {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

package software.amazon.awssdk.codegen.jmespath.component;

import software.amazon.awssdk.codegen.jmespath.parser.JmesPathVisitor;
import software.amazon.awssdk.utils.Validate;

/**
Expand Down Expand Up @@ -108,8 +109,7 @@ public WildcardExpression asWildcardExpression() {
return wildcardExpression;
}


public void visit(Visitor visitor) {
public void visit(JmesPathVisitor visitor) {
if (isIdentifier()) {
visitor.visitIdentifier(asIdentifier());
} else if (isMultiSelectList()) {
Expand All @@ -124,21 +124,4 @@ public void visit(Visitor visitor) {
throw new IllegalStateException();
}
}

interface Visitor {
default void visitIdentifier(String identifier) {
}

default void visitMultiSelectList(MultiSelectList multiSelectList) {
}

default void visitMultiSelectHash(MultiSelectHash multiSelectHash) {
}

default void visitFunctionExpression(FunctionExpression functionExpression) {
}

default void visitWildcardExpression(WildcardExpression wildcardExpression) {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,18 +97,18 @@ private ParseResult<Expression> parseExpression(int startPosition, int endPositi

return CompositeParser.firstTry(this::parseSubExpression, Expression::subExpression)
.thenTry(this::parseIndexExpression, Expression::indexExpression)
.thenTry(this::parseComparatorExpression, Expression::comparatorExpression)
.thenTry(this::parseNotExpression, Expression::notExpression)
.thenTry(this::parseAndExpression, Expression::andExpression)
.thenTry(this::parseOrExpression, Expression::orExpression)
.thenTry(this::parseComparatorExpression, Expression::comparatorExpression)
.thenTry(this::parsePipeExpression, Expression::pipeExpression)
.thenTry(this::parseIdentifier, Expression::identifier)
.thenTry(this::parseAndExpression, Expression::andExpression)
.thenTry(this::parseNotExpression, Expression::notExpression)
.thenTry(this::parseParenExpression, Expression::parenExpression)
.thenTry(this::parseWildcardExpression, Expression::wildcardExpression)
.thenTry(this::parseMultiSelectList, Expression::multiSelectList)
.thenTry(this::parseMultiSelectHash, Expression::multiSelectHash)
.thenTry(this::parseLiteral, Expression::literal)
.thenTry(this::parseFunctionExpression, Expression::functionExpression)
.thenTry(this::parsePipeExpression, Expression::pipeExpression)
.thenTry(this::parseRawString, Expression::rawString)
.thenTry(this::parseCurrentNode, Expression::currentNode)
.parse(startPosition, endPosition);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file 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 software.amazon.awssdk.codegen.jmespath.parser;

import software.amazon.awssdk.codegen.jmespath.component.AndExpression;
import software.amazon.awssdk.codegen.jmespath.component.BracketSpecifier;
import software.amazon.awssdk.codegen.jmespath.component.BracketSpecifierWithContents;
import software.amazon.awssdk.codegen.jmespath.component.BracketSpecifierWithQuestionMark;
import software.amazon.awssdk.codegen.jmespath.component.BracketSpecifierWithoutContents;
import software.amazon.awssdk.codegen.jmespath.component.ComparatorExpression;
import software.amazon.awssdk.codegen.jmespath.component.CurrentNode;
import software.amazon.awssdk.codegen.jmespath.component.Expression;
import software.amazon.awssdk.codegen.jmespath.component.ExpressionType;
import software.amazon.awssdk.codegen.jmespath.component.FunctionExpression;
import software.amazon.awssdk.codegen.jmespath.component.IndexExpression;
import software.amazon.awssdk.codegen.jmespath.component.Literal;
import software.amazon.awssdk.codegen.jmespath.component.MultiSelectHash;
import software.amazon.awssdk.codegen.jmespath.component.MultiSelectList;
import software.amazon.awssdk.codegen.jmespath.component.NotExpression;
import software.amazon.awssdk.codegen.jmespath.component.OrExpression;
import software.amazon.awssdk.codegen.jmespath.component.ParenExpression;
import software.amazon.awssdk.codegen.jmespath.component.PipeExpression;
import software.amazon.awssdk.codegen.jmespath.component.SliceExpression;
import software.amazon.awssdk.codegen.jmespath.component.SubExpression;
import software.amazon.awssdk.codegen.jmespath.component.SubExpressionRight;
import software.amazon.awssdk.codegen.jmespath.component.WildcardExpression;

/**
* A visitor across all of the JMESPath expression types. This can be passed to any 'union' type visitors, like
* {@link Expression#visit(JmesPathVisitor)}.
*/
public interface JmesPathVisitor {
void visitExpression(Expression input);

void visitSubExpression(SubExpression input);

void visitSubExpressionRight(SubExpressionRight input);

void visitIndexExpression(IndexExpression input);

void visitBracketSpecifier(BracketSpecifier input);

void visitBracketSpecifierWithContents(BracketSpecifierWithContents input);

void visitSliceExpression(SliceExpression input);

void visitBracketSpecifierWithoutContents(BracketSpecifierWithoutContents input);

void visitBracketSpecifierWithQuestionMark(BracketSpecifierWithQuestionMark input);

void visitComparatorExpression(ComparatorExpression input);

void visitOrExpression(OrExpression input);

void visitIdentifier(String input);

void visitAndExpression(AndExpression input);

void visitNotExpression(NotExpression input);

void visitParenExpression(ParenExpression input);

void visitWildcardExpression(WildcardExpression input);

void visitMultiSelectList(MultiSelectList input);

void visitMultiSelectHash(MultiSelectHash input);

void visitExpressionType(ExpressionType asExpressionType);

void visitLiteral(Literal input);

void visitFunctionExpression(FunctionExpression input);

void visitPipeExpression(PipeExpression input);

void visitRawString(String input);

void visitCurrentNode(CurrentNode input);

void visitNumber(int input);
}
Original file line number Diff line number Diff line change
Expand Up @@ -678,9 +678,7 @@ public Metadata withWaitersPackageName(String waitersPackageName) {
return this;
}


public String getFullWaitersPackageName() {
return joinPackageNames(rootPackageName, getWaitersPackageName());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ private CodeBlock sdkFieldInitializer(MemberModel m) {
.add("$T.<$T>builder($T.$L)\n",
sdkFieldType, typeProvider.fieldType(m),
ClassName.get(MarshallingType.class), m.getMarshallingType())
.add(".memberName($S)\n", m.getC2jName())
.add(".getter(getter($T::$L))\n",
className(), m.getFluentGetterMethodName())
.add(".setter(setter($T::$L))\n",
Expand Down
Loading