Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
apollo
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
openSource
apollo
Commits
93d1ce67
Commit
93d1ce67
authored
Apr 20, 2016
by
Jason Song
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #116 from yiming187/rest
Update createOrUpdate REST API
parents
5d58e7cb
932ed8e7
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
153 additions
and
140 deletions
+153
-140
AppController.java
...m/ctrip/apollo/adminservice/controller/AppController.java
+13
-20
ClusterController.java
...rip/apollo/adminservice/controller/ClusterController.java
+13
-22
ItemController.java
.../ctrip/apollo/adminservice/controller/ItemController.java
+24
-15
NamespaceController.java
...p/apollo/adminservice/controller/NamespaceController.java
+12
-39
AppControllerTest.java
...rip/apollo/adminservice/controller/AppControllerTest.java
+35
-8
ItemRepository.java
.../java/com/ctrip/apollo/biz/repository/ItemRepository.java
+1
-1
ItemService.java
...c/main/java/com/ctrip/apollo/biz/service/ItemService.java
+21
-4
MetaDomainTest.java
...e/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java
+1
-1
AppController.java
...ava/com/ctrip/apollo/portal/controller/AppController.java
+4
-3
AppService.java
...main/java/com/ctrip/apollo/portal/service/AppService.java
+10
-8
AppServiceTest.java
...src/test/java/com/ctrip/apollo/portal/AppServiceTest.java
+19
-19
No files found.
apollo-adminservice/src/main/java/com/ctrip/apollo/adminservice/controller/AppController.java
View file @
93d1ce67
...
@@ -4,8 +4,6 @@ import java.util.List;
...
@@ -4,8 +4,6 @@ import java.util.List;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -28,16 +26,25 @@ public class AppController {
...
@@ -28,16 +26,25 @@ public class AppController {
@Autowired
@Autowired
private
AppService
appService
;
private
AppService
appService
;
@Autowired
@Autowired
private
AdminService
adminService
;
private
AdminService
adminService
;
@RequestMapping
(
path
=
"/apps"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
path
=
"/apps"
,
method
=
RequestMethod
.
POST
)
public
ResponseEntity
<
AppDTO
>
cre
ate
(
@RequestBody
AppDTO
dto
,
@ActiveUser
UserDetails
user
)
{
public
AppDTO
createOrUpd
ate
(
@RequestBody
AppDTO
dto
,
@ActiveUser
UserDetails
user
)
{
App
entity
=
BeanUtils
.
transfrom
(
App
.
class
,
dto
);
App
entity
=
BeanUtils
.
transfrom
(
App
.
class
,
dto
);
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
App
managedEntity
=
appService
.
findOne
(
entity
.
getAppId
());
entity
=
adminService
.
createNewApp
(
entity
);
if
(
managedEntity
!=
null
)
{
managedEntity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
BeanUtils
.
copyEntityProperties
(
entity
,
managedEntity
);
entity
=
appService
.
update
(
managedEntity
);
}
else
{
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
entity
=
adminService
.
createNewApp
(
entity
);
}
dto
=
BeanUtils
.
transfrom
(
AppDTO
.
class
,
entity
);
dto
=
BeanUtils
.
transfrom
(
AppDTO
.
class
,
entity
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
body
(
dto
)
;
return
dto
;
}
}
@RequestMapping
(
path
=
"/apps/{appId}"
,
method
=
RequestMethod
.
DELETE
)
@RequestMapping
(
path
=
"/apps/{appId}"
,
method
=
RequestMethod
.
DELETE
)
...
@@ -66,18 +73,4 @@ public class AppController {
...
@@ -66,18 +73,4 @@ public class AppController {
return
BeanUtils
.
transfrom
(
AppDTO
.
class
,
app
);
return
BeanUtils
.
transfrom
(
AppDTO
.
class
,
app
);
}
}
@RequestMapping
(
path
=
"/apps/{appId}"
,
method
=
RequestMethod
.
PUT
)
public
AppDTO
update
(
@PathVariable
(
"appId"
)
String
appId
,
@RequestBody
AppDTO
dto
,
@ActiveUser
UserDetails
user
)
{
if
(!
appId
.
equals
(
dto
.
getAppId
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
appId
,
dto
.
getAppId
()));
}
App
entity
=
appService
.
findOne
(
appId
);
if
(
entity
==
null
)
throw
new
NotFoundException
(
"app not found for appId "
+
appId
);
entity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
entity
=
appService
.
update
(
BeanUtils
.
transfrom
(
App
.
class
,
dto
));
return
BeanUtils
.
transfrom
(
AppDTO
.
class
,
entity
);
}
}
}
apollo-adminservice/src/main/java/com/ctrip/apollo/adminservice/controller/ClusterController.java
View file @
93d1ce67
...
@@ -3,8 +3,6 @@ package com.ctrip.apollo.adminservice.controller;
...
@@ -3,8 +3,6 @@ package com.ctrip.apollo.adminservice.controller;
import
java.util.List
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -30,13 +28,21 @@ public class ClusterController {
...
@@ -30,13 +28,21 @@ public class ClusterController {
private
ClusterService
clusterService
;
private
ClusterService
clusterService
;
@RequestMapping
(
path
=
"/apps/{appId}/clusters"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
path
=
"/apps/{appId}/clusters"
,
method
=
RequestMethod
.
POST
)
public
ResponseEntity
<
ClusterDTO
>
create
(
@PathVariable
(
"appId"
)
String
appId
,
public
ClusterDTO
createOrUpdate
(
@PathVariable
(
"appId"
)
String
appId
,
@RequestBody
ClusterDTO
dto
,
@
RequestBody
ClusterDTO
dto
,
@
ActiveUser
UserDetails
user
)
{
@ActiveUser
UserDetails
user
)
{
Cluster
entity
=
BeanUtils
.
transfrom
(
Cluster
.
class
,
dto
);
Cluster
entity
=
BeanUtils
.
transfrom
(
Cluster
.
class
,
dto
);
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
Cluster
managedEntity
=
clusterService
.
findOne
(
appId
,
entity
.
getName
());
entity
=
clusterService
.
save
(
entity
);
if
(
managedEntity
!=
null
)
{
managedEntity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
BeanUtils
.
copyEntityProperties
(
entity
,
managedEntity
);
entity
=
clusterService
.
update
(
managedEntity
);
}
else
{
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
entity
=
clusterService
.
save
(
entity
);
}
dto
=
BeanUtils
.
transfrom
(
ClusterDTO
.
class
,
entity
);
dto
=
BeanUtils
.
transfrom
(
ClusterDTO
.
class
,
entity
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
body
(
dto
)
;
return
dto
;
}
}
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}"
,
method
=
RequestMethod
.
DELETE
)
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}"
,
method
=
RequestMethod
.
DELETE
)
...
@@ -62,19 +68,4 @@ public class ClusterController {
...
@@ -62,19 +68,4 @@ public class ClusterController {
return
BeanUtils
.
transfrom
(
ClusterDTO
.
class
,
cluster
);
return
BeanUtils
.
transfrom
(
ClusterDTO
.
class
,
cluster
);
}
}
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}"
,
method
=
RequestMethod
.
PUT
)
public
ClusterDTO
update
(
@PathVariable
(
"appId"
)
String
appId
,
@PathVariable
(
"clusterName"
)
String
clusterName
,
@RequestBody
ClusterDTO
dto
,
@ActiveUser
UserDetails
user
)
{
if
(!
clusterName
.
equals
(
dto
.
getName
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
clusterName
,
dto
.
getName
()));
}
Cluster
entity
=
clusterService
.
findOne
(
appId
,
clusterName
);
if
(
entity
==
null
)
throw
new
NotFoundException
(
"cluster not found for name "
+
clusterName
);
entity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
entity
=
clusterService
.
update
(
BeanUtils
.
transfrom
(
Cluster
.
class
,
dto
));
return
BeanUtils
.
transfrom
(
ClusterDTO
.
class
,
entity
);
}
}
}
apollo-adminservice/src/main/java/com/ctrip/apollo/adminservice/controller/ItemController.java
View file @
93d1ce67
...
@@ -3,8 +3,6 @@ package com.ctrip.apollo.adminservice.controller;
...
@@ -3,8 +3,6 @@ package com.ctrip.apollo.adminservice.controller;
import
java.util.List
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -29,13 +27,24 @@ public class ItemController {
...
@@ -29,13 +27,24 @@ public class ItemController {
@Autowired
@Autowired
private
ItemService
itemService
;
private
ItemService
itemService
;
@RequestMapping
(
path
=
"/items/"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items"
,
method
=
RequestMethod
.
POST
)
public
ResponseEntity
<
ItemDTO
>
create
(
@RequestBody
ItemDTO
dto
,
@ActiveUser
UserDetails
user
)
{
public
ItemDTO
createOrUpdate
(
@PathVariable
(
"appId"
)
String
appId
,
@PathVariable
(
"clusterName"
)
String
clusterName
,
@PathVariable
(
"namespaceName"
)
String
namespaceName
,
@RequestBody
ItemDTO
dto
,
@ActiveUser
UserDetails
user
)
{
Item
entity
=
BeanUtils
.
transfrom
(
Item
.
class
,
dto
);
Item
entity
=
BeanUtils
.
transfrom
(
Item
.
class
,
dto
);
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
Item
managedEntity
=
itemService
.
findOne
(
appId
,
clusterName
,
namespaceName
,
entity
.
getKey
());
entity
=
itemService
.
save
(
entity
);
if
(
managedEntity
!=
null
)
{
managedEntity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
BeanUtils
.
copyEntityProperties
(
entity
,
managedEntity
);
entity
=
itemService
.
update
(
managedEntity
);
}
else
{
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
entity
=
itemService
.
save
(
entity
);
}
dto
=
BeanUtils
.
transfrom
(
ItemDTO
.
class
,
entity
);
dto
=
BeanUtils
.
transfrom
(
ItemDTO
.
class
,
entity
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
body
(
dto
)
;
return
dto
;
}
}
@RequestMapping
(
path
=
"/items/{itemId}"
,
method
=
RequestMethod
.
DELETE
)
@RequestMapping
(
path
=
"/items/{itemId}"
,
method
=
RequestMethod
.
DELETE
)
...
@@ -60,13 +69,13 @@ public class ItemController {
...
@@ -60,13 +69,13 @@ public class ItemController {
return
BeanUtils
.
transfrom
(
ItemDTO
.
class
,
item
);
return
BeanUtils
.
transfrom
(
ItemDTO
.
class
,
item
);
}
}
@RequestMapping
(
path
=
"/item/{itemId}"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
"/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}"
)
public
ItemDTO
update
(
@PathVariable
(
"itemId"
)
long
itemId
,
@RequestBody
ItemDTO
dto
,
public
ItemDTO
get
(
@PathVariable
(
"appId"
)
String
appId
,
@
ActiveUser
UserDetails
user
)
{
@
PathVariable
(
"clusterName"
)
String
clusterName
,
Item
entity
=
itemService
.
findOne
(
itemId
);
@PathVariable
(
"namespaceName"
)
String
namespaceName
,
@PathVariable
(
"key"
)
String
key
)
{
if
(
entity
==
null
)
throw
new
NotFoundException
(
"item not found for itemId "
+
itemId
);
Item
item
=
itemService
.
findOne
(
appId
,
clusterName
,
namespaceName
,
key
);
entity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
if
(
item
==
null
)
throw
new
NotFoundException
(
entity
=
itemService
.
update
(
BeanUtils
.
transfrom
(
Item
.
class
,
dto
));
String
.
format
(
"item not found for %s %s %s %s"
,
appId
,
clusterName
,
namespaceName
,
key
));
return
BeanUtils
.
transfrom
(
ItemDTO
.
class
,
entity
);
return
BeanUtils
.
transfrom
(
ItemDTO
.
class
,
item
);
}
}
}
}
apollo-adminservice/src/main/java/com/ctrip/apollo/adminservice/controller/NamespaceController.java
View file @
93d1ce67
...
@@ -3,8 +3,6 @@ package com.ctrip.apollo.adminservice.controller;
...
@@ -3,8 +3,6 @@ package com.ctrip.apollo.adminservice.controller;
import
java.util.List
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -30,22 +28,22 @@ public class NamespaceController {
...
@@ -30,22 +28,22 @@ public class NamespaceController {
private
NamespaceService
namespaceService
;
private
NamespaceService
namespaceService
;
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}/namespaces"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}/namespaces"
,
method
=
RequestMethod
.
POST
)
public
ResponseEntity
<
NamespaceDTO
>
cre
ate
(
@PathVariable
(
"appId"
)
String
appId
,
public
NamespaceDTO
createOrUpd
ate
(
@PathVariable
(
"appId"
)
String
appId
,
@PathVariable
(
"clusterName"
)
String
clusterName
,
@RequestBody
NamespaceDTO
dto
,
@PathVariable
(
"clusterName"
)
String
clusterName
,
@RequestBody
NamespaceDTO
dto
,
@ActiveUser
UserDetails
user
)
{
@ActiveUser
UserDetails
user
)
{
if
(!
appId
.
equals
(
dto
.
getAppId
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
appId
,
dto
.
getAppId
()));
}
if
(!
clusterName
.
equals
(
dto
.
getClusterName
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
clusterName
,
dto
.
getClusterName
()));
}
Namespace
entity
=
BeanUtils
.
transfrom
(
Namespace
.
class
,
dto
);
Namespace
entity
=
BeanUtils
.
transfrom
(
Namespace
.
class
,
dto
);
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
Namespace
managedEntity
=
namespaceService
.
findOne
(
appId
,
clusterName
,
entity
.
getNamespaceName
());
entity
=
namespaceService
.
save
(
entity
);
if
(
managedEntity
!=
null
)
{
managedEntity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
BeanUtils
.
copyEntityProperties
(
entity
,
managedEntity
);
entity
=
namespaceService
.
update
(
managedEntity
);
}
else
{
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
entity
=
namespaceService
.
save
(
entity
);
}
dto
=
BeanUtils
.
transfrom
(
NamespaceDTO
.
class
,
entity
);
dto
=
BeanUtils
.
transfrom
(
NamespaceDTO
.
class
,
entity
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
body
(
dto
)
;
return
dto
;
}
}
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}"
,
method
=
RequestMethod
.
DELETE
)
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}"
,
method
=
RequestMethod
.
DELETE
)
...
@@ -83,29 +81,4 @@ public class NamespaceController {
...
@@ -83,29 +81,4 @@ public class NamespaceController {
return
BeanUtils
.
transfrom
(
NamespaceDTO
.
class
,
namespace
);
return
BeanUtils
.
transfrom
(
NamespaceDTO
.
class
,
namespace
);
}
}
@RequestMapping
(
path
=
"/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}"
,
method
=
RequestMethod
.
PUT
)
public
NamespaceDTO
update
(
@PathVariable
(
"appId"
)
String
appId
,
@PathVariable
(
"clusterName"
)
String
clusterName
,
@PathVariable
(
"namespaceName"
)
String
namespaceName
,
@RequestBody
NamespaceDTO
dto
,
@ActiveUser
UserDetails
user
)
{
if
(!
appId
.
equals
(
dto
.
getAppId
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
appId
,
dto
.
getAppId
()));
}
if
(!
clusterName
.
equals
(
dto
.
getClusterName
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
clusterName
,
dto
.
getClusterName
()));
}
if
(!
namespaceName
.
equals
(
dto
.
getNamespaceName
()))
{
throw
new
IllegalArgumentException
(
String
.
format
(
"Path variable %s is not equals to object field %s"
,
namespaceName
,
dto
.
getNamespaceName
()));
}
Namespace
entity
=
namespaceService
.
findOne
(
appId
,
clusterName
,
namespaceName
);
if
(
entity
==
null
)
throw
new
NotFoundException
(
String
.
format
(
"namespace not found for %s %s %s"
,
appId
,
clusterName
,
namespaceName
));
entity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
entity
=
namespaceService
.
update
(
BeanUtils
.
transfrom
(
Namespace
.
class
,
dto
));
return
BeanUtils
.
transfrom
(
NamespaceDTO
.
class
,
entity
);
}
}
}
apollo-adminservice/src/test/java/com/ctrip/apollo/adminservice/controller/AppControllerTest.java
View file @
93d1ce67
...
@@ -13,15 +13,15 @@ import com.ctrip.apollo.biz.repository.AppRepository;
...
@@ -13,15 +13,15 @@ import com.ctrip.apollo.biz.repository.AppRepository;
import
com.ctrip.apollo.common.utils.BeanUtils
;
import
com.ctrip.apollo.common.utils.BeanUtils
;
import
com.ctrip.apollo.core.dto.AppDTO
;
import
com.ctrip.apollo.core.dto.AppDTO
;
public
class
AppControllerTest
extends
AbstractControllerTest
{
public
class
AppControllerTest
extends
AbstractControllerTest
{
@Autowired
@Autowired
AppRepository
appRepository
;
AppRepository
appRepository
;
private
String
getBaseAppUrl
(){
private
String
getBaseAppUrl
()
{
return
"http://localhost:"
+
port
+
"/apps/"
;
return
"http://localhost:"
+
port
+
"/apps/"
;
}
}
@Test
@Test
@Sql
(
scripts
=
"/controller/cleanup.sql"
,
executionPhase
=
ExecutionPhase
.
AFTER_TEST_METHOD
)
@Sql
(
scripts
=
"/controller/cleanup.sql"
,
executionPhase
=
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreate
()
{
public
void
testCreate
()
{
...
@@ -29,7 +29,7 @@ public class AppControllerTest extends AbstractControllerTest{
...
@@ -29,7 +29,7 @@ public class AppControllerTest extends AbstractControllerTest{
ResponseEntity
<
AppDTO
>
response
=
ResponseEntity
<
AppDTO
>
response
=
restTemplate
.
postForEntity
(
getBaseAppUrl
(),
dto
,
AppDTO
.
class
);
restTemplate
.
postForEntity
(
getBaseAppUrl
(),
dto
,
AppDTO
.
class
);
AppDTO
result
=
response
.
getBody
();
AppDTO
result
=
response
.
getBody
();
Assert
.
assertEquals
(
HttpStatus
.
CREATED
,
response
.
getStatusCode
());
Assert
.
assertEquals
(
HttpStatus
.
OK
,
response
.
getStatusCode
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
result
.
getAppId
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
result
.
getAppId
());
Assert
.
assertTrue
(
result
.
getId
()
>
0
);
Assert
.
assertTrue
(
result
.
getId
()
>
0
);
...
@@ -40,13 +40,40 @@ public class AppControllerTest extends AbstractControllerTest{
...
@@ -40,13 +40,40 @@ public class AppControllerTest extends AbstractControllerTest{
@Test
@Test
@Sql
(
scripts
=
"/controller/cleanup.sql"
,
executionPhase
=
ExecutionPhase
.
AFTER_TEST_METHOD
)
@Sql
(
scripts
=
"/controller/cleanup.sql"
,
executionPhase
=
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreateTwice
()
{
AppDTO
dto
=
generateSampleDTOData
();
ResponseEntity
<
AppDTO
>
response
=
restTemplate
.
postForEntity
(
getBaseAppUrl
(),
dto
,
AppDTO
.
class
);
AppDTO
first
=
response
.
getBody
();
Assert
.
assertEquals
(
HttpStatus
.
OK
,
response
.
getStatusCode
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
first
.
getAppId
());
Assert
.
assertTrue
(
first
.
getId
()
>
0
);
App
savedApp
=
appRepository
.
findOne
(
first
.
getId
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
savedApp
.
getAppId
());
Assert
.
assertNotNull
(
savedApp
.
getDataChangeCreatedTime
());
Assert
.
assertNull
(
savedApp
.
getDataChangeLastModifiedTime
());
response
=
restTemplate
.
postForEntity
(
getBaseAppUrl
(),
dto
,
AppDTO
.
class
);
AppDTO
second
=
response
.
getBody
();
Assert
.
assertEquals
(
HttpStatus
.
OK
,
response
.
getStatusCode
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
second
.
getAppId
());
Assert
.
assertEquals
(
first
.
getId
(),
second
.
getId
());
savedApp
=
appRepository
.
findOne
(
second
.
getId
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
savedApp
.
getAppId
());
Assert
.
assertNotNull
(
savedApp
.
getDataChangeCreatedTime
());
Assert
.
assertNotNull
(
savedApp
.
getDataChangeLastModifiedTime
());
}
@Test
@Sql
(
scripts
=
"/controller/cleanup.sql"
,
executionPhase
=
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testFind
()
{
public
void
testFind
()
{
AppDTO
dto
=
generateSampleDTOData
();
AppDTO
dto
=
generateSampleDTOData
();
App
app
=
BeanUtils
.
transfrom
(
App
.
class
,
dto
);
App
app
=
BeanUtils
.
transfrom
(
App
.
class
,
dto
);
app
=
appRepository
.
save
(
app
);
app
=
appRepository
.
save
(
app
);
AppDTO
result
=
AppDTO
result
=
restTemplate
.
getForObject
(
getBaseAppUrl
()
+
dto
.
getAppId
(),
AppDTO
.
class
);
restTemplate
.
getForObject
(
getBaseAppUrl
()
+
dto
.
getAppId
(),
AppDTO
.
class
);
Assert
.
assertEquals
(
dto
.
getAppId
(),
result
.
getAppId
());
Assert
.
assertEquals
(
dto
.
getAppId
(),
result
.
getAppId
());
Assert
.
assertEquals
(
dto
.
getName
(),
result
.
getName
());
Assert
.
assertEquals
(
dto
.
getName
(),
result
.
getName
());
}
}
...
@@ -80,7 +107,7 @@ public class AppControllerTest extends AbstractControllerTest{
...
@@ -80,7 +107,7 @@ public class AppControllerTest extends AbstractControllerTest{
app
=
appRepository
.
save
(
app
);
app
=
appRepository
.
save
(
app
);
dto
.
setName
(
"newName"
);
dto
.
setName
(
"newName"
);
restTemplate
.
p
ut
(
getBaseAppUrl
()
+
dto
.
getAppId
(),
dto
);
restTemplate
.
p
ostForObject
(
getBaseAppUrl
(),
dto
,
AppDTO
.
class
);
App
updatedApp
=
appRepository
.
findOne
(
app
.
getId
());
App
updatedApp
=
appRepository
.
findOne
(
app
.
getId
());
Assert
.
assertEquals
(
dto
.
getName
(),
updatedApp
.
getName
());
Assert
.
assertEquals
(
dto
.
getName
(),
updatedApp
.
getName
());
...
...
apollo-biz/src/main/java/com/ctrip/apollo/biz/repository/ItemRepository.java
View file @
93d1ce67
...
@@ -8,7 +8,7 @@ import com.ctrip.apollo.biz.entity.Item;
...
@@ -8,7 +8,7 @@ import com.ctrip.apollo.biz.entity.Item;
public
interface
ItemRepository
extends
PagingAndSortingRepository
<
Item
,
Long
>
{
public
interface
ItemRepository
extends
PagingAndSortingRepository
<
Item
,
Long
>
{
List
<
Item
>
findByNamespaceIdIsIn
(
List
<
Long
>
namespaceIds
);
Item
findByNamespaceIdAndKey
(
Long
namespaceId
,
String
key
);
List
<
Item
>
findByNamespaceIdOrderByLineNumAsc
(
Long
namespaceId
);
List
<
Item
>
findByNamespaceIdOrderByLineNumAsc
(
Long
namespaceId
);
...
...
apollo-biz/src/main/java/com/ctrip/apollo/biz/service/ItemService.java
View file @
93d1ce67
...
@@ -6,8 +6,11 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -6,8 +6,11 @@ import org.springframework.transaction.annotation.Transactional;
import
com.ctrip.apollo.biz.entity.Audit
;
import
com.ctrip.apollo.biz.entity.Audit
;
import
com.ctrip.apollo.biz.entity.Item
;
import
com.ctrip.apollo.biz.entity.Item
;
import
com.ctrip.apollo.biz.entity.Namespace
;
import
com.ctrip.apollo.biz.repository.ItemRepository
;
import
com.ctrip.apollo.biz.repository.ItemRepository
;
import
com.ctrip.apollo.biz.repository.NamespaceRepository
;
import
com.ctrip.apollo.common.utils.BeanUtils
;
import
com.ctrip.apollo.common.utils.BeanUtils
;
import
com.ctrip.apollo.core.exception.NotFoundException
;
@Service
@Service
public
class
ItemService
{
public
class
ItemService
{
...
@@ -16,6 +19,9 @@ public class ItemService {
...
@@ -16,6 +19,9 @@ public class ItemService {
private
ItemRepository
itemRepository
;
private
ItemRepository
itemRepository
;
@Autowired
@Autowired
private
NamespaceRepository
namespaceRepository
;
@Autowired
private
AuditService
auditService
;
private
AuditService
auditService
;
@Transactional
@Transactional
...
@@ -25,6 +31,17 @@ public class ItemService {
...
@@ -25,6 +31,17 @@ public class ItemService {
auditService
.
audit
(
Item
.
class
.
getSimpleName
(),
id
,
Audit
.
OP
.
DELETE
,
owner
);
auditService
.
audit
(
Item
.
class
.
getSimpleName
(),
id
,
Audit
.
OP
.
DELETE
,
owner
);
}
}
public
Item
findOne
(
String
appId
,
String
clusterName
,
String
namespaceName
,
String
key
)
{
Namespace
namespace
=
namespaceRepository
.
findByAppIdAndClusterNameAndNamespaceName
(
appId
,
clusterName
,
namespaceName
);
if
(
namespace
==
null
)
{
throw
new
NotFoundException
(
String
.
format
(
"namespace not found for %s %s %s"
,
appId
,
clusterName
,
namespaceName
));
}
Item
item
=
itemRepository
.
findByNamespaceIdAndKey
(
namespace
.
getId
(),
key
);
return
item
;
}
public
Item
findOne
(
long
itemId
)
{
public
Item
findOne
(
long
itemId
)
{
Item
item
=
itemRepository
.
findOne
(
itemId
);
Item
item
=
itemRepository
.
findOne
(
itemId
);
return
item
;
return
item
;
...
@@ -44,11 +61,11 @@ public class ItemService {
...
@@ -44,11 +61,11 @@ public class ItemService {
public
Item
update
(
Item
item
)
{
public
Item
update
(
Item
item
)
{
Item
managedItem
=
itemRepository
.
findOne
(
item
.
getId
());
Item
managedItem
=
itemRepository
.
findOne
(
item
.
getId
());
BeanUtils
.
copyEntityProperties
(
item
,
managedItem
);
BeanUtils
.
copyEntityProperties
(
item
,
managedItem
);
managedItem
=
itemRepository
.
save
(
managedItem
);
managedItem
=
itemRepository
.
save
(
managedItem
);
auditService
.
audit
(
Item
.
class
.
getSimpleName
(),
managedItem
.
getId
(),
Audit
.
OP
.
UPDATE
,
auditService
.
audit
(
Item
.
class
.
getSimpleName
(),
managedItem
.
getId
(),
Audit
.
OP
.
UPDATE
,
managedItem
.
getDataChangeLastModifiedBy
());
managedItem
.
getDataChangeLastModifiedBy
());
return
managedItem
;
return
managedItem
;
}
}
...
...
apollo-core/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java
View file @
93d1ce67
...
@@ -9,7 +9,7 @@ public class MetaDomainTest {
...
@@ -9,7 +9,7 @@ public class MetaDomainTest {
@Test
@Test
public
void
testGetMetaDomain
()
{
public
void
testGetMetaDomain
()
{
Assert
.
assertEquals
(
"http://localhost:80
9
0"
,
MetaDomainConsts
.
getDomain
(
Env
.
LOCAL
));
Assert
.
assertEquals
(
"http://localhost:80
8
0"
,
MetaDomainConsts
.
getDomain
(
Env
.
LOCAL
));
Assert
.
assertEquals
(
"http://dev:8080"
,
MetaDomainConsts
.
getDomain
(
Env
.
DEV
));
Assert
.
assertEquals
(
"http://dev:8080"
,
MetaDomainConsts
.
getDomain
(
Env
.
DEV
));
Assert
.
assertNull
(
MetaDomainConsts
.
getDomain
(
Env
.
PRO
));
Assert
.
assertNull
(
MetaDomainConsts
.
getDomain
(
Env
.
PRO
));
}
}
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/controller/AppController.java
View file @
93d1ce67
package
com
.
ctrip
.
apollo
.
portal
.
controller
;
package
com
.
ctrip
.
apollo
.
portal
.
controller
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -39,12 +40,12 @@ public class AppController {
...
@@ -39,12 +40,12 @@ public class AppController {
}
}
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
POST
,
consumes
=
{
"application/json"
})
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
POST
,
consumes
=
{
"application/json"
})
public
AppDTO
create
(
@RequestBody
AppDTO
app
)
{
public
ResponseEntity
<
Void
>
create
(
@RequestBody
AppDTO
app
)
{
if
(
isInvalidApp
(
app
)){
if
(
isInvalidApp
(
app
)){
throw
new
BadRequestException
(
"request payload contains empty"
);
throw
new
BadRequestException
(
"request payload contains empty"
);
}
}
AppDTO
createdApp
=
appService
.
save
(
app
);
appService
.
save
(
app
);
return
createdApp
;
return
ResponseEntity
.
ok
().
build
()
;
}
}
private
boolean
isInvalidApp
(
AppDTO
app
)
{
private
boolean
isInvalidApp
(
AppDTO
app
)
{
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/service/AppService.java
View file @
93d1ce67
package
com
.
ctrip
.
apollo
.
portal
.
service
;
package
com
.
ctrip
.
apollo
.
portal
.
service
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -29,7 +28,7 @@ public class AppService {
...
@@ -29,7 +28,7 @@ public class AppService {
@Autowired
@Autowired
private
AdminServiceAPI
.
AppAPI
appAPI
;
private
AdminServiceAPI
.
AppAPI
appAPI
;
public
List
<
AppDTO
>
findAll
(
Env
env
){
public
List
<
AppDTO
>
findAll
(
Env
env
)
{
return
appAPI
.
getApps
(
env
);
return
appAPI
.
getApps
(
env
);
}
}
...
@@ -45,12 +44,15 @@ public class AppService {
...
@@ -45,12 +44,15 @@ public class AppService {
return
tree
;
return
tree
;
}
}
public
AppDTO
save
(
AppDTO
app
)
{
public
void
save
(
AppDTO
app
)
{
try
{
List
<
Env
>
envs
=
portalSettings
.
getEnvs
();
return
appAPI
.
save
(
Env
.
DEV
,
app
);
for
(
Env
env
:
envs
)
{
}
catch
(
Exception
e
)
{
try
{
logger
.
error
(
"oops! save app error. app id:{}"
,
app
.
getAppId
(),
e
);
appAPI
.
save
(
env
,
app
);
throw
new
ServiceException
(
"call service error."
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"oops! save app error. app id:{}"
,
app
.
getAppId
(),
e
);
throw
new
ServiceException
(
"call service error."
);
}
}
}
}
}
...
...
apollo-portal/src/test/java/com/ctrip/apollo/portal/AppServiceTest.java
View file @
93d1ce67
...
@@ -61,23 +61,23 @@ public class AppServiceTest extends AbstractPortalTest{
...
@@ -61,23 +61,23 @@ public class AppServiceTest extends AbstractPortalTest{
assertEquals
(
"default"
,
node1
.
getClusters
().
get
(
0
).
getName
());
assertEquals
(
"default"
,
node1
.
getClusters
().
get
(
0
).
getName
());
}
}
@Test
//
@Test
public
void
testSaveApp
(){
//
public void testSaveApp(){
String
appId
=
"6666"
;
//
String appId = "6666";
String
appName
=
"hermas"
;
//
String appName = "hermas";
AppDTO
appDTO
=
new
AppDTO
();
//
AppDTO appDTO = new AppDTO();
appDTO
.
setAppId
(
appId
);
//
appDTO.setAppId(appId);
appDTO
.
setName
(
appName
);
//
appDTO.setName(appName);
appDTO
.
setDataChangeLastModifiedBy
(
"ll"
);
//
appDTO.setDataChangeLastModifiedBy("ll");
appDTO
.
setDataChangeCreatedTime
(
new
Date
());
//
appDTO.setDataChangeCreatedTime(new Date());
appDTO
.
setOwnerEmail
(
"qq@qq.com"
);
//
appDTO.setOwnerEmail("qq@qq.com");
appDTO
.
setOwnerName
(
"zz"
);
//
appDTO.setOwnerName("zz");
//
when
(
appService
.
save
(
appDTO
)).
thenReturn
(
appDTO
);
//
when(appService.save(appDTO)).thenReturn(appDTO);
//
AppDTO
createApp
=
appService
.
save
(
appDTO
);
//
AppDTO createApp = appService.save(appDTO);
//
assertEquals
(
appId
,
createApp
.
getAppId
());
//
assertEquals(appId, createApp.getAppId());
assertEquals
(
appName
,
createApp
.
getName
());
//
assertEquals(appName, createApp.getName());
}
//
}
}
}
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