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
c6a0787e
Commit
c6a0787e
authored
May 20, 2015
by
Suma S
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #92 from sumashivaprasad/BUG-32830
Bug 32830 Fixed
parents
5becd8a5
93fed80a
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
177 additions
and
70 deletions
+177
-70
MetadataServiceClient.java
...ava/org/apache/hadoop/metadata/MetadataServiceClient.java
+4
-1
EntityResource.java
.../apache/hadoop/metadata/web/resources/EntityResource.java
+3
-7
MetadataDiscoveryResource.java
...oop/metadata/web/resources/MetadataDiscoveryResource.java
+158
-57
RexsterGraphResource.java
...e/hadoop/metadata/web/resources/RexsterGraphResource.java
+3
-3
TypesResource.java
...g/apache/hadoop/metadata/web/resources/TypesResource.java
+1
-1
MetadataDiscoveryJerseyResourceIT.java
...data/web/resources/MetadataDiscoveryJerseyResourceIT.java
+8
-1
No files found.
client/src/main/java/org/apache/hadoop/metadata/MetadataServiceClient.java
View file @
c6a0787e
...
...
@@ -51,13 +51,16 @@ public class MetadataServiceClient {
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
MetadataServiceClient
.
class
);
public
static
final
String
REQUEST_ID
=
"requestId"
;
public
static
final
String
RESULTS
=
"results"
;
public
static
final
String
TOTAL_SIZE
=
"totalSize"
;
public
static
final
String
COUNT
=
"count"
;
public
static
final
String
ROWS
=
"rows"
;
private
static
final
String
BASE_URI
=
"api/metadata/"
;
private
static
final
String
URI_TYPES
=
"types"
;
private
static
final
String
URI_ENTITIES
=
"entities"
;
private
static
final
String
URI_TRAITS
=
"traits"
;
private
static
final
String
URI_SEARCH
=
"discovery/search"
;
private
WebResource
service
;
public
MetadataServiceClient
(
String
baseUrl
)
{
...
...
webapp/src/main/java/org/apache/hadoop/metadata/web/resources/EntityResource.java
View file @
c6a0787e
...
...
@@ -143,14 +143,10 @@ public class EntityResource {
* Gets the list of entities for a given entity type.
*
* @param entityType name of a type which is unique
* @param offset starting offset for pagination
* @param resultsPerPage number of results for pagination
*/
@GET
@Produces
(
MediaType
.
APPLICATION_JSON
)
public
Response
getEntityListByType
(
@QueryParam
(
"type"
)
String
entityType
,
@DefaultValue
(
"0"
)
@QueryParam
(
"offset"
)
Integer
offset
,
@QueryParam
(
"numResults"
)
Integer
resultsPerPage
)
{
public
Response
getEntityListByType
(
@QueryParam
(
"type"
)
String
entityType
)
{
Preconditions
.
checkNotNull
(
entityType
,
"Entity type cannot be null"
);
try
{
LOG
.
debug
(
"Fetching entity list for type={} "
,
entityType
);
...
...
@@ -160,7 +156,7 @@ public class EntityResource {
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
"type"
,
entityType
);
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONArray
(
entityList
));
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
entityList
.
size
());
response
.
put
(
MetadataServiceClient
.
COUNT
,
entityList
.
size
());
return
Response
.
ok
(
response
).
build
();
}
catch
(
MetadataException
|
IllegalArgumentException
e
)
{
...
...
@@ -225,7 +221,7 @@ public class EntityResource {
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
GUID
,
guid
);
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONArray
(
traitNames
));
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
traitNames
.
size
());
response
.
put
(
MetadataServiceClient
.
COUNT
,
traitNames
.
size
());
return
Response
.
ok
(
response
).
build
();
}
catch
(
MetadataException
|
IllegalArgumentException
e
)
{
...
...
webapp/src/main/java/org/apache/hadoop/metadata/web/resources/MetadataDiscoveryResource.java
View file @
c6a0787e
...
...
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*
http://www.apache.org/licenses/LICENSE-2.0
*
*
<p/>
* http://www.apache.org/licenses/LICENSE-2.0
*
<p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
...
...
@@ -49,6 +49,11 @@ import java.util.Map;
public
class
MetadataDiscoveryResource
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
EntityResource
.
class
);
private
static
final
String
QUERY
=
"query"
;
private
static
final
String
QUERY_TYPE
=
"queryType"
;
private
static
final
String
QUERY_TYPE_DSL
=
"dsl"
;
private
static
final
String
QUERY_TYPE_GREMLIN
=
"gremlin"
;
private
static
final
String
QUERY_TYPE_FULLTEXT
=
"full-text"
;
private
final
DiscoveryService
discoveryService
;
...
...
@@ -79,38 +84,36 @@ public class MetadataDiscoveryResource {
return
searchUsingGremlinQuery
(
query
);
}
try
{
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
"query"
,
query
);
try
{
// fall back to dsl
final
String
jsonResult
=
discoveryService
.
searchByDSL
(
query
);
response
.
put
(
"queryType"
,
"dsl"
);
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONObject
(
jsonResult
));
}
catch
(
Throwable
throwable
)
{
LOG
.
error
(
"Unable to get entity list for query {} using dsl"
,
query
,
throwable
);
try
{
//fall back to full-text
final
String
jsonResult
=
discoveryService
.
searchByFullText
(
query
);
response
.
put
(
"queryType"
,
"full-text"
);
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONObject
(
jsonResult
));
}
catch
(
DiscoveryException
e
)
{
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
}
catch
(
JSONException
e
)
{
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
}
}
JSONObject
response
=
null
;
return
Response
.
ok
(
response
).
build
();
}
catch
(
JSONException
e
)
{
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
try
{
// fall back to dsl
final
String
jsonResultStr
=
discoveryService
.
searchByDSL
(
query
);
response
=
new
DSLJSONResponseBuilder
().
results
(
jsonResultStr
)
.
query
(
query
)
.
build
();
}
catch
(
Throwable
throwable
)
{
LOG
.
error
(
"Unable to get entity list for query {} using dsl"
,
query
,
throwable
);
try
{
//fall back to full-text
final
String
jsonResultStr
=
discoveryService
.
searchByFullText
(
query
);
response
=
new
FullTextJSonResponseBuilder
().
results
(
jsonResultStr
)
.
query
(
query
)
.
build
();
}
catch
(
DiscoveryException
e
)
{
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
}
catch
(
JSONException
e
)
{
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
}
}
return
Response
.
ok
(
response
)
.
build
();
}
/**
...
...
@@ -126,23 +129,22 @@ public class MetadataDiscoveryResource {
Preconditions
.
checkNotNull
(
dslQuery
,
"dslQuery cannot be null"
);
try
{
final
String
jsonResult
=
discoveryService
.
searchByDSL
(
dslQuery
);
final
String
jsonResult
Str
=
discoveryService
.
searchByDSL
(
dslQuery
);
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
"query"
,
dslQuery
);
response
.
put
(
"queryType"
,
"dsl"
);
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONObject
(
jsonResult
));
JSONObject
response
=
new
DSLJSONResponseBuilder
().
results
(
jsonResultStr
)
.
query
(
dslQuery
)
.
build
();
return
Response
.
ok
(
response
).
build
();
return
Response
.
ok
(
response
)
.
build
();
}
catch
(
DiscoveryException
e
)
{
LOG
.
error
(
"Unable to get entity list for dslQuery {}"
,
dslQuery
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
}
catch
(
JSONException
e
)
{
LOG
.
error
(
"Unable to get entity list for dslQuery {}"
,
dslQuery
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
}
}
...
...
@@ -160,29 +162,30 @@ public class MetadataDiscoveryResource {
try
{
final
List
<
Map
<
String
,
String
>>
results
=
discoveryService
.
searchByGremlin
(
gremlinQuery
);
.
searchByGremlin
(
gremlinQuery
);
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
"query"
,
gremlinQuery
);
response
.
put
(
"queryType"
,
"gremlin"
);
response
.
put
(
QUERY
,
gremlinQuery
);
response
.
put
(
QUERY_TYPE
,
QUERY_TYPE_GREMLIN
);
JSONArray
list
=
new
JSONArray
();
for
(
Map
<
String
,
String
>
result
:
results
)
{
list
.
put
(
new
JSONObject
(
result
));
}
response
.
put
(
MetadataServiceClient
.
RESULTS
,
list
);
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
list
.
length
());
response
.
put
(
MetadataServiceClient
.
COUNT
,
list
.
length
());
return
Response
.
ok
(
response
).
build
();
return
Response
.
ok
(
response
)
.
build
();
}
catch
(
DiscoveryException
e
)
{
LOG
.
error
(
"Unable to get entity list for gremlinQuery {}"
,
gremlinQuery
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
}
catch
(
JSONException
e
)
{
LOG
.
error
(
"Unable to get entity list for gremlinQuery {}"
,
gremlinQuery
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
}
}
...
...
@@ -199,15 +202,14 @@ public class MetadataDiscoveryResource {
Preconditions
.
checkNotNull
(
query
,
"query cannot be null"
);
try
{
final
String
jsonResult
=
discoveryService
.
searchByFullText
(
query
);
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
"query"
,
query
);
response
.
put
(
"queryType"
,
"full-text"
);
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONArray
(
jsonResult
));
final
String
jsonResultStr
=
discoveryService
.
searchByFullText
(
query
);
JSONArray
rowsJsonArr
=
new
JSONArray
(
jsonResultStr
);
return
Response
.
ok
(
response
).
build
();
JSONObject
response
=
new
FullTextJSonResponseBuilder
().
results
(
rowsJsonArr
)
.
query
(
query
)
.
build
();
return
Response
.
ok
(
response
)
.
build
();
}
catch
(
DiscoveryException
e
)
{
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
BAD_REQUEST
));
...
...
@@ -215,6 +217,104 @@ public class MetadataDiscoveryResource {
LOG
.
error
(
"Unable to get entity list for query {}"
,
query
,
e
);
throw
new
WebApplicationException
(
Servlets
.
getErrorResponse
(
e
,
Response
.
Status
.
INTERNAL_SERVER_ERROR
));
}
}
private
class
JsonResponseBuilder
{
protected
int
count
=
0
;
protected
String
query
;
protected
String
queryType
;
protected
JSONObject
response
;
JsonResponseBuilder
()
{
this
.
response
=
new
JSONObject
();
}
protected
JsonResponseBuilder
count
(
int
count
)
{
this
.
count
=
count
;
return
this
;
}
public
JsonResponseBuilder
query
(
String
query
)
{
this
.
query
=
query
;
return
this
;
}
public
JsonResponseBuilder
queryType
(
String
queryType
)
{
this
.
queryType
=
queryType
;
return
this
;
}
protected
JSONObject
build
()
throws
JSONException
{
Preconditions
.
checkNotNull
(
query
,
"Query cannot be null"
);
Preconditions
.
checkNotNull
(
queryType
,
"Query Type must be specified"
);
Preconditions
.
checkArgument
(
count
>=
0
,
"Search Result count should be > 0"
);
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
response
.
put
(
QUERY
,
query
);
response
.
put
(
QUERY_TYPE
,
queryType
);
response
.
put
(
MetadataServiceClient
.
COUNT
,
count
);
return
response
;
}
}
private
class
DSLJSONResponseBuilder
extends
JsonResponseBuilder
{
DSLJSONResponseBuilder
()
{
super
();
}
private
JSONObject
dslResults
;
public
DSLJSONResponseBuilder
results
(
JSONObject
dslResults
)
{
this
.
dslResults
=
dslResults
;
return
this
;
}
public
DSLJSONResponseBuilder
results
(
String
dslResults
)
throws
JSONException
{
return
results
(
new
JSONObject
(
dslResults
));
}
@Override
public
JSONObject
build
()
throws
JSONException
{
Preconditions
.
checkNotNull
(
dslResults
);
JSONArray
rowsJsonArr
=
dslResults
.
getJSONArray
(
MetadataServiceClient
.
ROWS
);
count
(
rowsJsonArr
.
length
());
queryType
(
QUERY_TYPE_DSL
);
JSONObject
response
=
super
.
build
();
response
.
put
(
MetadataServiceClient
.
RESULTS
,
dslResults
);
return
response
;
}
}
private
class
FullTextJSonResponseBuilder
extends
JsonResponseBuilder
{
private
JSONArray
fullTextResults
;
public
FullTextJSonResponseBuilder
results
(
JSONArray
fullTextResults
)
{
this
.
fullTextResults
=
fullTextResults
;
return
this
;
}
public
FullTextJSonResponseBuilder
results
(
String
dslResults
)
throws
JSONException
{
return
results
(
new
JSONArray
(
dslResults
));
}
public
FullTextJSonResponseBuilder
()
{
super
();
}
@Override
public
JSONObject
build
()
throws
JSONException
{
Preconditions
.
checkNotNull
(
fullTextResults
);
count
(
fullTextResults
.
length
());
queryType
(
QUERY_TYPE_FULLTEXT
);
JSONObject
response
=
super
.
build
();
response
.
put
(
MetadataServiceClient
.
RESULTS
,
fullTextResults
);
return
response
;
}
}
}
\ No newline at end of file
webapp/src/main/java/org/apache/hadoop/metadata/web/resources/RexsterGraphResource.java
View file @
c6a0787e
...
...
@@ -165,7 +165,7 @@ public class RexsterGraphResource {
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONObject
(
vertexProperties
));
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
vertexProperties
.
size
());
response
.
put
(
MetadataServiceClient
.
COUNT
,
vertexProperties
.
size
());
return
Response
.
ok
(
response
).
build
();
}
catch
(
JSONException
e
)
{
throw
new
WebApplicationException
(
...
...
@@ -276,7 +276,7 @@ public class RexsterGraphResource {
if
(!
countOnly
)
{
response
.
put
(
MetadataServiceClient
.
RESULTS
,
elementArray
);
}
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
counter
);
response
.
put
(
MetadataServiceClient
.
COUNT
,
counter
);
return
Response
.
ok
(
response
).
build
();
}
...
...
@@ -323,7 +323,7 @@ public class RexsterGraphResource {
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
RESULTS
,
vertexArray
);
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
counter
);
response
.
put
(
MetadataServiceClient
.
COUNT
,
counter
);
return
response
;
}
...
...
webapp/src/main/java/org/apache/hadoop/metadata/web/resources/TypesResource.java
View file @
c6a0787e
...
...
@@ -136,7 +136,7 @@ public class TypesResource {
JSONObject
response
=
new
JSONObject
();
response
.
put
(
MetadataServiceClient
.
RESULTS
,
new
JSONArray
(
result
));
response
.
put
(
MetadataServiceClient
.
TOTAL_SIZE
,
result
.
size
());
response
.
put
(
MetadataServiceClient
.
COUNT
,
result
.
size
());
response
.
put
(
MetadataServiceClient
.
REQUEST_ID
,
Servlets
.
getRequestId
());
return
Response
.
ok
(
response
).
build
();
...
...
webapp/src/test/java/org/apache/hadoop/metadata/web/resources/MetadataDiscoveryJerseyResourceIT.java
View file @
c6a0787e
...
...
@@ -83,8 +83,12 @@ public class MetadataDiscoveryJerseyResourceIT extends BaseResourceIT {
JSONObject
results
=
response
.
getJSONObject
(
MetadataServiceClient
.
RESULTS
);
Assert
.
assertNotNull
(
results
);
JSONArray
rows
=
results
.
getJSONArray
(
"rows"
);
JSONArray
rows
=
results
.
getJSONArray
(
MetadataServiceClient
.
ROWS
);
Assert
.
assertEquals
(
rows
.
length
(),
1
);
int
numRows
=
response
.
getInt
(
MetadataServiceClient
.
COUNT
);
Assert
.
assertEquals
(
numRows
,
1
);
}
@Test
...
...
@@ -164,6 +168,9 @@ public class MetadataDiscoveryJerseyResourceIT extends BaseResourceIT {
Assert
.
assertNotNull
(
row
.
get
(
"guid"
));
Assert
.
assertEquals
(
row
.
getString
(
"typeName"
),
"dsl_test_type"
);
Assert
.
assertNotNull
(
row
.
get
(
"score"
));
int
numRows
=
response
.
getInt
(
MetadataServiceClient
.
COUNT
);
Assert
.
assertEquals
(
numRows
,
1
);
}
private
void
createTypes
()
throws
Exception
{
...
...
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