

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Padrões de código incompatíveis da ferramenta de migração
<a name="migration-tool-unsupported-patterns"></a>

A ferramenta de migração converte automaticamente a maior parte do código da v1 para a v2. No entanto, alguns padrões de código exigem migração manual. Este tópico fornece exemplos detalhados dos padrões incompatíveis mais comuns e mostra como convertê-los manualmente.

A lista de padrões a seguir não está completa. Se seu código não for compilado após a execução da ferramenta de migração, siga as [instruções de step-by-step migração](migration-steps.md) para migrar manualmente o código v1 restante.

## Solicitar construtores de objetos com parâmetros
<a name="request-pojo-constructors"></a>

Para solicitação POJOs (excluindo o Amazon S3), a ferramenta de migração transforma somente os métodos setter. A ferramenta não é compatível com construtores com parâmetros.

**Padrão compatível: objeto de solicitação usando setters (sem parâmetros de construtor)**

Antes (código original da v1):

```
import com.amazonaws.services.sqs.model.SendMessageRequest;

SendMessageRequest request = new SendMessageRequest().withMessageBody("Hello World");
request.setQueueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue");
```

Depois (resultado da ferramenta de migração):

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;

SendMessageRequest request = SendMessageRequest.builder()
    .messageBody("Hello World").build();
request = request.toBuilder()
    .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue").build();
```

**Padrão incompatível: construtor de objeto de solicitação com parâmetros**

A ferramenta de migração não pode converter construtores com parâmetros:

Antes da migração manual, mas depois da ferramenta de migração:

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2.

// This pattern requires manual migration.
SendMessageRequest request = new SendMessageRequest(
    "https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", 
    "Hello World");
```

A ferramenta de migração transforma a importação para a v2, mas o código do construtor permanece inalterado e requer atualizações manuais para usar o padrão do construtor.

Após a migração manual:

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;

SendMessageRequest request = SendMessageRequest.builder()
    .messageBody("Hello World")
    .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue")
    .build();
```

## Métodos do cliente de serviço com parâmetros individuais
<a name="service-client-method-overloads"></a>

A ferramenta de migração não pode converter métodos de cliente de serviço que usam parâmetros individuais em vez de objetos de solicitação (exceto Amazon S3).

Antes (código da v1):

```
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClient;

AmazonSQS sqs = new AmazonSQSClient();
// The following v1 method takes individual parameters.
sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
```

Depois (resultado da ferramenta de migração: não compila):

```
import software.amazon.awssdk.services.sqs.SqsClient;  // Import updated to v2.
// No import statement for the v2 request POJO.

SqsClient sqs = SqsClient.builder().build();

// Does not compile–v2 methods only accept request POJOs.
sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
```

Você deve atualizar manualmente os argumentos do método para usar um objeto de solicitação:

```
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Add manually.

SqsClient sqs = SqsClient.builder().build();

// Corrected v2 code.
SendMessageRequest request = SendMessageRequest.builder()
    .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue")
    .messageBody("Hello World")
    .build();
sqs.sendMessage(request);
```

## Métodos de tempo limite da solicitação
<a name="request-pojo-timeout-configuration"></a>

A ferramenta de migração não converte métodos que definem tempo limite em objetos de solicitação.

Antes (código da v1):

```
import com.amazonaws.services.sqs.model.SendMessageRequest;

SendMessageRequest request = new SendMessageRequest();
request.setSdkRequestTimeout(7);
```

Depois (resultado da ferramenta de migração: não compila):

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;  // Import updated to v2.

SendMessageRequest request = SendMessageRequest.builder().build();

// Does not compile.
request.setSdkRequestTimeout(7);
```

Você deve migrar manualmente para usar o método `overrideConfiguration` da v2:

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
import java.time.Duration;

SendMessageRequest request = SendMessageRequest.builder().build();

// Corrected v2 code.
request = request.toBuilder()
    .overrideConfiguration(o -> o.apiCallTimeout(Duration.ofSeconds(7)))
    .build();
```

## Construtores de clientes de serviço com parâmetros
<a name="service-client-constructors-with-args"></a>

A ferramenta de migração converte construtores de cliente de serviço vazios, mas não pode converter construtores que aceitam parâmetros como credenciais ou configuração.

Antes (código da v1):

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClient;

AWSCredentials awsCredentials = new BasicAWSCredentials("akid", "skid");
AmazonSQS sqs = new AmazonSQSClient(awsCredentials);
```

Depois (resultado da ferramenta de migração: não compila):

```
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.services.sqs.SqsClient;  // Import updated to v2.

AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid");

// Does not compile.
SqsClient sqs = new SqsClient(awsCredentials);
```

Você deve atualizar manualmente o construtor do cliente de serviço para usar o padrão do compilador:

```
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;  // Add manually.
import software.amazon.awssdk.services.sqs.SqsClient;

AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid");

// Corrected v2 code.
SqsClient sqs = SqsClient.builder()
    .credentialsProvider(StaticCredentialsProvider.create(awsCredentials))
    .build();
```