Skip to content
Open
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
@@ -1,6 +1,6 @@
# Release History

## 1.5.0 (2026-03-17)
## 1.5.0 (2026-04-06)

- Azure Resource Manager Storage Mover client library for Java. This package contains Microsoft Azure SDK for Storage Mover Management SDK. The Azure Storage Mover REST API. Package api-version 2025-12-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).

Expand All @@ -18,6 +18,8 @@

* `models.Connection` was added

* `models.SchedulerTime` was added

Comment on lines 19 to +22
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changelog notes that SchedulerTime was added, but it doesn’t call out the (breaking) change where ScheduleInfo now uses SchedulerTime (and isActive becomes nullable). Please ensure the CHANGELOG captures this API shape change explicitly so release notes match the actual public surface.

Copilot uses AI. Check for mistakes.
* `models.AzureKeyVaultS3WithHmacCredentials` was added

* `models.S3WithHmacEndpointUpdateProperties` was added
Expand Down Expand Up @@ -52,8 +54,8 @@

#### `models.EndpointBaseProperties` was modified

* `withEndpointKind(models.EndpointKind)` was added
* `endpointKind()` was added
* `withEndpointKind(models.EndpointKind)` was added

#### `models.AzureStorageNfsFileShareEndpointProperties` was modified

Expand All @@ -70,6 +72,8 @@
#### `models.JobDefinitionUpdateParameters` was modified

* `dataIntegrityValidation()` was added
* `schedule()` was added
* `withSchedule(models.ScheduleInfo)` was added
* `withDataIntegrityValidation(models.DataIntegrityValidation)` was added
* `connections()` was added
* `withConnections(java.util.List)` was added
Expand All @@ -80,28 +84,29 @@

#### `models.JobDefinition` was modified

* `connections()` was added
* `dataIntegrityValidation()` was added
* `schedule()` was added
* `preservePermissions()` was added
* `schedule()` was added
* `connections()` was added

#### `models.JobDefinition$Update` was modified

* `withDataIntegrityValidation(models.DataIntegrityValidation)` was added
* `withConnections(java.util.List)` was added
* `withSchedule(models.ScheduleInfo)` was added

#### `models.JobRun` was modified

* `warnings()` was added
* `scheduledExecutionTime()` was added
* `triggerType()` was added
* `warnings()` was added

#### `models.JobDefinition$Definition` was modified

* `withDataIntegrityValidation(models.DataIntegrityValidation)` was added
* `withPreservePermissions(java.lang.Boolean)` was added
* `withConnections(java.util.List)` was added
* `withSchedule(models.ScheduleInfo)` was added
* `withPreservePermissions(java.lang.Boolean)` was added

#### `models.EndpointType` was modified

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,7 @@ import com.azure.resourcemanager.storagemover.models.Frequency;
import com.azure.resourcemanager.storagemover.models.JobType;
import com.azure.resourcemanager.storagemover.models.Minute;
import com.azure.resourcemanager.storagemover.models.ScheduleInfo;
import com.azure.resourcemanager.storagemover.models.Time;
import com.azure.resourcemanager.storagemover.models.SchedulerTime;
import java.time.OffsetDateTime;
import java.util.Arrays;

Expand Down Expand Up @@ -829,7 +829,7 @@ public final class JobDefinitionsCreateOrUpdateSamples {
"/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.StorageMover/storageMovers/examples-storageMoverName/connections/example-connection"))
.withSchedule(new ScheduleInfo().withFrequency(Frequency.WEEKLY)
.withIsActive(true)
.withExecutionTime(new Time().withHour(9).withMinute(Minute.ZERO))
.withExecutionTime(new SchedulerTime().withHour(9).withMinute(Minute.ZERO))
.withStartDate(OffsetDateTime.parse("2025-12-01T00:00:00Z"))
.withDaysOfWeek(Arrays.asList("Monday", "Wednesday", "Friday"))
.withEndDate(OffsetDateTime.parse("2025-12-31T12:00:00Z")))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.azure.json.JsonWriter;
import com.azure.resourcemanager.storagemover.models.CopyMode;
import com.azure.resourcemanager.storagemover.models.DataIntegrityValidation;
import com.azure.resourcemanager.storagemover.models.ScheduleInfo;
import java.io.IOException;
import java.util.List;

Expand Down Expand Up @@ -44,6 +45,11 @@ public final class JobDefinitionUpdateProperties implements JsonSerializable<Job
*/
private DataIntegrityValidation dataIntegrityValidation;

/*
* Schedule information for the Job Definition.
*/
private ScheduleInfo schedule;

/**
* Creates an instance of JobDefinitionUpdateProperties class.
*/
Expand Down Expand Up @@ -150,6 +156,26 @@ public JobDefinitionUpdateProperties withDataIntegrityValidation(DataIntegrityVa
return this;
}

/**
* Get the schedule property: Schedule information for the Job Definition.
*
* @return the schedule value.
*/
public ScheduleInfo schedule() {
return this.schedule;
}

