Commit dad2a0e6 authored by neha's avatar neha
Browse files

backward compatibility shifted from datanode to contentactor

parent 91dc829d
taxonomy-api 3.9.0-prod-fix 4.1.0_fixes AmiableAnil-patch-1 Gcloud_copy Gcloud_fix Remove_unwantedCode_Gcloud_fix actors-test bulk-upload-comptenecy-mapping bulk-upload-excelsheet bulk-upload-test_excel bulk_upload code-cleanup csp-migration dependabot/maven/platform-core/platform-telemetry/ch.qos.logback-logback-core-1.2.9 dependabot/maven/search-api/search-core/org.apache.httpcomponents-httpclient-4.5.13 devcon-2020 flag-api ft-spike knowlg-friday knowlg-oneclick loadtest-release-2.10 local-setup-fix local-setup-kube m-4.2.0 master master-data neo4j-3.4.9 neo4j-4-code new_objecttype org-target-enhancement patch-1 patch-2 patch-3 poc_bulk_upload qs-schema rahul_bulk_upload_postgres release-2.10.0 release-2.7.0 release-2.8.0 release-2.9.0 release-3.0.0 release-3.0.1 release-3.1.0 release-3.2.0 release-3.3.0 release-3.4.0 release-3.5.0 release-3.6.0 release-3.6.0.1 release-3.7.0 release-3.8.0 release-3.9.0 release-4.0.0 release-4.1.0 release-4.10.0 release-4.10.1 release-4.2.0 release-4.3.0 release-4.4.0 release-4.5.0 release-4.6.0 release-4.7.0 release-4.7.0-debug release-4.8.0 release-4.8.0-debug release-4.9.0 release-4.9.1 release-5.0.0 release-5.0.1 release-5.1.0 release-5.1.0-content release-5.2.0 release-5.3.0 retire-api revert-718-visiblity-private-api revert-719-assessment-private-read-api revert-720-visiblity-public-search-api revert-721-visiblity-private-search-api review-4.1.0 s-debug schema-update-4.0 schema-updates release-5.2.0_RC2 release-5.2.0_RC1 release-5.1.0_RC1 release-5.0.0_RC2 release-5.0.0_RC1 release-4.10.0_RC2 release-4.10.0_RC1 release-4.9.1_RC1 release-4.9.0_RC8 release-4.9.0_RC7 release-4.9.0_RC6 release-4.9.0_RC5 release-4.9.0_RC4 release-4.9.0_RC3 release-4.9.0_RC2 release-4.9.0_RC1 release-4.8.0_RC5 release-4.8.0_RC4 release-4.8.0_RC3 release-4.8.0_RC2 release-4.8.0_RC1 release-4.7.0_RC6 release-4.7.0_RC5 release-4.7.0_RC4 release-4.7.0_RC3 release-4.7.0_RC2 release-4.7.0_RC1 release-4.6.0_RC2 release-4.6.0_RC1 release-4.5.0_RC2 release-4.5.0_RC1 release-4.4.0_RC6 release-4.4.0_RC5 release-4.4.0_RC4 release-4.4.0_RC3 release-4.4.0_RC2 release-4.4.0_RC1 release-4.3.0_RC10 release-4.3.0_RC9 release-4.3.0_RC8 release-4.3.0_RC7 release-4.3.0_RC6 release-4.3.0_RC5 release-4.3.0_RC4 release-4.3.0_RC3 release-4.3.0_RC2 release-4.3.0_RC1 release-4.2.0_RC13 release-4.2.0_RC12 release-4.2.0_RC11 release-4.2.0_RC10 release-4.2.0_RC9 release-4.2.0_RC8 release-4.2.0_RC7 release-4.2.0_RC6 release-4.2.0_RC5 release-4.2.0_RC4 release-4.2.0_RC3 release-4.2.0_RC2 release-4.2.0_RC1 release-4.1.0_RC13 release-4.1.0_RC12 release-4.1.0_RC11 release-4.1.0_RC10 release-4.1.0_RC9 release-4.1.0_RC8 release-4.1.0_RC7 release-4.1.0_RC6 release-4.1.0_RC5 release-4.1.0_RC4 release-4.1.0_RC3 release-4.1.0_RC2 release-4.1.0_RC1 release-4.0.0_RC9 release-4.0.0_RC8 release-4.0.0_RC7 release-4.0.0_RC6 release-4.0.0_RC5 release-4.0.0_RC4 release-4.0.0_RC3 release-4.0.0_RC2 release-4.0.0_RC1 release-3.9.0_RC12 release-3.9.0_RC11 release-3.9.0_RC10 release-3.9.0_RC9 release-3.9.0_RC8 release-3.9.0_RC7 release-3.9.0_RC6 release-3.9.0_RC5 release-3.9.0_RC4 release-3.9.0_RC3 release-3.9.0_RC2 release-3.9.0_RC1 release-3.8.0_RC9 release-3.8.0_RC8 release-3.8.0_RC7 release-3.8.0_RC6 release-3.8.0_RC5 release-3.8.0_RC4 release-3.8.0_RC3 release-3.8.0_RC2 release-3.8.0_RC1 release-3.7.0_RC1 release-3.6.0_RC5 release-3.6.0_RC4 release-3.6.0_RC3 release-3.6.0_RC2 release-3.6.0_RC1 release-3.5.0 release-3.5.0_RC2 release-3.5.0_RC1 release-3.4.0 release-3.4.0_RC2 release-3.4.0_RC1 release-3.3.0_RC10 release-3.3.0_RC9 release-3.3.0_RC8 release-3.3.0_RC7 release-3.3.0_RC6 release-3.3.0_RC5 release-3.3.0_RC4 release-3.3.0_RC3 release-3.3.0_RC2 release-3.3.0_RC1 release-3.2.0_RC9 release-3.2.0_RC8 release-3.2.0_RC7 release-3.2.0_RC6 release-3.2.0_RC5 release-3.2.0_RC4 release-3.2.0_RC3 release-3.2.0_RC2 release-3.2.0_RC1 release-3.1.0 release-3.1.0_RC8 release-3.1.0_RC7 release-3.1.0_RC6 release-3.1.0_RC5 release-3.1.0_RC4 release-3.1.0_RC3 release-3.1.0_RC2 release-3.1.0_RC1 release-3.0.1_RC3 release-3.0.1_RC2 release-3.0.1_RC1 release-3.0.0 release-3.0.0_RC11 release-3.0.0_RC10 release-3.0.0_RC9 release-3.0.0_RC8 release-3.0.0_RC7 release-3.0.0_RC6 release-3.0.0_RC5 release-3.0.0_RC4 release-3.0.0_RC3 release-3.0.0_RC2 release-3.0.0_RC1 release-2.10.0 release-2.10.0_RC19 release-2.10.0_RC18 release-2.10.0_RC17 release-2.10.0_RC16 release-2.10.0_RC15 release-2.10.0_RC14 release-2.10.0_RC13 release-2.10.0_RC12 release-2.10.0_RC11 release-2.10.0_RC10 release-2.10.0_RC9 release-2.10.0_RC8 release-2.10.0_RC7 release-2.10.0_RC6 release-2.10.0_RC5 release-2.10.0_RC4 release-2.10.0_RC3 release-2.10.0_RC2 release-2.10.0_RC1 release-2.9.0_RC9 release-2.9.0_RC8 release-2.9.0_RC7 release-2.9.0_RC6 release-2.9.0_RC5 release-2.9.0_RC4 release-2.9.0_RC3 release-2.9.0_RC2 release-2.9.0_RC1 release-2.8.0 release-2.8.0_RC7 release-2.8.0_RC6 release-2.8.0_RC5 release-2.8.0_RC4 release-2.8.0_RC3 release-2.7.0 release-2.7.0_RC10
No related merge requests found
Showing with 50 additions and 36 deletions
+50 -36
......@@ -15,10 +15,13 @@ import org.sunbird.graph.utils.NodeUtil;
import org.sunbird.utils.RequestUtils;
import scala.concurrent.Future;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.sunbird.common.Platform;
import static java.util.stream.Collectors.toList;
public class ContentActor extends BaseActor {
......@@ -75,6 +78,9 @@ public class ContentActor extends BaseActor {
.map(new Mapper<Node, Response>() {
@Override
public Response apply(Node node) {
// Added for backward compatibility in mobile
if(!StringUtils.isEmpty((String)request.getRequest().get("mode")) && !StringUtils.equals("edit", (String)request.getRequest().get("mode")))
updateContentTaggedProperty(node);
Map<String, Object> metadata = NodeUtil.serialize(node, fields, (String) request.getContext().get("schemaName"), (String)request.getContext().get("version"));
metadata.put("identifier", node.getIdentifier().replace(".img", ""));
Response response = ResponseHandler.OK();
......@@ -131,4 +137,47 @@ public class ContentActor extends BaseActor {
}
}
/**
*
* @param node
*/
private void updateContentTaggedProperty(Node node) {
Boolean contentTaggingFlag = Platform.config.hasPath("content.tagging.backward_enable")?
Platform.config.getBoolean("content.tagging.backward_enable"): false;
if(contentTaggingFlag) {
List <String> contentTaggedKeys = Platform.config.hasPath("content.tagging.property") ?
Arrays.asList(Platform.config.getString("content.tagging.property").split(",")):
new ArrayList<>(Arrays.asList("subject","medium"));
contentTaggedKeys.forEach(contentTagKey -> {
if(node.getMetadata().containsKey(contentTagKey)) {
List<String> prop = prepareList(node.getMetadata().get(contentTagKey));
node.getMetadata().put(contentTagKey, prop.get(0));
}
});
}
}
/**
*
* @param obj
* @return
*/
private static List<String> prepareList(Object obj) {
List<String> list = new ArrayList<String>();
try {
if (obj instanceof String) {
list.add((String) obj);
} else if (obj instanceof String[]) {
list = Arrays.asList((String[]) obj);
} else if (obj instanceof List){
list.addAll((List<String>) obj);
}
} catch (Exception e) {
e.printStackTrace();
}
if (null != list) {
list = list.stream().filter(x -> org.apache.commons.lang3.StringUtils.isNotBlank(x) && !org.apache.commons.lang3.StringUtils.equals(" ", x)).collect(toList());
}
return list;
}
}
......@@ -17,7 +17,6 @@ import org.sunbird.parseq.Task
import scala.collection.JavaConversions._
import scala.concurrent.{ExecutionContext, Future}
import org.sunbird.common.Platform
object DataNode {
......@@ -57,15 +56,10 @@ object DataNode {
resultNode.map(node => {
val fields: List[String] = Optional.ofNullable(request.get("fields").asInstanceOf[util.List[String]]).orElse(new util.ArrayList[String]()).toList
val extPropNameList = DefinitionNode.getExternalProps(request.getContext.get("graph_id").asInstanceOf[String], request.getContext.get("version").asInstanceOf[String], schemaName)
val finalNodeFuture: Future[Node] = if (CollectionUtils.isNotEmpty(extPropNameList) && null != fields && fields.exists(field => extPropNameList.contains(field)))
if (CollectionUtils.isNotEmpty(extPropNameList) && null != fields && fields.exists(field => extPropNameList.contains(field)))
populateExternalProperties(fields, node, request, extPropNameList)
else
Future(node)
val isBackwardCompatible = if (Platform.config.hasPath("content.tagging.backward_enable")) Platform.config.getBoolean("content.tagging.backward_enable") else false
if(isBackwardCompatible && !StringUtils.equalsIgnoreCase(request.get("mode").asInstanceOf[String], "edit"))
finalNodeFuture.map(node => updateContentTaggedProperty(node)).flatMap(f => f)
else
finalNodeFuture
}).flatMap(f => f) recoverWith { case e: CompletionException => throw e.getCause}
}
......@@ -164,33 +158,4 @@ object DataNode {
}
list
}
/**
* To support backward compatibility to mobile team.
* @param node
* @param ec
* @return
*/
@Deprecated
private def updateContentTaggedProperty(node: Node)(implicit ec:ExecutionContext): Future[Node] = {
val contentTaggedKeys = if(Platform.config.hasPath("content.tagging.property"))
(for (prop <- Platform.config.getString("content.tagging.property").split(",")) yield prop ) (collection.breakOut)
else
List("subject", "medium")
contentTaggedKeys.map(prop => populateContentTaggedProperty(prop, node.getMetadata.getOrDefault(prop, ""), node))
Future{node}
}
private def populateContentTaggedProperty(key:String, value: Any, node:Node)(implicit ec: ExecutionContext): Future[Node] = {
val contentValue:String = value match {
case v: String => v.asInstanceOf[String]
case v: List[Any] => v.head.asInstanceOf[String]
case v: Array[String] => v.head
}
if(!StringUtils.isAllBlank(contentValue))
node.getMetadata.put(key, contentValue)
else
node.getMetadata.remove(key)
Future(node)
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment