

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Patrones de código no compatibles de la herramienta de migración
<a name="migration-tool-unsupported-patterns"></a>

La herramienta de migración convierte automáticamente la mayor parte del código de la v1 a la v2. Sin embargo, algunos patrones de código requieren migración manual. En este tema se proporcionan ejemplos detallados de los patrones no compatibles más comunes y se muestra cómo convertirlos manualmente.

Lo que sigue no es una lista de patrones exhaustiva. Si el código no se compila después de ejecutar la herramienta de migración, sigue las [instrucciones de step-by-step migración](migration-steps.md) para migrar manualmente el resto del código de la versión 1.

## Solicitud de constructores de objetos con parámetros
<a name="request-pojo-constructors"></a>

A petición POJOs (excepto Amazon S3), la herramienta de migración solo transforma los métodos setter. La herramienta no admite constructores con parámetros.

**Patrón compatible: solicite un objeto mediante setters (sin parámetros de constructor)**

Antes (código de v1 original):

```
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");
```

Después (resultado de la herramienta de migración):

```
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();
```

**Patrón no compatible: solicite un constructor de objetos con parámetros**

La herramienta de migración no puede convertir constructores con parámetros:

Antes de la migración manual, pero después de la herramienta de migración:

```
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");
```

La herramienta de migración transforma la importación a la v2, pero el código del constructor permanece sin cambios y requiere actualizaciones manuales para utilizar el patrón del compilador.

Después de la migración 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 del cliente de servicio con parámetros individuales
<a name="service-client-method-overloads"></a>

La herramienta de migración no puede convertir los métodos del cliente de servicio que utilizan parámetros individuales en lugar de objetos de solicitud (excepto Amazon S3).

Antes (código de 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");
```

Después (resultado de la herramienta de migración, no se 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");
```

Debe actualizar manualmente los argumentos del método para usar un objeto de solicitud:

```
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 tiempo de espera de solicitud
<a name="request-pojo-timeout-configuration"></a>

La herramienta de migración no convierte los métodos que establecen tiempos de espera en objetos de solicitud.

Antes (código de v1):

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

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

Después (resultado de la herramienta de migración, no se compila):

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

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

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

Debe migrar manualmente para usar el método `overrideConfiguration` de la 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();
```

## Constructores de clientes de servicio con parámetros
<a name="service-client-constructors-with-args"></a>

La herramienta de migración convierte los constructores de clientes de servicio vacíos, pero no puede convertir los constructores que aceptan parámetros como credenciales o configuración.

Antes (código de 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);
```

Después (resultado de la herramienta de migración, no se 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);
```

Debe actualizar manualmente el constructor de clientes de servicio para utilizar el patrón del 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();
```