@Override public CommitRequest parseCommitRequest(String content) { try { JSONObject jsonContent = new JSONObject(content); CommitRequest result = new CommitRequest(); if (jsonContent.has("commitInstances")) { JSONArray entitiesNodeList = jsonContent.getJSONArray("commitInstances"); Set<String> commitIds = new HashSet<>(entitiesNodeList.length()); for (int i = 0; i < entitiesNodeList.length(); i++) { String id = entitiesNodeList.getJSONObject(i).getString("id"); if (id.startsWith("NEW-")) id = id.substring(id.indexOf('-') + 1); commitIds.add(id); } result.setCommitIds(commitIds); result.setCommitInstances(parseIntoList(result, entitiesNodeList)); } if (jsonContent.has("removeInstances")) { JSONArray entitiesNodeList = jsonContent.getJSONArray("removeInstances"); result.setRemoveInstances(parseIntoList(result, entitiesNodeList)); } if (jsonContent.has("softDeletion")) { result.setSoftDeletion(jsonContent.getBoolean("softDeletion")); } return result; } catch (Exception e) { throw new RuntimeException("Unable to parse commit request", e); } }
private Object parseEntityReference(Node node, CommitRequest commitRequest) throws InstantiationException, IllegalAccessException, InvocationTargetException, IntrospectionException { Node childNode = node.getFirstChild(); if (ELEMENT_NULL_REF.equals(childNode.getNodeName())) { return null; } InstanceRef ref = commitRequest.parseInstanceRefAndRegister(getIdAttribute(childNode)); return ref.getInstance(); }
Collection commitInstances = commitRequest.getCommitInstances(); Set<String> newInstanceIds = commitRequest.getNewInstanceIds(); Collection removeInstances = commitRequest.getRemoveInstances(); commitContext.setCommitInstances(commitInstances); commitContext.setRemoveInstances(removeInstances); commitContext.setSoftDeletion(commitRequest.isSoftDeletion());
if (commitRequest.getCommitIds().contains(id)) { EntityLoadInfo loadInfo = EntityLoadInfo.parse(id); if (loadInfo == null) InstanceRef ref = commitRequest.parseInstanceRefAndRegister(id); childMetaClass = ref.getMetaClass(); child = ref.getInstance(); InstanceRef ref = commitRequest.parseInstanceRefAndRegister(jsonChild.getString("id")); Entity child = ref.getInstance(); coll.add(child);
if (commitRequest != null && commitRequest.getCommitIds().contains(id)) { EntityLoadInfo loadInfo = EntityLoadInfo.parse(id); Entity ref = metadata.create(loadInfo.getMetaClass());
public InstanceRef parseInstanceRefAndRegister(String fullId) throws InstantiationException, IllegalAccessException { EntityLoadInfo loadInfo; if (!fullId.startsWith("NEW-")) { loadInfo = EntityLoadInfo.parse(fullId); if (loadInfo == null) { throw new RuntimeException("Cannot parse id: " + fullId); } InstanceRef existingRef = instanceRefs.get(loadInfo.getMetaClass().getName() + "-" + loadInfo.getId().toString()); if (existingRef != null) { return existingRef; } } else { int idDashIndex = StringUtils.ordinalIndexOf(fullId, "-", 2); if (idDashIndex == -1) { String entityName = fullId.substring("NEW-".length()); String generatedId = generateId(entityName); fullId = fullId + "-" + generatedId; } loadInfo = EntityLoadInfo.parse(fullId); if (loadInfo == null) { throw new RuntimeException("Cannot parse id: " + fullId); } } if (loadInfo.isNewEntity()) newInstanceIds.add(loadInfo.toString()); InstanceRef result = new InstanceRef(loadInfo); instanceRefs.put(loadInfo.getMetaClass().getName() + "-" + loadInfo.getId().toString(), result); return result; }
if (commitRequest.getCommitIds().contains(id)) { EntityLoadInfo loadInfo = EntityLoadInfo.parse(id); Entity ref = metadata.create(loadInfo.getMetaClass());
@Override public CommitRequest parseCommitRequest(String content) { try { CommitRequest commitRequest = new CommitRequest(); commitIds.add(id); commitRequest.setCommitIds(commitIds); Element commitInstanceEl = (Element) el; String id = commitInstanceEl.attributeValue("id"); InstanceRef ref = commitRequest.parseInstanceRefAndRegister(id); Entity instance = ref.getInstance(); parseEntity(commitInstanceEl, instance, commitRequest); commitInstances.add(instance); commitRequest.setCommitInstances(commitInstances); Element removeInstance = (Element) el; String id = removeInstance.attributeValue("id"); InstanceRef ref = commitRequest.parseInstanceRefAndRegister(id); Entity instance = ref.getInstance(); removeInstances.add(instance); commitRequest.setRemoveInstances(removeInstances); commitRequest.setSoftDeletion(Boolean.parseBoolean(softDeletionEl.getText()));
protected List<Entity> parseIntoList(CommitRequest commitRequest, JSONArray nodeList) throws JSONException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, IntrospectionException, ParseException { List<Entity> result = new ArrayList<>(nodeList.length()); for (int j = 0; j < nodeList.length(); j++) { JSONObject jsonObject = nodeList.getJSONObject(j); InstanceRef ref = commitRequest.parseInstanceRefAndRegister(jsonObject.getString("id")); MetaClass metaClass = ref.getMetaClass(); Entity instance = ref.getInstance(); asJavaTree(commitRequest, instance, metaClass, jsonObject); result.add(instance); } return result; }
throw new IllegalArgumentException("Not a CommitRequest xml passed: " + rootNode.getNodeName()); CommitRequest result = new CommitRequest(); result.setCommitIds(commitIds); result.setCommitInstances(parseNodeList(result, entitiesNodeList)); } else if ("removeInstances".equals(childNodeName)) { NodeList entitiesNodeList = child.getChildNodes(); result.setRemoveInstances(removeInstances); } else if ("softDeletion".equals(childNodeName)) { result.setSoftDeletion(Boolean.parseBoolean(child.getTextContent()));
private List parseNodeList(CommitRequest commitRequest, NodeList entitiesNodeList) throws InstantiationException, IllegalAccessException, InvocationTargetException, IntrospectionException, ParseException { List entities = new ArrayList(entitiesNodeList.getLength()); for (int j = 0; j < entitiesNodeList.getLength(); j++) { Node entityNode = entitiesNodeList.item(j); if (ELEMENT_INSTANCE.equals(entityNode.getNodeName())) { InstanceRef ref = commitRequest.parseInstanceRefAndRegister(getIdAttribute(entityNode)); MetaClass metaClass = ref.getMetaClass(); Object instance = ref.getInstance(); parseEntity(commitRequest, instance, metaClass, entityNode); entities.add(instance); } } return entities; }