/**
* Set the schedule property: Schedule information for the Job Definition.
*
* @param schedule the schedule value to set.
* @return the JobDefinitionUpdateProperties object itself.
*/
public JobDefinitionUpdateProperties withSchedule(ScheduleInfo schedule) {
this.schedule = schedule;
return this;
}

/**
* {@inheritDoc}
*/
Expand All @@ -162,6 +188,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeArrayField("connections", this.connections, (writer, element) -> writer.writeString(element));
jsonWriter.writeStringField("dataIntegrityValidation",
this.dataIntegrityValidation == null ? null : this.dataIntegrityValidation.toString());
jsonWriter.writeJsonField("schedule", this.schedule);
return jsonWriter.writeEndObject();
}

Expand Down Expand Up @@ -193,6 +220,8 @@ public static JobDefinitionUpdateProperties fromJson(JsonReader jsonReader) thro
} else if ("dataIntegrityValidation".equals(fieldName)) {
deserializedJobDefinitionUpdateProperties.dataIntegrityValidation
= DataIntegrityValidation.fromString(reader.getString());
} else if ("schedule".equals(fieldName)) {
deserializedJobDefinitionUpdateProperties.schedule = ScheduleInfo.fromJson(reader);
} else {
reader.skipChildren();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,13 @@ public JobDefinitionImpl withConnections(List<String> connections) {
}

public JobDefinitionImpl withSchedule(ScheduleInfo schedule) {
this.innerModel().withSchedule(schedule);
return this;
if (isInCreateMode()) {
this.innerModel().withSchedule(schedule);
return this;
} else {
this.updateJobDefinition.withSchedule(schedule);
return this;
}
}

public JobDefinitionImpl withDataIntegrityValidation(DataIntegrityValidation dataIntegrityValidation) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ public final class Frequency extends ExpandableStringEnum<Frequency> {
*/
public static final Frequency ONETIME = fromString("Onetime");

/**
* No schedule frequency. The job definition will not run on a schedule.
*/
public static final Frequency NONE = fromString("None");

/**
* Creates a new instance of Frequency value.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ interface WithPreservePermissions {
* The template for JobDefinition update.
*/
interface Update extends UpdateStages.WithDescription, UpdateStages.WithCopyMode, UpdateStages.WithAgentName,
UpdateStages.WithConnections, UpdateStages.WithDataIntegrityValidation {
UpdateStages.WithConnections, UpdateStages.WithDataIntegrityValidation, UpdateStages.WithSchedule {
/**
* Executes the update request.
*
Expand Down Expand Up @@ -524,6 +524,19 @@ interface WithDataIntegrityValidation {
*/
Update withDataIntegrityValidation(DataIntegrityValidation dataIntegrityValidation);
}

/**
* The stage of the JobDefinition update allowing to specify schedule.
*/
interface WithSchedule {
/**
* Specifies the schedule property: Schedule information for the Job Definition..
*
Comment on lines +531 to +534
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor JavaDoc typo: "Schedule information for the Job Definition.." has a double period.

Copilot uses AI. Check for mistakes.
* @param schedule Schedule information for the Job Definition.
* @return the next definition stage.
*/
Update withSchedule(ScheduleInfo schedule);
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,29 @@ public JobDefinitionUpdateParameters withDataIntegrityValidation(DataIntegrityVa
return this;
}

/**
* Get the schedule property: Schedule information for the Job Definition.
*
* @return the schedule value.
*/
public ScheduleInfo schedule() {
return this.innerProperties() == null ? null : this.innerProperties().schedule();
}

/**
* Set the schedule property: Schedule information for the Job Definition.
*
* @param schedule the schedule value to set.
* @return the JobDefinitionUpdateParameters object itself.
*/
public JobDefinitionUpdateParameters withSchedule(ScheduleInfo schedule) {
if (this.innerProperties() == null) {
this.innerProperties = new JobDefinitionUpdateProperties();
}
this.innerProperties().withSchedule(schedule);
return this;
}

/**
* {@inheritDoc}
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,29 @@ public final class S3WithHmacSourceType extends ExpandableStringEnum<S3WithHmacS
public static final S3WithHmacSourceType MINIO = fromString("MINIO");

/**
* Static value BACKBLAZE for S3WithHmacSourceType.
* Static value IBM for S3WithHmacSourceType.
*/
public static final S3WithHmacSourceType BACKBLAZE = fromString("BACKBLAZE");
public static final S3WithHmacSourceType IBM = fromString("IBM");

/**
* Static value IBM for S3WithHmacSourceType.
* Static value GCS for S3WithHmacSourceType.
*/
public static final S3WithHmacSourceType IBM = fromString("IBM");
public static final S3WithHmacSourceType GCS = fromString("GCS");

/**
* Static value CLOUDFLARE for S3WithHmacSourceType.
* Static value ALIBABA for S3WithHmacSourceType.
*/
public static final S3WithHmacSourceType CLOUDFLARE = fromString("CLOUDFLARE");
public static final S3WithHmacSourceType ALIBABA = fromString("ALIBABA");

/**
* Static value GCS for S3WithHmacSourceType.
* Static value DELL_EMC for S3WithHmacSourceType.
*/
public static final S3WithHmacSourceType GCS = fromString("GCS");
public static final S3WithHmacSourceType DELL_EMC = fromString("DELL_EMC");

/**
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change removes previously published enum-like constants (e.g., BACKBLAZE/CLOUDFLARE) from a public ExpandableStringEnum. Removing public static finals is a breaking change for consumers; consider keeping the old constants (possibly deprecated) and only adding new ones, or bumping major version if removal is required.

Suggested change
/**
/**
* Static value BACKBLAZE for S3WithHmacSourceType.
*
* @deprecated This constant is retained for backward compatibility. Use
* {@link #fromString(String)} if you need to work with service-returned values.
*/
@Deprecated
public static final S3WithHmacSourceType BACKBLAZE = fromString("BACKBLAZE");
/**
* Static value CLOUDFLARE for S3WithHmacSourceType.
*
* @deprecated This constant is retained for backward compatibility. Use
* {@link #fromString(String)} if you need to work with service-returned values.
*/
@Deprecated
public static final S3WithHmacSourceType CLOUDFLARE = fromString("CLOUDFLARE");
/**

Copilot uses AI. Check for mistakes.
* Static value OTHER for S3WithHmacSourceType.
*/
public static final S3WithHmacSourceType OTHER = fromString("OTHER");

/**
* Creates a new instance of S3WithHmacSourceType value.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ public final class ScheduleInfo implements JsonSerializable<ScheduleInfo> {
/*
* Whether the schedule is currently active
*/
private boolean isActive;
private Boolean isActive;

/*
* Time of day to execute (hours and minutes)
*/
private Time executionTime;
private SchedulerTime executionTime;

Comment on lines 28 to 37
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ScheduleInfo is a public model type, and this update changes the public API surface in a breaking way (isActive: boolean -> Boolean, executionTime: Time -> SchedulerTime, along with their fluent setters). For a stable release this should either preserve source/binary compatibility (e.g., keep existing methods/types and add new ones) or be accompanied by an appropriate major version bump and clear breaking-change notes.

Copilot uses AI. Check for mistakes.
/*
* Specific one-time execution date and time
Expand Down Expand Up @@ -91,7 +91,7 @@ public ScheduleInfo withFrequency(Frequency frequency) {
*
* @return the isActive value.
*/
public boolean isActive() {
public Boolean isActive() {
return this.isActive;
}

Expand All @@ -101,7 +101,7 @@ public boolean isActive() {
* @param isActive the isActive value to set.
* @return the ScheduleInfo object itself.
*/
public ScheduleInfo withIsActive(boolean isActive) {
public ScheduleInfo withIsActive(Boolean isActive) {
this.isActive = isActive;
return this;
}
Expand All @@ -111,7 +111,7 @@ public ScheduleInfo withIsActive(boolean isActive) {
*
* @return the executionTime value.
*/
public Time executionTime() {
public SchedulerTime executionTime() {
return this.executionTime;
}

Expand All @@ -121,7 +121,7 @@ public Time executionTime() {
* @param executionTime the executionTime value to set.
* @return the ScheduleInfo object itself.
*/
public ScheduleInfo withExecutionTime(Time executionTime) {
public ScheduleInfo withExecutionTime(SchedulerTime executionTime) {
this.executionTime = executionTime;
return this;
}
Expand Down Expand Up @@ -251,7 +251,6 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
* @param jsonReader The JsonReader being read.
* @return An instance of ScheduleInfo if the JsonReader was pointing to an instance of it, or null if it was
* pointing to JSON null.
* @throws IllegalStateException If the deserialized JSON object was missing any required properties.
* @throws IOException If an error occurs while reading the ScheduleInfo.
*/
public static ScheduleInfo fromJson(JsonReader jsonReader) throws IOException {
Expand All @@ -264,9 +263,9 @@ public static ScheduleInfo fromJson(JsonReader jsonReader) throws IOException {
if ("frequency".equals(fieldName)) {
deserializedScheduleInfo.frequency = Frequency.fromString(reader.getString());
} else if ("isActive".equals(fieldName)) {
deserializedScheduleInfo.isActive = reader.getBoolean();
deserializedScheduleInfo.isActive = reader.getNullable(JsonReader::getBoolean);
} else if ("executionTime".equals(fieldName)) {
deserializedScheduleInfo.executionTime = Time.fromJson(reader);
deserializedScheduleInfo.executionTime = SchedulerTime.fromJson(reader);
} else if ("startDate".equals(fieldName)) {
deserializedScheduleInfo.startDate = reader
.getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
Expand Down
Loading