aws-amplify / amplify-codegen

Amplify Codegen is a JavaScript toolkit library for frontend and mobile developers building Amplify applications.
Apache License 2.0
59 stars 59 forks source link

AppSync codegen models throws @Nullable @Nullable #423

Closed tjleing closed 2 years ago

tjleing commented 2 years ago

Before opening, please confirm:

How did you install the Amplify CLI?

No response

If applicable, what version of Node.js are you using?

No response

Amplify CLI Version

Issue reported with 4.18.0, but I was unable to reproduce with 4.18.0 or 6.3.1

What operating system are you using?

Mac, for Android development

Amplify Codegen Command

codegen models

Describe the bug

AppSync codegen models generates duplicate @Nullable decorators (https://github.com/awslabs/aws-mobile-appsync-sdk-android/issues/273).

Expected behavior

Only one @Nullable should be generated.

Reproduction steps

Schema/steps attached in GitHub issue. I was unable to reproduce with just setting up an Android project, amplify add auth amplify add api and amplify codegen models amplify push, so your milage may vary. In theory you should see these files generated in the app/build/generated/source/appsync/... folder, but I was never able to generate that folder in my testing.

GraphQL schema(s)

```graphql # Put schemas below this line type Tenant @model @searchable @auth(rules: [{ allow: groups, groupsField: "id" }]) { id: ID! organisations: [Organisation] @connection(name: "OrganisationsByTentant", fields: ["id"]) isLocked: Boolean! isDeleted: Boolean! updatedAt: AWSDateTime createdAt: AWSDateTime } type Organisation @model @searchable @key(name: "OrganisationsByTentant", fields: ["tenantId"]) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! users: [User] @connection(name: "UsersByOrganisation", fields: ["id"]) invoices: [Invoice] @connection(name: "InvoicesbyOrganisation", fields: ["id"]) customers: [Customer] @connection(name: "CustomersByOrganisation", fields: ["id"]) devices: [Device] @connection(name: "DevicesByOrganisation", fields: ["id"]) projects: [Project] @connection(name: "ProjectsByOrganisation", fields: ["id"]) companyName: String companyNameAddition: String address: Address taxNo: String website: AWSURL companyLogoUrl: String subscriptionType: SubcriptionType! subscriptionPricePerMonth: Float subscriptionricePerMeter: Float deviceRegistration: Boolean registrationCode: String isDeleted: Boolean! updatedAt: AWSDateTime createdAt: AWSDateTime } type Project @model @searchable @key( name: "ProjectsByOrganisation" fields: ["organisationId", "createdAt"] queryField: "projectByOrganisation" ) @key(name: "byCustomerId", fields: ["customerId"]) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! organisationId: ID! projectItems: [ProjectItem] @connection(name: "byProject", fields: ["id"]) purchases: [Purchase] @connection(name: "byProjectPurchase", fields: ["id"]) customerId: ID! type: ProjectType! name: String address: Address status: ProjectStatus! isDeleted: Boolean! updatedAt: AWSDateTime createdAt: AWSDateTime } type ProjectItem @model @searchable @key( name: "byProject" fields: ["projectId", "createdAt"] queryField: "projectItemByProject" ) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! projectId: ID! cblPlId: ID! cblPlName: String! drums: [Drum] @connection(name: "byProjectItem", fields: ["id"]) importKlz: Boolean importKlzFileUrl: String mergeLv: Boolean importLvFileUrl: String lvNo: String lineNo: String startDesc: String startLocation: String startSymbol: String endDesc: String endLocation: String endSymbol: String cableType: String cableLength: Float lineFunction: String comment: String status: ProjectStatus! isDeleted: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } type Purchase @model @searchable @key(name: "byProjectPurchase", fields: ["projectId"]) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! projectId: ID! purchasedById: ID! isOrdered: Boolean isCanceled: Boolean comment: String updatedAt: AWSDateTime createdAt: AWSDateTime } type Drum @model @searchable @key(name: "byProjectItem", fields: ["projectItemId"]) @key(name: "byCableTyp", fields: ["cableTypeId"]) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! projectItemId: ID! device: Device @connection cableTypeId: ID! dribbleCode: String cableLength: String status: String criticalAmount: String autoPurchase: Boolean isDeleted: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } type Device @model @searchable @key( name: "DevicesByOrganisation" fields: ["organisationId", "shortCode"] queryField: "deviceByOrganisation" ) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! organisationId: ID! type: DeviceType! userAgent: String shortCode: String colorHex: String hostName: String macAddress: String softwareVersion: String batteryState: Int isDeleted: Boolean isLocked: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } type Customer @model @searchable @key( name: "CustomersByOrganisation" fields: ["organisationId", "companyName"] queryField: "customerByOrganisation" ) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! organisationId: ID! projects: [Project] @connection(name: "byCustomerId", fields: ["id"]) companyName: String companyNameAddition: String address: Address firstName: String lastName: String phoneNo: String mobileNo: String eMail: AWSEmail website: AWSURL isDeleted: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } type Invoice @model @searchable @key( name: "InvoicesbyOrganisation" fields: ["organisationId", "createdAt"] queryField: "invoiceByOrganisation" ) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! organisationId: ID! pdfFileUrl: String updatedAt: AWSDateTime createdAt: AWSDateTime } type User @model @searchable @key( name: "UsersByOrganisation" fields: ["organisationId", "lastName"] queryField: "userByOrganisation" ) @auth(rules: [{ allow: groups, groupsField: "tenantId" }]) { id: ID! tenantId: ID! organisationId: ID! organisation: Organisation @connection(fields: ["organisationId"]) mainAccount: Boolean! firstName: String lastName: String shortName: String phoneNo: String mobilNo: String eMail: AWSEmail! pictureUrl: String isOnline: Boolean emailNotification: Boolean isDeleted: Boolean isLocked: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } ################ To be configured ################ type CableType @model @searchable { id: ID! drums: [Drum] @connection(name: "byCableTyp", fields: ["id"]) name: String cableTypeValidations: [CableTypeValidation] @connection(name: "byCableTypeValidations", fields: ["id"]) capacity: Float isDeleted: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } type CableTypeValidation @model @searchable @key(name: "byCableTypeValidations", fields: ["cableTypeId"]) { id: ID! cableTypeId: ID! name: String capacity: Float isDeleted: Boolean updatedAt: AWSDateTime createdAt: AWSDateTime } ################ CUSTOM OVERRIDES ################ type ModelUserConnection { items: [User] nextToken: String scannedCount: Int count: Int } type Address { latitude: String longitude: String street: String streetNo: String zipCode: Int city: String country: String } ################ CUSTOM ENUMS ################ enum ProjectStatus { open closed progress } enum ProjectType { planned dispute } enum DeviceType { android ios } enum SubcriptionType { free paid } ```

Log output

``` # Put your logs below this line > Task :clean > Task :app:clean > Task :app:preBuild UP-TO-DATE > Task :app:preDebugBuild UP-TO-DATE > Task :app:compileDebugAidl NO-SOURCE > Task :app:nodeSetup UP-TO-DATE > Task :app:compileDebugRenderscript NO-SOURCE > Task :app:installApolloCodegen npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3. > Task :app:generateDebugApolloIR > Task :app:generateDebugApolloClasses > Task :app:generateDebugBuildConfig > Task :app:writeDebugApplicationId > Task :app:generateSafeArgsDebug > Task :app:prepareLintJar UP-TO-DATE > Task :app:prepareLintJarForPublish UP-TO-DATE > Task :app:generateDebugSources > Task :app:dataBindingExportBuildInfoDebug > Task :app:dataBindingMergeGenClassesDebug > Task :app:dataBindingMergeDependencyArtifactsDebug > Task :app:generateDebugResValues > Task :app:generateDebugResources > Task :app:mergeDebugResources > Task :app:dataBindingGenBaseClassesDebug > Task :app:dataBindingExportFeaturePackageIdsDebug > Task :app:mainApkListPersistenceDebug > Task :app:createDebugCompatibleScreenManifests > Task :app:extractDeepLinksDebug > Task :app:processDebugManifest > Task :app:processDebugResources > Task :app:kaptGenerateStubsDebugKotlin > Task :app:mergeDebugShaders > Task :app:compileDebugShaders > Task :app:generateDebugAssets > Task :app:mergeDebugAssets > Task :app:processDebugJavaRes NO-SOURCE > Task :app:checkDebugDuplicateClasses > Task :app:desugarDebugFileDependencies > Task :app:mergeLibDexDebug > Task :app:mergeDebugJniLibFolders > Task :app:validateSigningDebug > Task :app:mergeDebugNativeLibs > Task :app:stripDebugDebugSymbols > Task :app:kaptDebugKotlin [WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC). > Task :app:compileDebugKotlin w: /Users/.../mobileapp/data/api/ClientFactory.kt: (22, 17): Variable 'CognitoUserPoolsSignInProvider' is never used > Task :app:mergeExtDexDebug > Task :app:javaPreCompileDebug > Task :app:compileDebugJavaWithJavac /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDevicesQuery.java:290: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDevicesQuery.java:300: error: Nullable is not a repeatable annotation type public ListDevices(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDevicesQuery.java:311: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectItemsQuery.java:301: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectItemsQuery.java:311: error: Nullable is not a repeatable annotation type public ListProjectItems(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectItemsQuery.java:322: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchTenantsQuery.java:303: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchTenantsQuery.java:315: error: Nullable is not a repeatable annotation type public SearchTenants(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchTenantsQuery.java:327: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCableTypesQuery.java:306: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCableTypesQuery.java:318: error: Nullable is not a repeatable annotation type public SearchCableTypes(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCableTypesQuery.java:330: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCableTypesQuery.java:281: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCableTypesQuery.java:291: error: Nullable is not a repeatable annotation type public ListCableTypes(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCableTypesQuery.java:302: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCustomersQuery.java:313: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCustomersQuery.java:325: error: Nullable is not a repeatable annotation type public SearchCustomers(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchCustomersQuery.java:337: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectsQuery.java:285: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectsQuery.java:295: error: Nullable is not a repeatable annotation type public ListProjects(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListProjectsQuery.java:306: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchInvoicesQuery.java:304: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchInvoicesQuery.java:316: error: Nullable is not a repeatable annotation type public SearchInvoices(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchInvoicesQuery.java:328: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListUsersQuery.java:295: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListUsersQuery.java:309: error: Nullable is not a repeatable annotation type public ListUsers(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListUsersQuery.java:322: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDrumsQuery.java:309: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDrumsQuery.java:321: error: Nullable is not a repeatable annotation type public SearchDrums(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDrumsQuery.java:333: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCustomersQuery.java:288: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCustomersQuery.java:298: error: Nullable is not a repeatable annotation type public ListCustomers(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListCustomersQuery.java:309: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectItemsQuery.java:326: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectItemsQuery.java:338: error: Nullable is not a repeatable annotation type public SearchProjectItems(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectItemsQuery.java:350: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectByOrganisationQuery.java:350: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectByOrganisationQuery.java:360: error: Nullable is not a repeatable annotation type public ProjectByOrganisation(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectByOrganisationQuery.java:371: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectItemByProjectQuery.java:366: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectItemByProjectQuery.java:376: error: Nullable is not a repeatable annotation type public ProjectItemByProject(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ProjectItemByProjectQuery.java:387: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/UserByOrganisationQuery.java:359: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/UserByOrganisationQuery.java:373: error: Nullable is not a repeatable annotation type public UserByOrganisation(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/UserByOrganisationQuery.java:386: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListPurchasesQuery.java:283: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListPurchasesQuery.java:293: error: Nullable is not a repeatable annotation type public ListPurchases(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListPurchasesQuery.java:304: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/CustomerByOrganisationQuery.java:353: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/CustomerByOrganisationQuery.java:363: error: Nullable is not a repeatable annotation type public CustomerByOrganisation(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/CustomerByOrganisationQuery.java:374: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchUsersQuery.java:314: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchUsersQuery.java:326: error: Nullable is not a repeatable annotation type public SearchUsers(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchUsersQuery.java:338: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDrumsQuery.java:286: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDrumsQuery.java:296: error: Nullable is not a repeatable annotation type public ListDrums(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListDrumsQuery.java:307: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListOrganisationsQuery.java:291: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListOrganisationsQuery.java:301: error: Nullable is not a repeatable annotation type public ListOrganisations(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListOrganisationsQuery.java:312: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListInvoicesQuery.java:279: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListInvoicesQuery.java:289: error: Nullable is not a repeatable annotation type public ListInvoices(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListInvoicesQuery.java:300: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectsQuery.java:310: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectsQuery.java:322: error: Nullable is not a repeatable annotation type public SearchProjects(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchProjectsQuery.java:334: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchPurchasesQuery.java:308: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchPurchasesQuery.java:320: error: Nullable is not a repeatable annotation type public SearchPurchases(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchPurchasesQuery.java:332: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/DeviceByOrganisationQuery.java:355: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/DeviceByOrganisationQuery.java:365: error: Nullable is not a repeatable annotation type public DeviceByOrganisation(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/DeviceByOrganisationQuery.java:376: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/InvoiceByOrganisationQuery.java:344: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/InvoiceByOrganisationQuery.java:354: error: Nullable is not a repeatable annotation type public InvoiceByOrganisation(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/InvoiceByOrganisationQuery.java:365: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchOrganisationsQuery.java:316: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchOrganisationsQuery.java:328: error: Nullable is not a repeatable annotation type public SearchOrganisations(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchOrganisationsQuery.java:340: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDevicesQuery.java:315: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDevicesQuery.java:327: error: Nullable is not a repeatable annotation type public SearchDevices(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/SearchDevicesQuery.java:339: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListTenantsQuery.java:278: error: Nullable is not a repeatable annotation type final @Nullable @Nullable List items; ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListTenantsQuery.java:288: error: Nullable is not a repeatable annotation type public ListTenants(@Nonnull String __typename, @Nullable @Nullable List items, ^ /Users/.../app/build/generated/source/appsync/com/amazonaws/amplify/generated/graphql/ListTenantsQuery.java:299: error: Nullable is not a repeatable annotation type public @Nullable @Nullable List items() { ^ 84 errors > Task :app:compileDebugJavaWithJavac FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. * Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugJavaWithJavac'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108) at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details. at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:56) at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39) at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:100) at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52) at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38) at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51) at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37) at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:39) at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory$2.execute(IncrementalCompilerFactory.java:101) at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory$2.execute(IncrementalCompilerFactory.java:97) at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:60) at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:44) at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59) at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51) at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:158) at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:126) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103) at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42) at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237) at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26) at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58) at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54) at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51) at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45) at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31) at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208) at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70) at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49) at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43) at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47) at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140) ... 34 more * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.6.4/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 1m 15s ```

Additional information

I would've just transferred the issue but it's in the awslabs GH organization, so a transfer wasn't possible.

dpilch commented 2 years ago

Hi @tjleing is this a separate issue from https://github.com/awslabs/aws-mobile-appsync-sdk-android/issues/273?

tjleing commented 2 years ago

As mentioned in the issue body, that is the same issue, we have decided that it is a Codegen issue and not an AppSync SDK issue because the issue is a duplicated decorator within the generated code.

tjleing commented 2 years ago

Despite appearing to be Amplify codegen at first, the issue is actually AppSync SDK codegen. Closing.