Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE,"datawrite");
log.info("param created.");
ResourceResolver resolver = null;
try {
resolver=resolverFactory.getResourceResolver(param);
log.info("resolveer created.");
Session session = resolver.adaptTo(Session.class);
log.info("Session created.");
// Create a node that represents the root node
Node root = session.getRootNode();
// Get the content node in the JCR
Node content = root.getNode("/content");
Node customerRoot = null;
int custRec = doesCustExist(content);
log.info("does Customer Exist : "+ custRec);
// -1 means that content/customer does not exist
if (custRec == -1) {
// content/customer does not exist -- create it
customerRoot = content.addNode("customer");
} else {
// content/customer does exist -- retrieve it
customerRoot = content.getNode("customer");
}
int custId = custRec + 1; // assign a new id to the customer node
// Store content from the client JSP in the JCR
Node custNode = customerRoot.addNode("customer" + firstName + lastName + phone+desc);
// make sure name of node is unique
custNode.setProperty("id", custId);
custNode.setProperty("firstName", firstName);
custNode.setProperty("lastName", lastName);
custNode.setProperty("phone", phone);
custNode.setProperty("desc", desc);
// Save the session changes and log out
session.save();
session.logout();
return custId;
}
catch (Exception e) {
log.error("RepositoryException: " + e);
}
i got this error:
ERROR [0:0:0:0:0:0:0:1 [1567433510240] GET /bin/abc HTTP/1.1] aem.community.mf.core.servlets.SaveJcrData RepositoryException: java.lang.NullPointerException
You can solve this problem in two ways:
resolver=req.getResourceResolver();
instead of
resolver=resolverFactory.getResourceResolver(param);
@Component
public class SaveJcrData implements SaveService {
protected final Logger log = LoggerFactory.getLogger(this.getClass());
@Reference
private SlingRepository repository;
@Reference
private ResourceResolverFactory resolverFactory;
private Session session;
public void bindRepository(SlingRepository repository) {
this.repository = repository;
}
//Stores customer data in the Adobe CQ JCR
public int injestData(String firstName, String lastName, String phone, String desc) throws Exception {
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "datawrite");
ResourceResolver resolver = null;
try {
// Invoke the adaptTo method to create a Session used to create a QueryManager
log.trace("In try.");
resolver = resolverFactory.getServiceResourceResolver(param);
log.trace("resolveer created.");
Session session = resolver.adaptTo(Session.class);
log.info("Session created.");