Hi @keerthana_h_n,
It calls for explicit resourceResolver.commit() to persist the creation in the repository.
Below code works fine. Executing again will create the content fragment with name as mentioned in the code with "-1" and so on. Eg : in this case, it is sample-cf-programmatically-1 and so on.. )
(For quicker testing created it as doGet and path registration)
package com.aem.demoproject.core.servlets;
import com.adobe.cq.dam.cfm.ContentFragment;
import com.adobe.cq.dam.cfm.ContentFragmentException;
import com.adobe.cq.dam.cfm.FragmentTemplate;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import java.io.IOException;
@Component(service = Servlet.class, property = {
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.paths=" + "/bin/cf/create"})
public class ContentFragmentCreation extends SlingSafeMethodsServlet {
private final Logger LOG = LoggerFactory.getLogger(this.getClass());
@Override
protected void doGet(final SlingHttpServletRequest req, final SlingHttpServletResponse resp)
throws ServletException, IOException {
ResourceResolver resourceResolver = req.getResourceResolver();
Resource templateResc = resourceResolver.resolve("/conf/we-retail/settings/dam/cfm/models/cf-model-demo");
Resource cfParentResc = resourceResolver.resolve("/content/dam/we-retail/en/stores");
if (templateResc != null && cfParentResc != null) {
try {
FragmentTemplate fragmentTemplate = templateResc.adaptTo(FragmentTemplate.class);
ContentFragment contentFragment = fragmentTemplate.createFragment(cfParentResc, "sample-cf-programmatically", "Sample CF Programmatically");
resourceResolver.commit();
if (contentFragment != null) {
LOG.info("Created CF Title={}", contentFragment.getTitle());
LOG.info("Created CF name={}", contentFragment.getName());
}
} catch (ContentFragmentException e) {
LOG.error("ContentFragmentException={}", e.getMessage());
}
}
}
}
Note : ContentFragmentManager.create(..) is deprecated. Recommendation is to use the above
https://www.adobe.io/experience-manager/reference-materials/6-5/javadoc/com/adobe/cq/dam/cfm/ContentFragmentManager.html#create-org.apache.sling.api.resource.Resource-org.apache.sling.api.resource.Resource-java.lang.String-java.lang.String-