You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2016/12/27 22:46:46 UTC
[1/2] incubator-atlas git commit: ATLAS-1127 Modify creation and
modification timestamps to Date instead of Long(sumasai)
Repository: incubator-atlas
Updated Branches:
refs/heads/0.7-incubating 9b7ccce3e -> 6681b9486
ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai)
(cherry picked from commit ec94d2ad169f92feb9005ca1dc06845216c77055)
Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/3a95c0f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/3a95c0f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/3a95c0f1
Branch: refs/heads/0.7-incubating
Commit: 3a95c0f134a9965502e3fa0adfe475feb7ac6e0f
Parents: 9b7ccce
Author: Suma Shivaprasad <su...@gmail.com>
Authored: Thu Aug 18 15:46:00 2016 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Tue Dec 27 14:00:37 2016 -0800
----------------------------------------------------------------------
release-log.txt | 3 ++-
.../atlas/GraphTransactionInterceptor.java | 16 ++++++++++++-
.../org/apache/atlas/repository/Constants.java | 2 +-
.../GraphBackedDiscoveryServiceTest.java | 25 ++++++++++++++++++++
4 files changed, 43 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/3a95c0f1/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index ac044c9..ccb2a3a 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -3,7 +3,9 @@ Apache Atlas Release Notes
--Release 0.7-incubating
INCOMPATIBLE CHANGES:
+ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai)
ATLAS-675 Storm Hook should use timestamps as Date type instead of Long (ayubkhan via sumasai)
+ATLAS-674 Falcon Hook should use timestamps instead of long(ayubkhan via sumasai)
ATLAS-1122 Change trait edge labels to have trait name alone (sumasai)
ATLAS-1060 Add composite indexes for exact match performance improvements for all attributes (sumasai via shwethags)
ATLAS-822 Type updates - don't allow updating supertypes ( shwethags via sumasai )
@@ -42,7 +44,6 @@ ATLAS-1173 Doc: Minor editorial bug in the example given for property atlas.serv
ATLAS-1133 Jetty Server start doesn't throw exception when user-credential.properties file is not found (nixonrodrigues,svimal2106 via kevalbhatt)
ATLAS-1149 Changes to UI to sort the hive table schema based on "position" attribute of hive_column (Kalyanikashikar via kevalbhatt)
ATLAS-1162 Register shutdown hooks with Hadoop's ShutdownHookManager, instead of directly with Java Runtime (mneethiraj via sumasai)
-ATLAS-674 Falcon Hook should use timestamps instead of long(ayubkhan via sumasai)
ATLAS-1098 Atlas allows creation of tag with name "isa" which causes exceptions during search (apoorvnaik via kevalbhatt)
ATLAS-1160 Update Atlas hive hook to read configuration from atlas-application.properties instead of hive-site.xml (mneethiraj via kevalbhatt)
ATLAS-1154 Errors in Eclipse with web.xml (davidrad via dkantor)
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/3a95c0f1/repository/src/main/java/org/apache/atlas/GraphTransactionInterceptor.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/GraphTransactionInterceptor.java b/repository/src/main/java/org/apache/atlas/GraphTransactionInterceptor.java
index 20e8ebc..fff8925 100644
--- a/repository/src/main/java/org/apache/atlas/GraphTransactionInterceptor.java
+++ b/repository/src/main/java/org/apache/atlas/GraphTransactionInterceptor.java
@@ -22,6 +22,8 @@ import com.thinkaurelius.titan.core.TitanGraph;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.atlas.repository.graph.GraphProvider;
+import org.apache.atlas.typesystem.exception.EntityNotFoundException;
+import org.apache.atlas.typesystem.exception.SchemaNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,8 +47,20 @@ public class GraphTransactionInterceptor implements MethodInterceptor {
return response;
} catch (Throwable t) {
titanGraph.rollback();
- LOG.error("graph rollback due to exception ", t);
+
+ if (logException(t)) {
+ LOG.error("graph rollback due to exception ", t);
+ } else {
+ LOG.error("graph rollback due to exception " + t.getClass().getSimpleName() + ":" + t.getMessage());
+ }
throw t;
}
}
+
+ boolean logException(Throwable t) {
+ if ((t instanceof SchemaNotFoundException) || (t instanceof EntityNotFoundException)) {
+ return false;
+ }
+ return true;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/3a95c0f1/repository/src/main/java/org/apache/atlas/repository/Constants.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/Constants.java b/repository/src/main/java/org/apache/atlas/repository/Constants.java
index 893f1b6..1767e65 100755
--- a/repository/src/main/java/org/apache/atlas/repository/Constants.java
+++ b/repository/src/main/java/org/apache/atlas/repository/Constants.java
@@ -74,7 +74,7 @@ public final class Constants {
case TIMESTAMP_PROPERTY_KEY:
case MODIFICATION_TIMESTAMP_PROPERTY_KEY:
- return TypesUtil.newAttributeInfo(field, DataTypes.LONG_TYPE);
+ return TypesUtil.newAttributeInfo(field, DataTypes.DATE_TYPE);
}
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/3a95c0f1/repository/src/test/java/org/apache/atlas/discovery/GraphBackedDiscoveryServiceTest.java
----------------------------------------------------------------------
diff --git a/repository/src/test/java/org/apache/atlas/discovery/GraphBackedDiscoveryServiceTest.java b/repository/src/test/java/org/apache/atlas/discovery/GraphBackedDiscoveryServiceTest.java
index 7b7010c..40dc861 100755
--- a/repository/src/test/java/org/apache/atlas/discovery/GraphBackedDiscoveryServiceTest.java
+++ b/repository/src/test/java/org/apache/atlas/discovery/GraphBackedDiscoveryServiceTest.java
@@ -162,6 +162,31 @@ public class GraphBackedDiscoveryServiceTest extends BaseRepositoryTest {
rows = results.getJSONArray("rows");
assertNotNull(rows);
assertEquals(rows.length(), 1);
+
+ final String testTs = "\"2011-11-01T02:35:58.440Z\"";
+ dslQuery = "Department where " + Constants.TIMESTAMP_PROPERTY_KEY + " > " + testTs;
+ jsonResults = searchByDSL(dslQuery);
+ assertNotNull(jsonResults);
+
+ results = new JSONObject(jsonResults);
+ assertEquals(results.length(), 3);
+
+ rows = results.getJSONArray("rows");
+ assertNotNull(rows);
+ assertEquals(rows.length(), 1);
+
+
+ dslQuery = "Department where " + Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY + " > " + testTs;
+ jsonResults = searchByDSL(dslQuery);
+ assertNotNull(jsonResults);
+
+ results = new JSONObject(jsonResults);
+ assertEquals(results.length(), 3);
+
+ rows = results.getJSONArray("rows");
+ assertNotNull(rows);
+ assertEquals(rows.length(), 1);
+
}
@Test
[2/2] incubator-atlas git commit: ATLAS-1402: fix UI input validation
Posted by ma...@apache.org.
ATLAS-1402: fix UI input validation
Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/6681b948
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/6681b948
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/6681b948
Branch: refs/heads/0.7-incubating
Commit: 6681b94862f300a4e320e7cedf607e54dc6d3ad5
Parents: 3a95c0f
Author: kevalbhatt <kb...@apache.org>
Authored: Tue Dec 27 14:11:15 2016 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Tue Dec 27 14:41:39 2016 -0800
----------------------------------------------------------------------
dashboardv2/public/index.html | 1 +
dashboardv2/public/js/models/VTag.js | 1 +
.../public/js/utils/CommonViewFunction.js | 10 ++--
dashboardv2/public/js/utils/Utils.js | 14 ++---
.../views/audit/CreateAuditTableLayoutView.js | 4 +-
.../BusinessCatalogDetailLayoutView.js | 54 +-------------------
.../business_catalog/BusinessCatalogHeader.js | 2 +-
.../js/views/business_catalog/TreeLayoutView.js | 10 ++--
.../views/detail_page/DetailPageLayoutView.js | 8 +--
.../public/js/views/schema/SchemaLayoutView.js | 4 +-
.../js/views/search/SearchResultLayoutView.js | 6 +--
.../public/js/views/tag/CreateTagLayoutView.js | 3 +-
.../views/tag/TagAttributeDetailLayoutView.js | 33 +++++++-----
.../js/views/tag/TagDetailTableLayoutView.js | 6 +--
.../public/js/views/tag/addTagModalView.js | 2 +-
release-log.txt | 1 +
webapp/src/main/webapp/login.jsp | 1 +
17 files changed, 60 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/index.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/index.html b/dashboardv2/public/index.html
index 04edcee..534d574 100644
--- a/dashboardv2/public/index.html
+++ b/dashboardv2/public/index.html
@@ -30,6 +30,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; Cache-Control: no-cache" />
+ <meta http-equiv="X-Frame-Options" content="deny">
<title>Atlas</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/models/VTag.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/models/VTag.js b/dashboardv2/public/js/models/VTag.js
index 12c36f8..043b3ed 100644
--- a/dashboardv2/public/js/models/VTag.js
+++ b/dashboardv2/public/js/models/VTag.js
@@ -32,6 +32,7 @@ define(['require',
initialize: function() {
this.modelName = 'VTag';
+ this.set('tags', _.escape(this.get('tags')));
this.bindErrorEvents();
},
toString: function() {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/utils/CommonViewFunction.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index 67dd5e2..edb6058 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -336,13 +336,13 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
if (i == 0) {
href = splitUrlWithoutTerm[i];
urlList.push({
- value: splitUrlWithoutTerm[i],
+ value: _.escape(splitUrlWithoutTerm[i]),
href: href
});
} else {
href += "/terms/" + splitUrlWithoutTerm[i];
urlList.push({
- value: splitUrlWithoutTerm[i],
+ value: _.escape(splitUrlWithoutTerm[i]),
href: href
});
};
@@ -398,8 +398,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
}
if (tagName.term) {
terms.push({
- deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-type="term" data-assetname="' + model.get("name") + '" data-name="' + tagName.fullName + '" data-guid="' + model.get('$id$').id + '" ></i></a>',
- url: tagName.fullName.split(".").join("/"),
+ deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-type="term" data-assetname="' + _.escape(model.get("name")) + '" data-name="' + tagName.fullName + '" data-guid="' + model.get('$id$').id + '" ></i></a>',
+ url: _.unescape(tagName.fullName).split(".").join("/"),
name: tagName.fullName
});
}
@@ -410,7 +410,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
className += "showHideDiv hide";
}
obj['valueUrl'] = CommonViewFunction.breadcrumbUrlMaker(obj.url);
- html += '<div class="' + className + '" dataterm-name="' + obj.name + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
+ html += '<div class="' + className + '" dataterm-name="' + _.escape(obj.name) + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
})
if (terms.length > 1) {
html += '<div><a href="javascript:void(0)" data-id="showMoreLessTerm" class="inputTag inputTagGreen"><span>Show More </span><i class="fa fa-angle-right"></i></a></div>'
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index 48963ad..d3a1b18 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -49,33 +49,33 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
};
var notify = function(options) {
- new pnotify(_.extend({ icon: true, hide: true, delay: 3000,remove:true }, options));
+ new pnotify(_.extend({ icon: true, hide: true, delay: 3000, remove: true }, options));
}
Utils.notifyInfo = function(options) {
notify({
type: "info",
- text: options.content || "Info message."
+ text: _.escape(options.content) || "Info message."
});
};
Utils.notifyWarn = function(options) {
notify({
type: "notice",
- text: options.content || "Info message."
+ text: _.escape(options.content) || "Info message."
});
};
Utils.notifyError = function(options) {
notify({
type: "error",
- text: options.content || "Error occurred."
+ text: _.escape(options.content) || "Error occurred."
});
};
Utils.notifySuccess = function(options) {
notify({
type: "success",
- text: options.content || "Error occurred."
+ text: _.escape(options.content) || "Error occurred."
});
};
Utils.defaultErrorHandler = function(model, error) {
@@ -243,7 +243,7 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
if (value == "TaxonomyTerm") {
return {}
}
- var name = value.split('.');
+ var name = _.escape(value).split('.');
return {
term: true,
tag: false,
@@ -261,7 +261,7 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
if (name === "TaxonomyTerm") {
return {}
}
- name = name.split('.');
+ name = _.escape(name).split('.');
var trem = false;
if (value['taxonomy.namespace']) {
trem = true;
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
index 58d5de8..252f96a 100644
--- a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -70,7 +70,7 @@ define(['require',
var valueObject = detailsObject.values;
if (this.action == Globals.auditAction.TAG_ADD) {
this.ui.auditHeaderValue.html('<th>Tag</th>');
- this.ui.auditValue.html("<tr><td>" + detailsObject.typeName + "</td></tr>");
+ this.ui.auditValue.html("<tr><td>" + _.escape(detailsObject.typeName) + "</td></tr>");
} else {
this.ui.auditHeaderValue.html('<th>Key</th><th>New Value</th>');
table = CommonViewFunction.propertyTable(valueObject, this);
@@ -86,7 +86,7 @@ define(['require',
} else if (this.action == Globals.auditAction.TAG_DELETE) {
var appendedString = this.entityModel.get('details').split(':');
this.ui.auditHeaderValue.html('<th>Tag</th>');
- this.ui.auditValue.html("<tr><td>" + appendedString[1] + "</td></tr>");
+ this.ui.auditValue.html("<tr><td>" + _.escape(appendedString[1]) + "</td></tr>");
}
},
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
index 0518578..f709f4d 100644
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
@@ -104,7 +104,7 @@ define(['require',
}
if (description) {
this.ui.description.show();
- this.ui.description.html('<span>' + description + '</span>');
+ this.ui.description.html('<span>' + _.escape(description) + '</span>');
} else {
this.ui.description.hide();
}
@@ -129,56 +129,6 @@ define(['require',
this.ui.editButton.show();
this.ui.editBox.hide();
},
- addTagCollectionList: function(obj, searchString) {
- var list = "",
- that = this;
- _.each(obj, function(model) {
- var tags = model.get("tags");
- if (!_.contains(that.tagElement, tags)) {
- if (searchString) {
- if (tags.search(new RegExp(searchString, "i")) != -1) {
- list += '<div><span>' + tags + '</span></div>';
- return;
- }
- } else {
- list += '<div><span>' + tags + '</span></div>';
- }
- }
- });
- if (list.length <= 0) {
- list += '<div><span>' + "No more tags" + '</span></div>';
- }
- this.ui.appendList.html(list);
- },
- addTagToTerms: function(tagObject) {
- var tagData = "";
- _.each(tagObject, function(val) {
- tagData += '<span class="inputTag"><span class="inputValue">' + val + '</span><i class="fa fa-close" data-id="deleteTag"></i></span>';
- });
- this.$('.addTag-dropdown').before(tagData);
- },
- saveTagFromList: function(ref) {
- var that = this;
- this.entityModel = new VEntity();
- var tagName = ref.text();
- var json = {
- "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Struct",
- "typeName": tagName,
- "values": {}
- };
- this.entityModel.saveEntity(this.id, {
- data: JSON.stringify(json),
- success: function(data) {
- that.collection.fetch({ reset: true });
- },
- error: function(error, data, status) {
- if (error && error.responseText) {
- var data = JSON.parse(error.responseText);
- }
- },
- complete: function() {}
- });
- },
onEditButton: function(e) {
var that = this;
$(e.currentTarget).blur();
@@ -186,7 +136,7 @@ define(['require',
'views/tag/CreateTagLayoutView',
'modules/Modal'
], function(CreateTagLayoutView, Modal) {
- var view = new CreateTagLayoutView({ 'termCollection': that.collection, 'descriptionData': that.model.get('description'), 'tag': that.termName.name });
+ var view = new CreateTagLayoutView({ 'termCollection': that.collection, 'descriptionData': that.model.get('description'), 'tag': _.unescape(that.termName.name) });
var modal = new Modal({
title: 'Edit Term',
content: view,
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
index 6be1d2d..75ed98c 100644
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
+++ b/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
@@ -41,7 +41,7 @@ define(['require',
var that = this;
$(this.el).html(this.template());
if (Globals.userLogedIn.status) {
- that.$('.userName').html(Globals.userLogedIn.response.userName);
+ that.$('.userName').text(Globals.userLogedIn.response.userName);
}
var that = this;
if (this.url) {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
index 5802c92..e17b9ab 100644
--- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
@@ -258,11 +258,11 @@ define(['require',
if (isParent) {
this.parentCollection.url = this.url;
this.parentCollection.fullCollection.reset(undefined, { silent: true });
- this.parentCollection.fetch({ reset: true,cache:true });
+ this.parentCollection.fetch({ reset: true, cache: true });
} else {
this.childCollection.url = this.url + "?hierarchy/path:.";
this.childCollection.fullCollection.reset(undefined, { silent: true });
- this.childCollection.fetch({ reset: true });
+ this.childCollection.fetch({ reset: true, cache: true });
}
},
showLoader: function() {
@@ -386,7 +386,7 @@ define(['require',
}
var name = Utils.checkTagOrTerm(model.get('name'), true);
if (name.name) {
- // data-name="<space>'<tagName>'" Space is required for DSL search Input
+ // data-name="<space>'<tagName>'" Space is required for DSL search Input
if (that.viewBased) {
parentLi = '<div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i><i class="fa fa-ellipsis-h termPopover"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name=" `' + model.get('name') + '`">' + name.name + '</a>';
} else {
@@ -529,7 +529,7 @@ define(['require',
assetName = $(e.target).data("assetname"),
that = this,
modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Delete: " + "<b>" + termName + "?</b></div>" +
+ msg: "<div class='ellipsis'>Delete: " + "<b>" + _.escape(termName) + "?</b></div>" +
"<p class='termNote'>Assets mapped to this term will be unclassified.</p>",
titleMessage: Messages.deleteTerm,
buttonText: "Delete"
@@ -615,7 +615,7 @@ define(['require',
var view = new AddTermLayoutView({
url: "/api/atlas/v1/taxonomies",
model: new that.parentCollection.model(),
- defaultTerm:true
+ defaultTerm: true
});
var modal = new Modal({
title: 'Taxonomy',
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 4706ba3..336758d 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -155,7 +155,7 @@ define(['require',
this.description = collectionJSON[0].values.description;
if (this.name) {
this.ui.title.show();
- var titleName = '<span>' + this.name + '</span>';
+ var titleName = '<span>' + _.escape(this.name) + '</span>';
if (this.readOnly) {
titleName += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i> Deleted</button>';
}
@@ -165,7 +165,7 @@ define(['require',
}
if (this.description) {
this.ui.description.show();
- this.ui.description.html('<span>' + this.description + '</span>');
+ this.ui.description.html('<span>' + _.escape(this.description) + '</span>');
} else {
this.ui.description.hide();
}
@@ -201,13 +201,13 @@ define(['require',
that = this;
if (tagOrTerm === "term") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove"
});
} else if (tagOrTerm === "tag") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove"
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/schema/SchemaLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
index 47a8464..4a2dfdd 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -412,13 +412,13 @@ define(['require',
that = this;
if (tagOrTerm === "term") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove"
});
} else if (tagOrTerm === "tag") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove"
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/search/SearchResultLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index 2eca6a1..343cb1a 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -265,7 +265,7 @@ define(['require',
if (that.searchCollection.models.length) {
that.startRenderTableProcess();
}
- var resultData = 'Results for <b>' + that.searchCollection.queryParams.query + '</b>';
+ var resultData = 'Results for <b>' + _.escape(that.searchCollection.queryParams.query) + '</b>';
var multiAssignDataTag = '<a href="javascript:void(0)" class="inputAssignTag multiSelectTag assignTag" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i>' + " " + 'Assign Tag</a>';
if (Globals.taxonomy) {
var multiAssignDataTerm = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o"></i>' + " " + 'Assign Term</a>';
@@ -615,13 +615,13 @@ define(['require',
that = this;
if (tagOrTerm === "term") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove"
});
} else if (tagOrTerm === "tag") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove"
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
index 8ff076a..0530767 100644
--- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
@@ -1,4 +1,3 @@
-
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -72,7 +71,7 @@ define(['require',
if (this.create) {
this.tagCollectionList();
} else {
- this.ui.title.html('<span>' + this.tag + '</span>');
+ this.ui.title.html('<span>' + _.escape(this.tag) + '</span>');
}
},
tagCollectionList: function() {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
index e115f83..8f82064 100644
--- a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
@@ -45,6 +45,7 @@ define(['require',
addTagListBtn: '[data-id="addTagListBtn"]',
addTagtext: '[data-id="addTagtext"]',
addTagPlus: '[data-id="addTagPlus"]',
+ addTagBtn: '[data-id="addTagBtn"]',
description: '[data-id="description"]',
descriptionTextArea: '[data-id="descriptionTextArea"]',
publishButton: '[data-id="publishButton"]',
@@ -74,16 +75,17 @@ define(['require',
this.listenTo(this.tagCollection, 'reset', function() {
var that = this,
attributeData = "";
- _.each(this.tagCollection.models, function(attr) {
- var traitTypes = attr.get("traitTypes");
- if (traitTypes[0].typeDescription != null) {
- var descriptionValue = traitTypes[0].typeDescription;
- that.ui.description.html(descriptionValue);
- }
- _.each(traitTypes[0].attributeDefinitions, function(value, key) {
- attributeData += '<span class="inputAttribute">' + value.name + '</span>';
- });
+ this.traitTypes = this.tagCollection.first().get("traitTypes")[0];
+ if (this.traitTypes.typeDescription != null) {
+ that.ui.description.text(this.traitTypes.typeDescription);
+ }
+ if (this.traitTypes.typeName != null) {
+ that.ui.title.text(this.traitTypes.typeName);
+ }
+ _.each(this.traitTypes.attributeDefinitions, function(value, key) {
+ attributeData += '<span class="inputAttribute">' + _.escape(value.name) + '</span>';
});
+
if (attributeData.length) {
that.ui.addTagtext.hide();
that.ui.addTagPlus.show();
@@ -91,16 +93,21 @@ define(['require',
that.ui.showAttribute.html(attributeData);
}, this);
this.listenTo(this.tagCollection, 'error', function(error, response) {
+ this.ui.addTagBtn.hide();
+ this.ui.editButton.hide();
if (response.responseJSON && response.responseJSON.error) {
Utils.notifyError({
content: response.responseJSON.error
});
+ } else {
+ Utils.notifyError({
+ content: "Something went wrong"
+ });
}
}, this);
},
onRender: function() {
- this.ui.title.html('<span>' + this.tag + '</span>');
this.ui.saveButton.attr("disabled", "true");
this.ui.publishButton.prop('disabled', true);
},
@@ -141,7 +148,7 @@ define(['require',
}).open();
modal.on('ok', function() {
var attributeName = $(view.el).find("input").val();
- that.tagCollection.first().get('traitTypes')[0].attributeDefinitions.push({
+ that.traitTypes.attributeDefinitions.push({
"name": attributeName,
"dataTypeName": "string",
"multiplicity": "optional",
@@ -163,14 +170,14 @@ define(['require',
this.ui.editBox.hide();
},
textAreaChangeEvent: function(view, modal) {
- if (view.tagCollection.first().get('traitTypes')[0].typeDescription == view.ui.description.val()) {
+ if (this.traitTypes.typeDescription == view.ui.description.val()) {
modal.$el.find('button.ok').prop('disabled', true);
} else {
modal.$el.find('button.ok').prop('disabled', false);
}
},
onPublishClick: function(view) {
- view.tagCollection.first().get('traitTypes')[0].typeDescription = view.ui.description.val();
+ this.traitTypes.typeDescription = view.ui.description.val();
this.onSaveButton(this.tagCollection.first().toJSON(), Messages.updateTagDescriptionMessage);
this.ui.description.show();
},
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
index 283b889..a3e3e5d 100644
--- a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
@@ -136,7 +136,7 @@ define(['require',
var stringArr = [];
tagValue = "";
_.each(values, function(val, key) {
- var attrName = "<span>" + key + ":" + val + "</span>";
+ var attrName = "<span>" + _.escape(key) + ":" + _.escape(val) + "</span>";
stringArr.push(attrName);
});
tagValue += stringArr.join(", ");
@@ -178,13 +178,13 @@ define(['require',
that = this;
if (that.term) {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove",
});
} else {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove",
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/dashboardv2/public/js/views/tag/addTagModalView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/addTagModalView.js b/dashboardv2/public/js/views/tag/addTagModalView.js
index 972997c..8cfe27d 100644
--- a/dashboardv2/public/js/views/tag/addTagModalView.js
+++ b/dashboardv2/public/js/views/tag/addTagModalView.js
@@ -156,7 +156,7 @@ define(['require',
if (this.commonCollection.models[0] && this.commonCollection.models[0].attributes && this.commonCollection.models[0].attributes.traitTypes[0].attributeDefinitions) {
for (var i = 0; i < this.commonCollection.models[0].attributes.traitTypes[0].attributeDefinitions.length; i++) {
var attribute = this.commonCollection.models[0].attributes.traitTypes[0].attributeDefinitions;
- var strAttribute = '<div class="form-group"><label>' + attribute[i].name + '</label>' +
+ var strAttribute = '<div class="form-group"><label>' + _.escape(attribute[i].name) + '</label>' +
'<input type="text" class="form-control attributeInputVal attrName" data-key="' + attribute[i].name + '" ></input></div>';
this.ui.tagAttribute.append(strAttribute);
}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index ccb2a3a..2543526 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -32,6 +32,7 @@ ATLAS-409 Atlas will not import avro tables with schema read from a file (dosset
ATLAS-379 Create sqoop and falcon metadata addons (venkatnrangan,bvellanki,sowmyaramesh via shwethags)
ALL CHANGES:
+ATLAS-1402 fix UI input validation
ATLAS-1192 Atlas IE support (kevalbhatt)
ATLAS-1215 Atlas UI not working in firefox due to fix in ATLAS-1199 (kevalbhatt)
ATLAS-1199 Atlas UI not loading after fresh build due to jquery-asBreadcrumbs plugin upgrade (kevalbhatt via shwethags)
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/6681b948/webapp/src/main/webapp/login.jsp
----------------------------------------------------------------------
diff --git a/webapp/src/main/webapp/login.jsp b/webapp/src/main/webapp/login.jsp
index 465e4e8..78f0f97 100644
--- a/webapp/src/main/webapp/login.jsp
+++ b/webapp/src/main/webapp/login.jsp
@@ -36,6 +36,7 @@ Redirect();
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta http-equiv="X-Frame-Options" content="deny">
<title>Atlas Login</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">