Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
atlas
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dataplatform
atlas
Commits
400477c4
Commit
400477c4
authored
7 years ago
by
ashutoshm
Committed by
Madhan Neethiraj
7 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-2148: saved-search API enhancement to support searchType
Signed-off-by:
Madhan Neethiraj
<
madhan@apache.org
>
(cherry picked from commit 2dc137c1810738d1e2464c8e8fea86d2607555fe)
parent
67c04c63
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
215 additions
and
69 deletions
+215
-69
0010-base_model.json
addons/models/0000-Area0/0010-base_model.json
+8
-0
AtlasUserSavedSearch.java
.../org/apache/atlas/model/profile/AtlasUserSavedSearch.java
+29
-6
AtlasDiscoveryService.java
...ava/org/apache/atlas/discovery/AtlasDiscoveryService.java
+12
-3
EntityDiscoveryService.java
...va/org/apache/atlas/discovery/EntityDiscoveryService.java
+17
-6
AtlasSavedSearchDTO.java
.../org/apache/atlas/repository/ogm/AtlasSavedSearchDTO.java
+4
-1
DataAccess.java
...main/java/org/apache/atlas/repository/ogm/DataAccess.java
+1
-1
UserProfileService.java
...ache/atlas/repository/userprofile/UserProfileService.java
+16
-7
UserProfileServiceTest.java
.../atlas/repository/userprofile/UserProfileServiceTest.java
+30
-17
DiscoveryREST.java
...rc/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
+98
-28
No files found.
addons/models/0000-Area0/0010-base_model.json
View file @
400477c4
...
...
@@ -177,6 +177,14 @@
"isUnique"
:
false
},
{
"name"
:
"searchType"
,
"typeName"
:
"string"
,
"cardinality"
:
"SINGLE"
,
"isIndexable"
:
true
,
"isOptional"
:
false
,
"isUnique"
:
false
},
{
"name"
:
"uniqueName"
,
"typeName"
:
"string"
,
"cardinality"
:
"SINGLE"
,
...
...
This diff is collapsed.
Click to expand it.
intg/src/main/java/org/apache/atlas/model/profile/AtlasUserSavedSearch.java
View file @
400477c4
...
...
@@ -34,26 +34,41 @@ import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.PUBLIC_ONL
public
class
AtlasUserSavedSearch
extends
AtlasBaseModelObject
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
public
enum
SavedSearchType
{
BASIC
,
ADVANCED
;
public
static
SavedSearchType
to
(
String
val
)
{
return
SavedSearchType
.
ADVANCED
.
name
().
equalsIgnoreCase
(
val
)
?
SavedSearchType
.
ADVANCED
:
SavedSearchType
.
BASIC
;
}
}
private
String
ownerName
;
private
String
name
;
private
SavedSearchType
searchType
;
private
SearchParameters
searchParameters
;
public
AtlasUserSavedSearch
()
{
this
(
null
,
null
,
null
);
this
(
null
,
null
,
SavedSearchType
.
BASIC
,
null
);
}
public
AtlasUserSavedSearch
(
String
name
,
SearchParameters
searchParameters
)
{
this
(
null
,
name
,
searchParameters
);
public
AtlasUserSavedSearch
(
String
name
,
S
avedSearchType
searchType
,
S
earchParameters
searchParameters
)
{
this
(
null
,
name
,
search
Type
,
search
Parameters
);
}
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
)
{
this
(
ownerName
,
name
,
null
);
this
(
ownerName
,
name
,
SavedSearchType
.
BASIC
,
null
);
}
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
,
SavedSearchType
searchType
)
{
this
(
ownerName
,
name
,
searchType
,
null
);
}
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
,
SearchParameters
searchParameters
)
{
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
,
S
avedSearchType
savedSearchType
,
S
earchParameters
searchParameters
)
{
setOwnerName
(
ownerName
);
setName
(
name
);
setSearchType
(
savedSearchType
);
setSearchParameters
(
searchParameters
);
}
...
...
@@ -74,6 +89,14 @@ public class AtlasUserSavedSearch extends AtlasBaseModelObject implements Serial
this
.
name
=
name
;
}
public
SavedSearchType
getSearchType
()
{
return
searchType
;
}
public
void
setSearchType
(
SavedSearchType
searchType
)
{
this
.
searchType
=
searchType
;
}
public
SearchParameters
getSearchParameters
()
{
return
searchParameters
;
}
...
...
@@ -82,11 +105,11 @@ public class AtlasUserSavedSearch extends AtlasBaseModelObject implements Serial
this
.
searchParameters
=
searchParameters
;
}
@Override
public
StringBuilder
toString
(
StringBuilder
sb
)
{
sb
.
append
(
", ownerName="
).
append
(
ownerName
);
sb
.
append
(
", name="
).
append
(
name
);
sb
.
append
(
", searchType="
).
append
(
searchType
);
sb
.
append
(
", searchParameters="
);
if
(
searchParameters
==
null
)
{
sb
.
append
(
"null"
);
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java
View file @
400477c4
...
...
@@ -24,6 +24,7 @@ import org.apache.atlas.exception.AtlasBaseException;
import
org.apache.atlas.model.discovery.AtlasSearchResult
;
import
org.apache.atlas.model.discovery.SearchParameters
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
java.util.List
;
...
...
@@ -89,14 +90,14 @@ public interface AtlasDiscoveryService {
* @param savedSearch Search to be saved
* @throws AtlasBaseException
*/
void
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
/**
*
* @param savedSearch Search to be saved
* @throws AtlasBaseException
*/
void
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
/**
*
...
...
@@ -108,12 +109,20 @@ public interface AtlasDiscoveryService {
/**
*
* @param guid Guid for the saved search
* @return Search object identified by the guid
* @throws AtlasBaseException
*/
AtlasUserSavedSearch
getSavedSearch
(
String
guid
)
throws
AtlasBaseException
;
/**
*
* @param userName Name of the user who the search belongs
* @param searchName Name of the search to be retrieved
* @return Search object identified by the name
* @throws AtlasBaseException
*/
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
,
SavedSearchType
searchType
)
throws
AtlasBaseException
;
/**
* @param guid Guid for the saved search
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
View file @
400477c4
...
...
@@ -34,6 +34,7 @@ import org.apache.atlas.model.discovery.SearchParameters;
import
org.apache.atlas.model.instance.AtlasEntityHeader
;
import
org.apache.atlas.model.instance.AtlasObjectId
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
org.apache.atlas.query.Expressions.AliasExpression
;
import
org.apache.atlas.query.Expressions.Expression
;
import
org.apache.atlas.query.Expressions.SelectExpression
;
...
...
@@ -806,9 +807,9 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
@Override
public
void
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
try
{
userProfileService
.
addSavedSearch
(
savedSearch
);
return
userProfileService
.
addSavedSearch
(
savedSearch
);
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"addSavedSearch({})"
,
savedSearch
,
e
);
throw
e
;
...
...
@@ -817,9 +818,9 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
@Override
public
void
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
try
{
userProfileService
.
updateSavedSearch
(
savedSearch
);
return
userProfileService
.
updateSavedSearch
(
savedSearch
);
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"updateSavedSearch({})"
,
savedSearch
,
e
);
throw
e
;
...
...
@@ -837,9 +838,19 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
}
@Override
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
getSavedSearch
(
String
guid
)
throws
AtlasBaseException
{
try
{
return
userProfileService
.
getSavedSearch
(
userName
,
searchName
);
return
userProfileService
.
getSavedSearch
(
guid
);
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"getSavedSearch({})"
,
guid
,
e
);
throw
e
;
}
}
@Override
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
,
SavedSearchType
searchType
)
throws
AtlasBaseException
{
try
{
return
userProfileService
.
getSavedSearch
(
userName
,
searchName
,
searchType
);
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"getSavedSearch({}, {})"
,
userName
,
searchName
,
e
);
throw
e
;
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/ogm/AtlasSavedSearchDTO.java
View file @
400477c4
...
...
@@ -35,6 +35,7 @@ public class AtlasSavedSearchDTO extends AbstractDataTransferObject<AtlasUserSav
private
static
final
String
PROPERTY_OWNER_NAME
=
"ownerName"
;
private
static
final
String
PROPERTY_SEARCH_PARAMETERS
=
"searchParameters"
;
private
static
final
String
PROPERTY_UNIQUE_NAME
=
"uniqueName"
;
private
static
final
String
PROPERTY_SEARCH_TYPE
=
"searchType"
;
public
AtlasSavedSearchDTO
(
AtlasTypeRegistry
typeRegistry
)
{
super
(
typeRegistry
,
AtlasUserSavedSearch
.
class
);
...
...
@@ -47,6 +48,7 @@ public class AtlasSavedSearchDTO extends AbstractDataTransferObject<AtlasUserSav
savedSearch
.
setGuid
(
entity
.
getGuid
());
savedSearch
.
setName
((
String
)
entity
.
getAttribute
(
PROPERTY_NAME
));
savedSearch
.
setOwnerName
((
String
)
entity
.
getAttribute
(
PROPERTY_OWNER_NAME
));
savedSearch
.
setSearchType
(
AtlasUserSavedSearch
.
SavedSearchType
.
to
((
String
)
entity
.
getAttribute
(
PROPERTY_SEARCH_TYPE
)));
String
jsonSearchParams
=
(
String
)
entity
.
getAttribute
(
PROPERTY_SEARCH_PARAMETERS
);
...
...
@@ -68,6 +70,7 @@ public class AtlasSavedSearchDTO extends AbstractDataTransferObject<AtlasUserSav
entity
.
setAttribute
(
PROPERTY_NAME
,
obj
.
getName
());
entity
.
setAttribute
(
PROPERTY_OWNER_NAME
,
obj
.
getOwnerName
());
entity
.
setAttribute
(
PROPERTY_SEARCH_TYPE
,
obj
.
getSearchType
());
entity
.
setAttribute
(
PROPERTY_UNIQUE_NAME
,
getUniqueValue
(
obj
));
if
(
obj
.
getSearchParameters
()
!=
null
)
{
...
...
@@ -92,6 +95,6 @@ public class AtlasSavedSearchDTO extends AbstractDataTransferObject<AtlasUserSav
}
private
String
getUniqueValue
(
AtlasUserSavedSearch
obj
)
{
return
obj
.
getOwnerName
()
+
":"
+
obj
.
getName
()
;
return
String
.
format
(
"%s:%s:%s"
,
obj
.
getOwnerName
(),
obj
.
getName
(),
obj
.
getSearchType
())
;
}
}
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/ogm/DataAccess.java
View file @
400477c4
...
...
@@ -51,7 +51,7 @@ public class DataAccess {
throw
new
AtlasBaseException
(
AtlasErrorCode
.
DATA_ACCESS_SAVE_FAILED
,
obj
.
toString
());
}
return
obj
;
return
this
.
load
(
obj
)
;
}
public
<
T
extends
AtlasBaseModelObject
>
T
load
(
T
obj
)
throws
AtlasBaseException
{
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/userprofile/UserProfileService.java
View file @
400477c4
...
...
@@ -22,6 +22,7 @@ import org.apache.atlas.annotation.AtlasService;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.model.profile.AtlasUserProfile
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
org.apache.atlas.repository.ogm.DataAccess
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -41,8 +42,8 @@ public class UserProfileService {
this
.
dataAccess
=
dataAccess
;
}
public
void
saveUserProfile
(
AtlasUserProfile
profile
)
throws
AtlasBaseException
{
dataAccess
.
save
(
profile
);
public
AtlasUserProfile
saveUserProfile
(
AtlasUserProfile
profile
)
throws
AtlasBaseException
{
return
dataAccess
.
save
(
profile
);
}
public
AtlasUserProfile
getUserProfile
(
String
userName
)
throws
AtlasBaseException
{
...
...
@@ -51,7 +52,7 @@ public class UserProfileService {
return
dataAccess
.
load
(
profile
);
}
public
AtlasUser
Profile
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
public
AtlasUser
SavedSearch
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
String
userName
=
savedSearch
.
getOwnerName
();
AtlasUserProfile
userProfile
=
null
;
...
...
@@ -67,13 +68,21 @@ public class UserProfileService {
checkIfQueryAlreadyExists
(
savedSearch
,
userProfile
);
userProfile
.
getSavedSearches
().
add
(
savedSearch
);
return
dataAccess
.
save
(
userProfile
);
userProfile
=
dataAccess
.
save
(
userProfile
);
for
(
AtlasUserSavedSearch
s
:
userProfile
.
getSavedSearches
())
{
if
(
s
.
getName
().
equals
(
savedSearch
.
getName
())
&&
s
.
getSearchType
().
equals
(
savedSearch
.
getSearchType
()))
{
return
s
;
}
}
return
savedSearch
;
}
private
void
checkIfQueryAlreadyExists
(
AtlasUserSavedSearch
savedSearch
,
AtlasUserProfile
userProfile
)
throws
AtlasBaseException
{
for
(
AtlasUserSavedSearch
exisingSearch
:
userProfile
.
getSavedSearches
())
{
if
(
StringUtils
.
equals
(
exisingSearch
.
getOwnerName
(),
savedSearch
.
getOwnerName
())
&&
StringUtils
.
equals
(
exisingSearch
.
getName
(),
savedSearch
.
getName
()))
{
StringUtils
.
equals
(
exisingSearch
.
getName
(),
savedSearch
.
getName
())
&&
exisingSearch
.
getSearchType
().
equals
(
savedSearch
.
getSearchType
()))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
SAVED_SEARCH_ALREADY_EXISTS
,
savedSearch
.
getName
(),
savedSearch
.
getOwnerName
());
}
}
...
...
@@ -120,8 +129,8 @@ public class UserProfileService {
return
(
profile
!=
null
)
?
profile
.
getSavedSearches
()
:
null
;
}
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
)
throws
AtlasBaseException
{
AtlasUserSavedSearch
ss
=
new
AtlasUserSavedSearch
(
userName
,
searchName
);
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
,
SavedSearchType
searchType
)
throws
AtlasBaseException
{
AtlasUserSavedSearch
ss
=
new
AtlasUserSavedSearch
(
userName
,
searchName
,
searchType
);
return
dataAccess
.
load
(
ss
);
}
...
...
This diff is collapsed.
Click to expand it.
repository/src/test/java/org/apache/atlas/repository/userprofile/UserProfileServiceTest.java
View file @
400477c4
...
...
@@ -37,6 +37,7 @@ import java.io.IOException;
import
java.util.ArrayList
;
import
java.util.List
;
import
static
org
.
apache
.
atlas
.
model
.
profile
.
AtlasUserSavedSearch
.
SavedSearchType
.
BASIC
;
import
static
org
.
apache
.
atlas
.
repository
.
impexp
.
ZipFileResourceTestUtils
.
loadModelFromJson
;
import
static
org
.
testng
.
Assert
.*;
...
...
@@ -77,7 +78,7 @@ public class UserProfileServiceTest {
}
@Test
(
dependsOnMethods
=
{
"createsNewProfile"
,
"savesQueryForAnNonExistentUser"
},
expectedExceptions
=
AtlasBaseException
.
class
)
public
void
saves
AlreadyExistingQueryForAnExistingUser
()
throws
AtlasBaseException
{
public
void
atteptsToAdd
AlreadyExistingQueryForAnExistingUser
()
throws
AtlasBaseException
{
SearchParameters
expectedSearchParameter
=
getActualSearchParameters
();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
...
...
@@ -85,13 +86,20 @@ public class UserProfileServiceTest {
for
(
int
j
=
0
;
j
<
max_searches
;
j
++)
{
String
queryName
=
getIndexBasedQueryName
(
j
);
AtlasUserProfile
actual
=
userProfileService
.
addSavedSearch
(
new
AtlasUserSavedSearch
(
userName
,
queryName
,
expectedSearchParameter
));
AtlasUserSavedSearch
expected
=
getDefaultSavedSearch
(
userName
,
queryName
,
expectedSearchParameter
);
AtlasUserSavedSearch
actual
=
userProfileService
.
addSavedSearch
(
expected
);
assertNotNull
(
actual
);
assertNotNull
(
actual
.
getGuid
());
assertEquals
(
actual
.
getOwnerName
(),
expected
.
getOwnerName
());
assertEquals
(
actual
.
getName
(),
expected
.
getName
());
assertEquals
(
actual
.
getSearchType
(),
expected
.
getSearchType
());
assertEquals
(
actual
.
getSearchParameters
(),
expected
.
getSearchParameters
());
}
}
}
@Test
(
dependsOnMethods
=
{
"createsNewProfile"
,
"savesQueryForAnNonExistentUser"
,
"
saves
AlreadyExistingQueryForAnExistingUser"
})
@Test
(
dependsOnMethods
=
{
"createsNewProfile"
,
"savesQueryForAnNonExistentUser"
,
"
atteptsToAdd
AlreadyExistingQueryForAnExistingUser"
})
public
void
savesExistingQueryForAnExistingUser
()
throws
AtlasBaseException
{
SearchParameters
expectedSearchParameter
=
getActualSearchParameters
();
...
...
@@ -100,10 +108,10 @@ public class UserProfileServiceTest {
for
(
int
j
=
4
;
j
<
max_searches
+
6
;
j
++)
{
String
queryName
=
getIndexBasedQueryName
(
j
);
AtlasUser
Profile
actual
=
userProfileService
.
addSavedSearch
(
new
AtlasUser
SavedSearch
(
userName
,
queryName
,
expectedSearchParameter
));
AtlasUser
SavedSearch
actual
=
userProfileService
.
addSavedSearch
(
getDefault
SavedSearch
(
userName
,
queryName
,
expectedSearchParameter
));
assertNotNull
(
actual
);
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
assertNotNull
(
savedSearch
);
assertEquals
(
savedSearch
.
getSearchParameters
(),
expectedSearchParameter
);
}
...
...
@@ -122,14 +130,19 @@ public class UserProfileServiceTest {
@Test
(
dependsOnMethods
=
"createsNewProfile"
)
public
void
savesQueryForAnNonExistentUser
()
throws
AtlasBaseException
{
String
expectedUserName
=
"firstXYZ"
;
String
expectedUserName
=
getIndexBasedUserName
(
0
)
;
String
expectedQueryName
=
"testQuery"
;
SearchParameters
expectedSearchParam
=
getActualSearchParameters
();
AtlasUserSavedSearch
expectedSavedSearch
=
getDefaultSavedSearch
(
expectedUserName
,
expectedQueryName
,
expectedSearchParam
);
AtlasUserSavedSearch
actual
=
userProfileService
.
addSavedSearch
(
expectedSavedSearch
);
assertEquals
(
actual
.
getOwnerName
(),
expectedUserName
);
assertEquals
(
actual
.
getName
(),
expectedQueryName
);
}
AtlasUserProfile
actual
=
userProfileService
.
addSavedSearch
(
new
AtlasUserSavedSearch
(
expectedUserName
,
expectedQueryName
,
expectedSearchParam
));
assertEquals
(
actual
.
getName
(),
expectedUserName
);
assertEquals
(
actual
.
getSavedSearches
().
size
(),
1
);
assertEquals
(
actual
.
getSavedSearches
().
get
(
0
).
getName
(),
expectedQueryName
);
private
AtlasUserSavedSearch
getDefaultSavedSearch
(
String
userName
,
String
queryName
,
SearchParameters
expectedSearchParam
)
{
return
new
AtlasUserSavedSearch
(
userName
,
queryName
,
BASIC
,
expectedSearchParam
);
}
@Test
(
dependsOnMethods
=
"createsNewProfile"
)
...
...
@@ -143,7 +156,7 @@ public class UserProfileServiceTest {
saveQueries
(
userName
,
actualSearchParameter
);
for
(
int
i
=
0
;
i
<
max_searches
;
i
++)
{
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
getIndexBasedQueryName
(
i
));
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
getIndexBasedQueryName
(
i
)
,
BASIC
);
assertEquals
(
savedSearch
.
getName
(),
getIndexBasedQueryName
(
i
));
assertEquals
(
savedSearch
.
getSearchParameters
(),
actualSearchParameter
);
}
...
...
@@ -151,7 +164,7 @@ public class UserProfileServiceTest {
private
void
saveQueries
(
String
userName
,
SearchParameters
sp
)
throws
AtlasBaseException
{
for
(
int
i
=
0
;
i
<
max_searches
;
i
++)
{
userProfileService
.
addSavedSearch
(
new
AtlasUser
SavedSearch
(
userName
,
getIndexBasedQueryName
(
i
),
sp
));
userProfileService
.
addSavedSearch
(
getDefault
SavedSearch
(
userName
,
getIndexBasedQueryName
(
i
),
sp
));
}
}
...
...
@@ -181,7 +194,7 @@ public class UserProfileServiceTest {
public
void
updateSearch
()
throws
AtlasBaseException
{
final
String
queryName
=
getIndexBasedQueryName
(
0
);
String
userName
=
getIndexBasedUserName
(
0
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
assertNotNull
(
expected
);
SearchParameters
sp
=
expected
.
getSearchParameters
();
...
...
@@ -199,11 +212,11 @@ public class UserProfileServiceTest {
final
String
queryName
=
getIndexBasedQueryName
(
1
);
String
userName
=
getIndexBasedUserName
(
0
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
assertNotNull
(
expected
);
userProfileService
.
deleteSavedSearch
(
expected
.
getGuid
());
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
}
@Test
(
dependsOnMethods
=
{
"createsNewProfile"
,
"savesMultipleQueriesForUser"
,
"verifyQueryNameListForUser"
})
...
...
@@ -236,12 +249,12 @@ public class UserProfileServiceTest {
private
void
assertSaveLoadUserProfile
(
int
i
)
throws
AtlasBaseException
{
String
s
=
String
.
valueOf
(
i
);
AtlasUserProfile
expected
=
getAtlasUserProfile
(
i
);
userProfileService
.
saveUserProfile
(
expected
);
AtlasUserProfile
actual
=
userProfileService
.
getUserProfile
(
expected
.
getName
()
);
AtlasUserProfile
actual
=
userProfileService
.
saveUserProfile
(
expected
);
assertNotNull
(
actual
);
assertEquals
(
expected
.
getName
(),
actual
.
getName
());
assertEquals
(
expected
.
getFullName
(),
actual
.
getFullName
());
assertNotNull
(
actual
.
getGuid
());
}
public
static
AtlasUserProfile
getAtlasUserProfile
(
Integer
s
)
{
...
...
This diff is collapsed.
Click to expand it.
webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
View file @
400477c4
...
...
@@ -24,6 +24,7 @@ import org.apache.atlas.exception.AtlasBaseException;
import
org.apache.atlas.model.discovery.AtlasSearchResult
;
import
org.apache.atlas.model.discovery.SearchParameters
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
org.apache.atlas.utils.AtlasPerfTracer
;
import
org.apache.atlas.web.util.Servlets
;
import
org.apache.commons.collections.CollectionUtils
;
...
...
@@ -321,25 +322,9 @@ public class DiscoveryREST {
}
}
private
boolean
isEmpty
(
SearchParameters
.
FilterCriteria
filterCriteria
)
{
return
filterCriteria
==
null
||
(
StringUtils
.
isEmpty
(
filterCriteria
.
getAttributeName
())
&&
CollectionUtils
.
isEmpty
(
filterCriteria
.
getCriterion
()));
}
private
String
escapeTypeName
(
String
typeName
)
{
String
ret
;
if
(
StringUtils
.
startsWith
(
typeName
,
"`"
)
&&
StringUtils
.
endsWith
(
typeName
,
"`"
))
{
ret
=
typeName
;
}
else
{
ret
=
String
.
format
(
"`%s`"
,
typeName
);
}
return
ret
;
}
/**
* @param savedSearch
* @return the saved search-object
* @throws AtlasBaseException
* @throws IOException
*/
...
...
@@ -347,36 +332,75 @@ public class DiscoveryREST {
@Path
(
"saved"
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
void
createSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
,
IOException
{
public
AtlasUserSavedSearch
createSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
,
IOException
{
savedSearch
.
setOwnerName
(
Servlets
.
getUserName
(
httpServletRequest
));
atlasDiscoveryService
.
addSavedSearch
(
savedSearch
);
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.createSavedSearch(ownerName="
+
savedSearch
.
getOwnerName
()
+
", name="
+
savedSearch
.
getName
()
+
", searchType="
+
savedSearch
.
getSearchType
()
+
")"
);
}
return
atlasDiscoveryService
.
addSavedSearch
(
savedSearch
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
/**
/***
*
* @param savedSearch
* @return the updated search-object
* @throws AtlasBaseException
* @throws IOException
*/
@PUT
@Path
(
"saved"
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
void
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
atlasDiscoveryService
.
updateSavedSearch
(
savedSearch
);
public
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
savedSearch
.
setOwnerName
(
Servlets
.
getUserName
(
httpServletRequest
));
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.updateSavedSearch(ownerName="
+
savedSearch
.
getOwnerName
()
+
", name="
+
savedSearch
.
getName
()
+
", searchType="
+
savedSearch
.
getSearchType
()
+
")"
);
}
return
atlasDiscoveryService
.
updateSavedSearch
(
savedSearch
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
/**
*
* @param userName User for whom the search is retrieved
* @param searchName Name of the saved search
* @return
* @throws AtlasBaseException
*/
@GET
@Path
(
"saved/{name}"
)
@Path
(
"saved/{
type}/{
name}"
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
AtlasUserSavedSearch
getSavedSearch
(
@QueryParam
(
"user"
)
String
userName
,
@PathParam
(
"name"
)
String
searchName
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
getSavedSearch
(
@PathParam
(
"type"
)
String
searchType
,
@PathParam
(
"name"
)
String
searchName
,
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
userName
=
StringUtils
.
isBlank
(
userName
)
?
Servlets
.
getUserName
(
httpServletRequest
)
:
userName
;
return
atlasDiscoveryService
.
getSavedSearch
(
userName
,
searchName
);
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.getSavedSearch(user="
+
userName
+
", name="
+
searchName
+
", type="
+
searchType
+
")"
);
}
return
atlasDiscoveryService
.
getSavedSearch
(
userName
,
searchName
,
SavedSearchType
.
to
(
searchType
));
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
/**
...
...
@@ -388,7 +412,18 @@ public class DiscoveryREST {
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
userName
=
StringUtils
.
isBlank
(
userName
)
?
Servlets
.
getUserName
(
httpServletRequest
)
:
userName
;
return
atlasDiscoveryService
.
getSavedSearches
(
userName
);
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.getSavedSearches(user="
+
userName
+
")"
);
}
return
atlasDiscoveryService
.
getSavedSearches
(
userName
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
/**
...
...
@@ -399,6 +434,41 @@ public class DiscoveryREST {
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
void
deleteSavedSearch
(
@PathParam
(
"guid"
)
String
guid
)
throws
AtlasBaseException
{
atlasDiscoveryService
.
deleteSavedSearch
(
guid
);
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.deleteSavedSearch(guid="
+
guid
+
")"
);
}
AtlasUserSavedSearch
savedSearch
=
atlasDiscoveryService
.
getSavedSearch
(
guid
);
// block attempt to delete another user's saved-search
if
(!
StringUtils
.
equals
(
savedSearch
.
getOwnerName
(),
Servlets
.
getUserName
(
httpServletRequest
)))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
BAD_REQUEST
,
"invalid data"
);
}
atlasDiscoveryService
.
deleteSavedSearch
(
guid
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
private
boolean
isEmpty
(
SearchParameters
.
FilterCriteria
filterCriteria
)
{
return
filterCriteria
==
null
||
(
StringUtils
.
isEmpty
(
filterCriteria
.
getAttributeName
())
&&
CollectionUtils
.
isEmpty
(
filterCriteria
.
getCriterion
()));
}
private
String
escapeTypeName
(
String
typeName
)
{
String
ret
;
if
(
StringUtils
.
startsWith
(
typeName
,
"`"
)
&&
StringUtils
.
endsWith
(
typeName
,
"`"
))
{
ret
=
typeName
;
}
else
{
ret
=
String
.
format
(
"`%s`"
,
typeName
);
}
return
ret
;
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment