Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Correct API to create Asset in AEM programmatically as AssetManager.create is deprecated now

shehjadk07
Level 2
Level 2

Hi All,

 

I am creating a CSV file in AEM for which I am using assetManager createAsset method but that is deprecated now.

What is the correct API to use instead?

 

https://experienceleague.adobe.com/docs/experience-manager-cloud-service/content/assets/admin/develo...

 

InputStream is = new ByteArrayInputStream(testData);
assetManager.createAsset(BASE_OUTPUT_FOLDER_PATH + "/"+ reportConfig.getReportFormBean().getReportName(), is,
"text/csv", true);

1 Accepted Solution
shehjadk07
Correct answer by
Level 2
Level 2

Hi All,

 

I think I am good with question as I am now using createOrReplaceAsset method

 

createAsset method is not well suited with new architecture and have performance issues

In AEM as a Cloud Service, assets should instead take advantage of direct binary access. A discussion of this change as well as an SDK to ease implementation of this new pattern can be found at aem-upload.

 

Below is the updated code I am using

byte[] csvData = stream.toByteArray();
InputStream is = new ByteArrayInputStream(csvData);

final ValueFactory valueFactory = session.getValueFactory();
final Binary binary = valueFactory.createBinary(is);

Asset csv = assetManager.createOrReplaceAsset(
BASE_OUTPUT_FOLDER_PATH + "/" + reportConfig.getReportFormBean().getReportName(), binary, "text/csv",
true);

Thanks,

Shehjad

View solution in original post

2 Replies
shehjadk07
Correct answer by
Level 2
Level 2

Hi All,

 

I think I am good with question as I am now using createOrReplaceAsset method

 

createAsset method is not well suited with new architecture and have performance issues

In AEM as a Cloud Service, assets should instead take advantage of direct binary access. A discussion of this change as well as an SDK to ease implementation of this new pattern can be found at aem-upload.

 

Below is the updated code I am using

byte[] csvData = stream.toByteArray();
InputStream is = new ByteArrayInputStream(csvData);

final ValueFactory valueFactory = session.getValueFactory();
final Binary binary = valueFactory.createBinary(is);

Asset csv = assetManager.createOrReplaceAsset(
BASE_OUTPUT_FOLDER_PATH + "/" + reportConfig.getReportFormBean().getReportName(), binary, "text/csv",
true);

Thanks,

Shehjad