http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java
index 4f0a6f0..ccc43e8 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java
@@ -23,6 +23,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ambari.server.controller.ViewPermissionResponse;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
 import org.apache.ambari.server.controller.spi.NoSuchResourceException;
 import org.apache.ambari.server.controller.spi.Predicate;
@@ -128,7 +129,8 @@ public class ViewPermissionResourceProvider extends 
AbstractResourceProvider {
 
         // do not report permissions for views that are not loaded.
         if (viewEntity.isDeployed()) {
-          resources.add(toResource(viewUsePermission, 
viewEntity.getResourceType(), viewEntity, requestedIds));
+          ViewPermissionResponse viewPermissionResponse = 
getResponse(viewUsePermission, viewEntity.getResourceType(), viewEntity);
+          resources.add(toResource(viewPermissionResponse, requestedIds));
         }
       }
     }
@@ -139,7 +141,8 @@ public class ViewPermissionResourceProvider extends 
AbstractResourceProvider {
       ViewEntity viewEntity = viewRegistry.getDefinition(resourceType);
 
       if (viewEntity != null && viewEntity.isDeployed()) {
-        resources.add(toResource(permissionEntity, resourceType, viewEntity, 
requestedIds));
+        ViewPermissionResponse viewPermissionResponse = 
getResponse(permissionEntity, resourceType, viewEntity);
+        resources.add(toResource(viewPermissionResponse, requestedIds));
       }
     }
 
@@ -174,18 +177,37 @@ public class ViewPermissionResourceProvider extends 
AbstractResourceProvider {
 
   // ----- helper methods ----------------------------------------------------
 
-  // convert the given permission entity to a resource
-  private Resource toResource(PermissionEntity entity, ResourceTypeEntity 
resourceType,
-                              ViewEntity viewEntity, Set<String> requestedIds) 
{
+  /**
+   * Returns response schema instance for REST endpoint 
/views/{viewName}/versions/{version}/permissions
+   * @param entity         permission entity {@link PermissionEntity}
+   * @param resourceType   resource type {@link ResourceTypeEntity}
+   * @param viewEntity     view entity {@link ViewEntity}
+   * @return {@link ViewPermissionResponse}
+   */
+  private ViewPermissionResponse getResponse(PermissionEntity entity, 
ResourceTypeEntity resourceType, ViewEntity viewEntity) {
 
-    Resource resource = new ResourceImpl(Resource.Type.ViewPermission);
+    String viewName = viewEntity.getCommonName();
+    String version = viewEntity.getVersion();
+    Integer permissionId = entity.getId();
+    String permissionName = entity.getPermissionName();
+    String resourceName = resourceType.getName();
+    ViewPermissionResponse.ViewPermissionInfo viewPermissionInfo  = new 
ViewPermissionResponse.ViewPermissionInfo(viewName,version,
+                                                                    
permissionId, permissionName, resourceName);
 
-    setResourceProperty(resource, VIEW_NAME_PROPERTY_ID, 
viewEntity.getCommonName(), requestedIds);
-    setResourceProperty(resource, VIEW_VERSION_PROPERTY_ID, 
viewEntity.getVersion(), requestedIds);
+    return new ViewPermissionResponse(viewPermissionInfo);
+  }
+
+  // convert the response to a resource
+  private Resource toResource(ViewPermissionResponse viewPermissionResponse, 
Set<String> requestedIds) {
+
+    Resource resource = new ResourceImpl(Resource.Type.ViewPermission);
+    ViewPermissionResponse.ViewPermissionInfo viewPermissionInfo  = 
viewPermissionResponse.getViewPermissionInfo();
+    setResourceProperty(resource, VIEW_NAME_PROPERTY_ID, 
viewPermissionInfo.getViewName(), requestedIds);
+    setResourceProperty(resource, VIEW_VERSION_PROPERTY_ID, 
viewPermissionInfo.getVersion(), requestedIds);
 
-    setResourceProperty(resource, PERMISSION_ID_PROPERTY_ID, entity.getId(), 
requestedIds);
-    setResourceProperty(resource, PERMISSION_NAME_PROPERTY_ID, 
entity.getPermissionName(), requestedIds);
-    setResourceProperty(resource, RESOURCE_NAME_PROPERTY_ID, 
resourceType.getName(), requestedIds);
+    setResourceProperty(resource, PERMISSION_ID_PROPERTY_ID, 
viewPermissionInfo.getPermissionId(), requestedIds);
+    setResourceProperty(resource, PERMISSION_NAME_PROPERTY_ID, 
viewPermissionInfo.getPermissionName(), requestedIds);
+    setResourceProperty(resource, RESOURCE_NAME_PROPERTY_ID, 
viewPermissionInfo.getResourceName(), requestedIds);
 
     return resource;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewVersionResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewVersionResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewVersionResourceProvider.java
index 4055f1a..3cf4a28 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewVersionResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewVersionResourceProvider.java
@@ -21,9 +21,11 @@ package org.apache.ambari.server.controller.internal;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ambari.server.controller.ViewVersionResponse;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
 import org.apache.ambari.server.controller.spi.NoSuchResourceException;
 import org.apache.ambari.server.controller.spi.Predicate;
@@ -35,6 +37,8 @@ import 
org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
 import org.apache.ambari.server.orm.entities.ViewEntity;
 import org.apache.ambari.server.view.ViewRegistry;
+import org.apache.ambari.server.view.configuration.ParameterConfig;
+import org.apache.ambari.view.ViewDefinition;
 
 /**
  * Resource provider for view versions.
@@ -131,24 +135,25 @@ public class ViewVersionResourceProvider extends 
AbstractResourceProvider {
         if (viewName == null || 
viewName.equals(viewDefinition.getCommonName())) {
           if (viewVersion == null || 
viewVersion.equals(viewDefinition.getVersion())) {
             Resource resource = new ResourceImpl(Resource.Type.ViewVersion);
-
-            setResourceProperty(resource, VIEW_NAME_PROPERTY_ID, 
viewDefinition.getCommonName(), requestedIds);
-            setResourceProperty(resource, VIEW_VERSION_PROPERTY_ID, 
viewDefinition.getVersion(), requestedIds);
-            setResourceProperty(resource, VIEW_BUILD_PROPERTY_ID, 
viewDefinition.getBuild(), requestedIds);
-            setResourceProperty(resource, LABEL_PROPERTY_ID, 
viewDefinition.getLabel(), requestedIds);
-            setResourceProperty(resource, DESCRIPTION_PROPERTY_ID, 
viewDefinition.getDescription(), requestedIds);
+            ViewVersionResponse viewVersionResponse = 
getResponse(viewDefinition);
+            ViewVersionResponse.ViewVersionInfo viewVersionInfo = 
viewVersionResponse.getViewVersionInfo();
+            setResourceProperty(resource, VIEW_NAME_PROPERTY_ID, 
viewVersionInfo.getViewName(), requestedIds);
+            setResourceProperty(resource, VIEW_VERSION_PROPERTY_ID, 
viewVersionInfo.getVersion(), requestedIds);
+            setResourceProperty(resource, VIEW_BUILD_PROPERTY_ID, 
viewVersionInfo.getBuildNumber(), requestedIds);
+            setResourceProperty(resource, LABEL_PROPERTY_ID, 
viewVersionInfo.getLabel(), requestedIds);
+            setResourceProperty(resource, DESCRIPTION_PROPERTY_ID, 
viewVersionInfo.getDescription(), requestedIds);
             setResourceProperty(resource, MIN_AMBARI_VERSION_PROPERTY_ID,
-                viewDefinition.getConfiguration().getMinAmbariVersion(), 
requestedIds);
+              viewVersionInfo.getMinAmbariVersion(), requestedIds);
             setResourceProperty(resource, MAX_AMBARI_VERSION_PROPERTY_ID,
-                viewDefinition.getConfiguration().getMaxAmbariVersion(), 
requestedIds);
+              viewVersionInfo.getMaxAmbariVersion(), requestedIds);
             setResourceProperty(resource, PARAMETERS_PROPERTY_ID,
-                viewDefinition.getConfiguration().getParameters(), 
requestedIds);
-            setResourceProperty(resource, ARCHIVE_PROPERTY_ID, 
viewDefinition.getArchive(), requestedIds);
-            setResourceProperty(resource, MASKER_CLASS_PROPERTY_ID, 
viewDefinition.getMask(), requestedIds);
-            setResourceProperty(resource, VIEW_STATUS_PROPERTY_ID, 
viewDefinition.getStatus().toString(), requestedIds);
-            setResourceProperty(resource, VIEW_STATUS_DETAIL_PROPERTY_ID, 
viewDefinition.getStatusDetail(), requestedIds);
-            setResourceProperty(resource, CLUSTER_CONFIG_PROPERTY_ID, 
viewDefinition.isClusterConfigurable(), requestedIds);
-            setResourceProperty(resource, SYSTEM_PROPERTY_ID, 
viewDefinition.isSystem(), requestedIds);
+              viewVersionInfo.getParameters(), requestedIds);
+            setResourceProperty(resource, ARCHIVE_PROPERTY_ID, 
viewVersionInfo.getArchive(), requestedIds);
+            setResourceProperty(resource, MASKER_CLASS_PROPERTY_ID, 
viewVersionInfo.getMaskerClass(), requestedIds);
+            setResourceProperty(resource, VIEW_STATUS_PROPERTY_ID, 
viewVersionInfo.getStatus().toString(), requestedIds);
+            setResourceProperty(resource, VIEW_STATUS_DETAIL_PROPERTY_ID, 
viewVersionInfo.getStatusDetail(), requestedIds);
+            setResourceProperty(resource, CLUSTER_CONFIG_PROPERTY_ID, 
viewVersionInfo.isClusterConfigurable(), requestedIds);
+            setResourceProperty(resource, SYSTEM_PROPERTY_ID, 
viewVersionInfo.isSystem(), requestedIds);
 
             resources.add(resource);
           }
@@ -158,6 +163,32 @@ public class ViewVersionResourceProvider extends 
AbstractResourceProvider {
     return resources;
   }
 
+  /**
+   * Returns response schema instance for view version REST endpoint: 
/views/{viewName}/versions
+   * @param viewDefinition   view entity {@link ViewEntity}
+   * @return {@link ViewVersionResponse}
+   */
+  public ViewVersionResponse getResponse(ViewEntity viewDefinition) {
+    String archive = viewDefinition.getArchive();
+    String buildNumber = viewDefinition.getBuild();
+    boolean clusterConfigurable = viewDefinition.isClusterConfigurable();
+    String description = viewDefinition.getDescription();
+    String label =  viewDefinition.getLabel();
+    String maskerClass = viewDefinition.getMask();
+    String maxAmbariVersion = 
viewDefinition.getConfiguration().getMaxAmbariVersion();
+    String minAmbariVersion = 
viewDefinition.getConfiguration().getMinAmbariVersion();
+    List<ParameterConfig> parameters = 
viewDefinition.getConfiguration().getParameters();
+    ViewDefinition.ViewStatus status = viewDefinition.getStatus();
+    String statusDetail = viewDefinition.getStatusDetail();
+    boolean system =  viewDefinition.isSystem();
+    String version =  viewDefinition.getVersion();
+    String viewName =  viewDefinition.getCommonName();
+    ViewVersionResponse.ViewVersionInfo viewVersionInfo = new 
ViewVersionResponse.ViewVersionInfo(archive, buildNumber,
+      clusterConfigurable, description, label, maskerClass, maxAmbariVersion, 
minAmbariVersion, parameters, status,
+      statusDetail, system, version, viewName);
+    return new ViewVersionResponse(viewVersionInfo);
+  }
+
   @Override
   public RequestStatus updateResources(Request request, Predicate predicate)
       throws SystemException, UnsupportedPropertyException, 
NoSuchResourceException, NoSuchParentResourceException {

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalTypeEntity.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalTypeEntity.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalTypeEntity.java
index e95223a..f11178c 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalTypeEntity.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalTypeEntity.java
@@ -50,9 +50,15 @@ public class PrincipalTypeEntity {
   public static final int GROUP_PRINCIPAL_TYPE = 2;
   public static final int ROLE_PRINCIPAL_TYPE = 8;
 
-  public static final String USER_PRINCIPAL_TYPE_NAME  = "USER";
-  public static final String GROUP_PRINCIPAL_TYPE_NAME = "GROUP";
-  public static final String ROLE_PRINCIPAL_TYPE_NAME = "ROLE";
+  public static final String USER_PRINCIPAL_TYPE_NAME  = 
PrincipalType.USER.toString();
+  public static final String GROUP_PRINCIPAL_TYPE_NAME = 
PrincipalType.GROUP.toString();
+  public static final String ROLE_PRINCIPAL_TYPE_NAME = 
PrincipalType.ROLE.toString();
+
+  public enum PrincipalType {
+    USER,
+    GROUP,
+    ROLE;
+  }
 
   /**
    * The type id.

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/User.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/User.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/User.java
index 18509d3..50f39fc 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/User.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/User.java
@@ -28,10 +28,14 @@ import 
org.apache.ambari.server.orm.entities.PrivilegeEntity;
 import org.apache.ambari.server.orm.entities.UserEntity;
 import org.springframework.security.core.GrantedAuthority;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
 
 /**
  * Describes user of web-services
  */
+@ApiModel
 public class User {
   final int userId;
   final String userName;
@@ -61,34 +65,42 @@ public class User {
     }
   }
 
+  @ApiModelProperty(hidden = true)
   public int getUserId() {
     return userId;
   }
 
+  @ApiModelProperty(name = "Users/user_name",required = true, access = 
"public", notes = "username containing only lowercase letters")
   public String getUserName() {
     return userName;
   }
 
+  @ApiModelProperty(name = "Users/ldap_user")
   public boolean isLdapUser() {
     return ldapUser;
   }
 
+  @ApiModelProperty(name = "Users/user_type")
   public UserType getUserType() {
     return userType;
   }
 
+  @ApiModelProperty(hidden = true)
   public Date getCreateTime() {
     return createTime;
   }
 
+  @ApiModelProperty(name = "Users/active")
   public boolean isActive() {
     return active;
   }
 
+  @ApiModelProperty(name = "Users/admin")
   public boolean isAdmin() {
     return admin;
   }
 
+  @ApiModelProperty(name = "Users/groups")
   public Collection<String> getGroups() {
     return groups;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java 
b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
index 81c4734..afe556a 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
@@ -50,8 +50,8 @@ import 
org.apache.ambari.server.api.resources.ResourceInstanceFactoryImpl;
 import org.apache.ambari.server.api.resources.SubResourceDefinition;
 import 
org.apache.ambari.server.api.resources.ViewExternalSubResourceDefinition;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.api.services.ViewExternalSubResourceService;
-import org.apache.ambari.server.api.services.ViewSubResourceService;
+import 
org.apache.ambari.server.api.services.views.ViewExternalSubResourceService;
+import org.apache.ambari.server.api.services.views.ViewSubResourceService;
 import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.AmbariServer;

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutServiceTest.java
deleted file mode 100644
index adae956..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutServiceTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import static org.junit.Assert.assertEquals;
-
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.orm.entities.WidgetLayoutEntity;
-import org.junit.Test;
-
-/**
- * Unit tests for ActiveWidgetLayoutService.
- */
-public class ActiveWidgetLayoutServiceTest {
-
-  @Test
-  public void testCreateResourceWithUppercaseUsername() {
-    // GIVEN
-    ActiveWidgetLayoutService activeWidgetLayoutService = new 
TestActiveWidgetLayoutService("MyUser");
-    // WHEN
-    Response response = activeWidgetLayoutService.getServices(null, null, 
null);
-    // THEN
-    assertEquals("myuser", ((WidgetLayoutEntity) 
response.getEntity()).getUserName());
-  }
-
-  private class TestActiveWidgetLayoutService extends 
ActiveWidgetLayoutService {
-    public TestActiveWidgetLayoutService(String username) {
-      super(username);
-    }
-
-    @Override
-    protected Response handleRequest(HttpHeaders headers, String body, UriInfo 
uriInfo,
-                                     Request.Type requestType, final 
ResourceInstance resource) {
-      return new Response() {
-        @Override
-        public Object getEntity() {
-          WidgetLayoutEntity entity = new WidgetLayoutEntity();
-          
entity.setUserName(resource.getKeyValueMap().get(Resource.Type.User));
-          return entity;
-        }
-
-        @Override
-        public int getStatus() {
-          return 0;
-        }
-
-        @Override
-        public MultivaluedMap<String, Object> getMetadata() {
-          return null;
-        }
-      };
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupPrivilegeServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupPrivilegeServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupPrivilegeServiceTest.java
deleted file mode 100644
index 995dfaf..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupPrivilegeServiceTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
-import org.apache.ambari.server.api.services.serializers.ResultSerializer;
-import org.apache.ambari.server.controller.spi.Resource.Type;
-import org.easymock.EasyMock;
-import org.junit.Test;
-
-import junit.framework.Assert;
-
-/**
- * Unit tests for GroupService.
- */
-public class GroupPrivilegeServiceTest extends BaseServiceTest {
-
-  public List<ServiceTestInvocation> getTestInvocations() throws Exception {
-    List<ServiceTestInvocation> listInvocations = new 
ArrayList<ServiceTestInvocation>();
-
-    GroupPrivilegeService groupPrivilegeService;
-    Method m;
-    Object[] args;
-
-    //getPrivilege
-    groupPrivilegeService = new TestGroupPrivilegeService();
-    m = groupPrivilegeService.getClass().getMethod("getPrivilege", 
HttpHeaders.class, UriInfo.class, String.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo(), "id"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
groupPrivilegeService, m, args, null));
-
-    //getPrivileges
-    groupPrivilegeService = new TestGroupPrivilegeService();
-    m = groupPrivilegeService.getClass().getMethod("getPrivileges", 
HttpHeaders.class, UriInfo.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
groupPrivilegeService, m, args, null));
-
-    return listInvocations;
-  }
-
-  @Test
-  public void testDisabledMethods() {
-    final HttpHeaders headers = EasyMock.createNiceMock(HttpHeaders.class);
-    final UriInfo uriInfo = EasyMock.createNiceMock(UriInfo.class);
-    final GroupPrivilegeService service = new TestGroupPrivilegeService();
-
-    final List<Response> disabledMethods = new ArrayList<Response>();
-    disabledMethods.add(service.createPrivilege("test", headers, uriInfo));
-    disabledMethods.add(service.updatePrivilege("test", headers, uriInfo, 
"test"));
-    disabledMethods.add(service.updatePrivileges("test", headers, uriInfo));
-    disabledMethods.add(service.deletePrivilege(headers, uriInfo, "test"));
-    disabledMethods.add(service.deletePrivileges("test", headers, uriInfo));
-
-    for (Response response: disabledMethods) {
-      Assert.assertEquals(HttpServletResponse.SC_NOT_IMPLEMENTED, 
response.getStatus());
-    }
-  }
-
-  private class TestGroupPrivilegeService extends GroupPrivilegeService {
-
-    public TestGroupPrivilegeService() {
-      super("group");
-    }
-
-    @Override
-    protected ResourceInstance createResource(Type type, Map<Type, String> 
mapIds) {
-      return getTestResource();
-    }
-
-    @Override
-    RequestFactory getRequestFactory() {
-      return getTestRequestFactory();
-    }
-
-    @Override
-    protected RequestBodyParser getBodyParser() {
-      return getTestBodyParser();
-    }
-
-    @Override
-    protected ResultSerializer getResultSerializer() {
-      return getTestResultSerializer();
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
index b171ceb..7a4e87b 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
@@ -27,6 +27,7 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.UriInfo;
 
 import org.apache.ambari.server.api.resources.ResourceInstance;
+import org.apache.ambari.server.api.services.groups.GroupService;
 import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
 import org.apache.ambari.server.api.services.serializers.ResultSerializer;
 import org.apache.ambari.server.controller.spi.Resource.Type;

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/MemberServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/MemberServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/MemberServiceTest.java
deleted file mode 100644
index 1e0137e..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/MemberServiceTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
-import org.apache.ambari.server.api.services.serializers.ResultSerializer;
-import org.apache.ambari.server.controller.spi.Resource.Type;
-
-/**
- * Unit tests for GroupService.
- */
-public class MemberServiceTest extends BaseServiceTest {
-
-  public List<ServiceTestInvocation> getTestInvocations() throws Exception {
-    List<ServiceTestInvocation> listInvocations = new 
ArrayList<ServiceTestInvocation>();
-
-    MemberService memberService;
-    Method m;
-    Object[] args;
-
-    //createMember
-    memberService = new TestMemberService("engineering");
-    m = memberService.getClass().getMethod("createMember", String.class, 
HttpHeaders.class, UriInfo.class);
-    args = new Object[] {"body", getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.POST, 
memberService, m, args, "body"));
-
-    //createMember
-    memberService = new TestMemberService("engineering");
-    m = memberService.getClass().getMethod("createMember", String.class, 
HttpHeaders.class, UriInfo.class, String.class);
-    args = new Object[] {"body", getHttpHeaders(), getUriInfo(), "joe"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.POST, 
memberService, m, args, "body"));
-
-    //deleteMember
-    memberService = new TestMemberService("engineering");
-    m = memberService.getClass().getMethod("deleteMember", HttpHeaders.class, 
UriInfo.class, String.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo(), "joe"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.DELETE, 
memberService, m, args, null));
-
-    //getMembers
-    memberService = new TestMemberService("engineering");
-    m = memberService.getClass().getMethod("getMembers", HttpHeaders.class, 
UriInfo.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
memberService, m, args, null));
-
-    //getMember
-    memberService = new TestMemberService("engineering");
-    m = memberService.getClass().getMethod("getMember", HttpHeaders.class, 
UriInfo.class, String.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo(), "joe"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
memberService, m, args, null));
-
-    //updateMembers
-    memberService = new TestMemberService("engineering");
-    m = memberService.getClass().getMethod("updateMembers", String.class, 
HttpHeaders.class, UriInfo.class);
-    args = new Object[] {"body", getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.PUT, 
memberService, m, args, "body"));
-
-    return listInvocations;
-  }
-
-  private class TestMemberService extends MemberService {
-    public TestMemberService(String groupName) {
-      super(groupName);
-    }
-
-    @Override
-    protected ResourceInstance createResource(Type type, Map<Type, String> 
mapIds) {
-      return getTestResource();
-    }
-
-    @Override
-    RequestFactory getRequestFactory() {
-      return getTestRequestFactory();
-    }
-
-    @Override
-    protected RequestBodyParser getBodyParser() {
-      return getTestBodyParser();
-    }
-
-    @Override
-    protected ResultSerializer getResultSerializer() {
-      return getTestResultSerializer();
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserAuthorizationServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserAuthorizationServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserAuthorizationServiceTest.java
deleted file mode 100644
index 8a2f799..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserAuthorizationServiceTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
-import org.apache.ambari.server.api.services.serializers.ResultSerializer;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.junit.Test;
-
-
-/**
- * Unit tests for UserAuthorizationService.
- */
-public class UserAuthorizationServiceTest extends BaseServiceTest {
-
-  public List<ServiceTestInvocation> getTestInvocations() throws Exception {
-    List<ServiceTestInvocation> listInvocations = new 
ArrayList<ServiceTestInvocation>();
-
-    //getAuthorization
-    UserAuthorizationService service = new TestUserAuthorizationService("id");
-    Method m = service.getClass().getMethod("getAuthorization", 
HttpHeaders.class, UriInfo.class, String.class);
-    Object[] args = new Object[] {getHttpHeaders(), getUriInfo(), "id"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, service, 
m, args, null));
-
-    //getAuthorizations
-    service = new TestUserAuthorizationService(null);
-    m = service.getClass().getMethod("getAuthorizations", HttpHeaders.class, 
UriInfo.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, service, 
m, args, null));
-
-    return listInvocations;
-  }
-
-  @Test
-  public void testCreateAuthorizationResourceWithUppercaseUsername() {
-    // GIVEN
-    UserAuthorizationService userAuthorizationService= new 
UserAuthorizationService("Jdoe");
-    // WHEN
-    ResourceInstance result = 
userAuthorizationService.createAuthorizationResource("id");
-    // THEN
-    assertEquals("jdoe", result.getKeyValueMap().get(Resource.Type.User));
-  }
-
-
-  private class TestUserAuthorizationService extends UserAuthorizationService {
-    private String id;
-
-    private TestUserAuthorizationService(String id) {
-      super("jdoe");
-      this.id = id;
-    }
-
-    @Override
-    protected ResourceInstance createAuthorizationResource(String id) {
-      assertEquals(this.id, id);
-      return getTestResource();
-    }
-
-    @Override
-    RequestFactory getRequestFactory() {
-      return getTestRequestFactory();
-    }
-
-    @Override
-    protected RequestBodyParser getBodyParser() {
-      return getTestBodyParser();
-    }
-
-    @Override
-    protected ResultSerializer getResultSerializer() {
-      return getTestResultSerializer();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserPrivilegeServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserPrivilegeServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserPrivilegeServiceTest.java
deleted file mode 100644
index 7b0e06d..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/UserPrivilegeServiceTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
-import org.apache.ambari.server.api.services.serializers.ResultSerializer;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.Resource.Type;
-import org.easymock.EasyMock;
-import org.junit.Test;
-
-import junit.framework.Assert;
-
-/**
- * Unit tests for GroupService.
- */
-public class UserPrivilegeServiceTest extends BaseServiceTest {
-
-  public List<ServiceTestInvocation> getTestInvocations() throws Exception {
-    List<ServiceTestInvocation> listInvocations = new 
ArrayList<ServiceTestInvocation>();
-
-    UserPrivilegeService userPrivilegeService;
-    Method m;
-    Object[] args;
-
-    //getPrivilege
-    userPrivilegeService = new TestUserPrivilegeService();
-    m = userPrivilegeService.getClass().getMethod("getPrivilege", 
HttpHeaders.class, UriInfo.class, String.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo(), "id"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
userPrivilegeService, m, args, null));
-
-    //getPrivileges
-    userPrivilegeService = new TestUserPrivilegeService();
-    m = userPrivilegeService.getClass().getMethod("getPrivileges", 
HttpHeaders.class, UriInfo.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
userPrivilegeService, m, args, null));
-
-    return listInvocations;
-  }
-
-  @Test
-  public void testDisabledMethods() {
-    final HttpHeaders headers = EasyMock.createNiceMock(HttpHeaders.class);
-    final UriInfo uriInfo = EasyMock.createNiceMock(UriInfo.class);
-    final UserPrivilegeService service = new TestUserPrivilegeService();
-
-    final List<Response> disabledMethods = new ArrayList<Response>();
-    disabledMethods.add(service.createPrivilege("test", headers, uriInfo));
-    disabledMethods.add(service.updatePrivilege("test", headers, uriInfo, 
"test"));
-    disabledMethods.add(service.updatePrivileges("test", headers, uriInfo));
-    disabledMethods.add(service.deletePrivilege(headers, uriInfo, "test"));
-    disabledMethods.add(service.deletePrivileges("test", headers, uriInfo));
-
-    for (Response response: disabledMethods) {
-      Assert.assertEquals(HttpServletResponse.SC_NOT_IMPLEMENTED, 
response.getStatus());
-    }
-  }
-
-  @Test
-  public void testCreatePrivilegeResourcesWithUppercaseUsername() {
-    // GIVEN
-    UserPrivilegeService userPrivilegeService = new 
UserPrivilegeService("User");
-    // WHEN
-    ResourceInstance result = 
userPrivilegeService.createPrivilegeResource("test");
-    // THEN
-    assertEquals( "user", result.getKeyValueMap().get(Resource.Type.User));
-  }
-
-  private class TestUserPrivilegeService extends UserPrivilegeService {
-
-    public TestUserPrivilegeService() {
-      super("user");
-    }
-
-    @Override
-    protected ResourceInstance createResource(Type type, Map<Type, String> 
mapIds) {
-      return getTestResource();
-    }
-
-    @Override
-    RequestFactory getRequestFactory() {
-      return getTestRequestFactory();
-    }
-
-    @Override
-    protected RequestBodyParser getBodyParser() {
-      return getTestBodyParser();
-    }
-
-    @Override
-    protected ResultSerializer getResultSerializer() {
-      return getTestResultSerializer();
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewDataMigrationServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewDataMigrationServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewDataMigrationServiceTest.java
deleted file mode 100644
index e1eb0de..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewDataMigrationServiceTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
-import javax.ws.rs.WebApplicationException;
-
-import org.apache.ambari.server.orm.entities.ViewInstanceEntity;
-import org.apache.ambari.server.view.ViewDataMigrationUtility;
-import org.apache.ambari.server.view.ViewRegistry;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-/**
- * ViewDataMigrationService tests.
- */
-public class ViewDataMigrationServiceTest {
-
-  private static String viewName = "MY_VIEW";
-  private static String instanceName = "INSTANCE1";
-  private static String version1 = "1.0.0";
-  private static String version2 = "2.0.0";
-
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
-  @Test
-  public void testServiceMigrateCallAdmin() throws Exception {
-    ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class);
-    expect(viewRegistry.checkAdmin()).andReturn(true).anyTimes();
-    replay(viewRegistry);
-    ViewRegistry.initInstance(viewRegistry);
-
-    ViewDataMigrationService service = new ViewDataMigrationService(viewName, 
version1, instanceName);
-
-    ViewDataMigrationUtility migrationUtility = 
createStrictMock(ViewDataMigrationUtility.class);
-    migrationUtility.migrateData(anyObject(ViewInstanceEntity.class), 
anyObject(ViewInstanceEntity.class), eq(false));
-    replay(migrationUtility);
-    service.setViewDataMigrationUtility(migrationUtility);
-
-    service.migrateData(version2, instanceName);
-
-    verify(migrationUtility);
-  }
-
-  @Test
-  public void testServiceMigrateCallNotAdmin() throws Exception {
-    ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class);
-    expect(viewRegistry.checkAdmin()).andReturn(false).anyTimes();
-    replay(viewRegistry);
-    ViewRegistry.initInstance(viewRegistry);
-
-    ViewDataMigrationService service = new ViewDataMigrationService(viewName, 
version1, instanceName);
-
-    thrown.expect(WebApplicationException.class);
-    service.migrateData(version2, instanceName);
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewExternalSubResourceServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewExternalSubResourceServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewExternalSubResourceServiceTest.java
deleted file mode 100644
index 155f91e..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewExternalSubResourceServiceTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.orm.entities.ViewInstanceEntity;
-import org.apache.ambari.server.orm.entities.ViewInstanceEntityTest;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * ViewExternalSubResourceService tests.
- */
-public class ViewExternalSubResourceServiceTest {
-  @Test
-  public void testAddResourceService() throws Exception {
-    Resource.Type type = new Resource.Type("resource");
-
-    ViewInstanceEntity definition = 
ViewInstanceEntityTest.getViewInstanceEntity();
-    ViewExternalSubResourceService service = new 
ViewExternalSubResourceService(type, definition);
-
-    Object fooService = new Object();
-
-    service.addResourceService("foo", fooService);
-
-    Assert.assertEquals(fooService, service.getResource("foo"));
-
-    try {
-      service.getResource("bar");
-      Assert.fail("Expected IllegalArgumentException for unknown service 
name.");
-    } catch (IllegalArgumentException e) {
-      // expected
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewPermissionServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewPermissionServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewPermissionServiceTest.java
deleted file mode 100644
index 7f58fb2..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewPermissionServiceTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * 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
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
-import org.apache.ambari.server.api.services.serializers.ResultSerializer;
-
-/**
- * Unit tests for ViewPermissionService.
- */
-public class ViewPermissionServiceTest extends BaseServiceTest {
-
-
-  public List<ServiceTestInvocation> getTestInvocations() throws Exception {
-    List<ServiceTestInvocation> listInvocations = new 
ArrayList<ServiceTestInvocation>();
-
-    //getPermission
-    ViewPermissionService permissionService = new 
TestViewPermissionService("MY_VIEW", "1.0", "permissionName");
-    Method m = permissionService.getClass().getMethod("getPermission", 
HttpHeaders.class, UriInfo.class, String.class);
-    Object[] args = new Object[] {getHttpHeaders(), getUriInfo(), 
"permissionName"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
permissionService, m, args, null));
-
-    //getPermissions
-    permissionService = new TestViewPermissionService("MY_VIEW", "1.0",null);
-    m = permissionService.getClass().getMethod("getPermissions", 
HttpHeaders.class, UriInfo.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo()};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.GET, 
permissionService, m, args, null));
-
-    //createPermission
-    permissionService = new TestViewPermissionService("MY_VIEW", 
"1.0","permissionName");
-    m = permissionService.getClass().getMethod("createPermission", 
String.class, HttpHeaders.class, UriInfo.class, String.class);
-    args = new Object[] {"body", getHttpHeaders(), getUriInfo(), 
"permissionName"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.POST, 
permissionService, m, args, "body"));
-
-    //deletePermission
-    permissionService = new TestViewPermissionService("MY_VIEW", 
"1.0","permissionName");
-    m = permissionService.getClass().getMethod("deletePermission", 
HttpHeaders.class, UriInfo.class, String.class);
-    args = new Object[] {getHttpHeaders(), getUriInfo(), "permissionName"};
-    listInvocations.add(new ServiceTestInvocation(Request.Type.DELETE, 
permissionService, m, args, null));
-
-    return listInvocations;
-  }
-
-
-  private class TestViewPermissionService extends ViewPermissionService {
-    private String permissionId;
-
-    private TestViewPermissionService(String viewName, String version, String 
permissionId) {
-
-      super(viewName, version);
-      this.permissionId = permissionId;
-    }
-
-    @Override
-    protected ResourceInstance createPermissionResource(String viewName, 
String viewVersion, String permissionId) {
-      assertEquals(this.permissionId, permissionId);
-      return getTestResource();
-    }
-
-    @Override
-    RequestFactory getRequestFactory() {
-      return getTestRequestFactory();
-    }
-
-    @Override
-    protected RequestBodyParser getBodyParser() {
-      return getTestBodyParser();
-    }
-
-    @Override
-    protected ResultSerializer getResultSerializer() {
-      return getTestResultSerializer();
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewSubResourceServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewSubResourceServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewSubResourceServiceTest.java
index 9499466..fa179d6 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewSubResourceServiceTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/ViewSubResourceServiceTest.java
@@ -43,6 +43,7 @@ import javax.ws.rs.core.UriInfo;
 import org.apache.ambari.server.api.resources.ResourceInstance;
 import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
 import org.apache.ambari.server.api.services.serializers.ResultSerializer;
+import org.apache.ambari.server.api.services.views.ViewSubResourceService;
 import org.apache.ambari.server.api.util.TreeNode;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.orm.entities.ViewInstanceEntity;

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewDataMigrationServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewDataMigrationServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewDataMigrationServiceTest.java
new file mode 100644
index 0000000..35338a1
--- /dev/null
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewDataMigrationServiceTest.java
@@ -0,0 +1,81 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * 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
+ *
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.api.services.views;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.createStrictMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+import javax.ws.rs.WebApplicationException;
+
+import org.apache.ambari.server.orm.entities.ViewInstanceEntity;
+import org.apache.ambari.server.view.ViewDataMigrationUtility;
+import org.apache.ambari.server.view.ViewRegistry;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+/**
+ * ViewDataMigrationService tests.
+ */
+public class ViewDataMigrationServiceTest {
+
+  private static String viewName = "MY_VIEW";
+  private static String instanceName = "INSTANCE1";
+  private static String version1 = "1.0.0";
+  private static String version2 = "2.0.0";
+
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  @Test
+  public void testServiceMigrateCallAdmin() throws Exception {
+    ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class);
+    expect(viewRegistry.checkAdmin()).andReturn(true).anyTimes();
+    replay(viewRegistry);
+    ViewRegistry.initInstance(viewRegistry);
+
+    ViewDataMigrationService service = new ViewDataMigrationService();
+
+    ViewDataMigrationUtility migrationUtility = 
createStrictMock(ViewDataMigrationUtility.class);
+    migrationUtility.migrateData(anyObject(ViewInstanceEntity.class), 
anyObject(ViewInstanceEntity.class), eq(false));
+    replay(migrationUtility);
+    service.setViewDataMigrationUtility(migrationUtility);
+
+    service.migrateData(viewName,version1,instanceName,version2, instanceName);
+
+    verify(migrationUtility);
+  }
+
+  @Test
+  public void testServiceMigrateCallNotAdmin() throws Exception {
+    ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class);
+    expect(viewRegistry.checkAdmin()).andReturn(false).anyTimes();
+    replay(viewRegistry);
+    ViewRegistry.initInstance(viewRegistry);
+
+    ViewDataMigrationService service = new ViewDataMigrationService();
+
+    thrown.expect(WebApplicationException.class);
+    service.migrateData(viewName,version1,instanceName,version2, instanceName);
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewExternalSubResourceServiceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewExternalSubResourceServiceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewExternalSubResourceServiceTest.java
new file mode 100644
index 0000000..35756a1
--- /dev/null
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/services/views/ViewExternalSubResourceServiceTest.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * 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
+ *
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.api.services.views;
+
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.orm.entities.ViewInstanceEntity;
+import org.apache.ambari.server.orm.entities.ViewInstanceEntityTest;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * ViewExternalSubResourceService tests.
+ */
+public class ViewExternalSubResourceServiceTest {
+  @Test
+  public void testAddResourceService() throws Exception {
+    Resource.Type type = new Resource.Type("resource");
+
+    ViewInstanceEntity definition = 
ViewInstanceEntityTest.getViewInstanceEntity();
+    ViewExternalSubResourceService service = new 
ViewExternalSubResourceService(type, definition);
+
+    Object fooService = new Object();
+
+    service.addResourceService("foo", fooService);
+
+    Assert.assertEquals(fooService, service.getResource("foo"));
+
+    try {
+      service.getResource("bar");
+      Assert.fail("Expected IllegalArgumentException for unknown service 
name.");
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
index ebe92e4..7a3fbef 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
@@ -27,6 +27,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.ambari.server.controller.GroupPrivilegeResponse;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
@@ -131,7 +132,8 @@ public class GroupPrivilegeResourceProviderTest extends 
AbstractPrivilegeResourc
 
     GroupPrivilegeResourceProvider.init(clusterDAO, groupDAO, viewInstanceDAO, 
users);
     GroupPrivilegeResourceProvider provider = new 
GroupPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "group1", 
provider.getPropertyIds());
+    GroupPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"group1");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals(ResourceType.AMBARI.name(), 
resource.getPropertyValue(GroupPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
 
@@ -182,7 +184,8 @@ public class GroupPrivilegeResourceProviderTest extends 
AbstractPrivilegeResourc
 
     GroupPrivilegeResourceProvider.init(clusterDAO, groupDAO, viewInstanceDAO, 
users);
     GroupPrivilegeResourceProvider provider = new 
GroupPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "group1", 
provider.getPropertyIds());
+    GroupPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"group1");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals("TestCluster", 
resource.getPropertyValue(ClusterPrivilegeResourceProvider.PRIVILEGE_CLUSTER_NAME_PROPERTY_ID));
     Assert.assertEquals(ResourceType.CLUSTER.name(), 
resource.getPropertyValue(GroupPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
@@ -240,7 +243,8 @@ public class GroupPrivilegeResourceProviderTest extends 
AbstractPrivilegeResourc
 
     GroupPrivilegeResourceProvider.init(clusterDAO, groupDAO, viewInstanceDAO, 
users);
     GroupPrivilegeResourceProvider provider = new 
GroupPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "group1", 
provider.getPropertyIds());
+    GroupPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"group1");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals("Test View", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
     Assert.assertEquals("TestView", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
@@ -299,7 +303,8 @@ public class GroupPrivilegeResourceProviderTest extends 
AbstractPrivilegeResourc
 
     GroupPrivilegeResourceProvider.init(clusterDAO, groupDAO, viewInstanceDAO, 
users);
     GroupPrivilegeResourceProvider provider = new 
GroupPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "group1", 
provider.getPropertyIds());
+    GroupPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"group1");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals("Test View", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
     Assert.assertEquals("TestView", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
index 5092db5..793e096 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
@@ -28,6 +28,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.ambari.server.controller.UserPrivilegeResponse;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
@@ -142,7 +143,8 @@ public class UserPrivilegeResourceProviderTest extends 
AbstractPrivilegeResource
 
     UserPrivilegeResourceProvider.init(userDAO, clusterDAO, groupDAO, 
viewInstanceDAO, users);
     UserPrivilegeResourceProvider provider = new 
UserPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "jdoe", 
provider.getPropertyIds());
+    UserPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"jdoe");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals(ResourceType.AMBARI.name(), 
resource.getPropertyValue(UserPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
 
@@ -195,7 +197,8 @@ public class UserPrivilegeResourceProviderTest extends 
AbstractPrivilegeResource
 
     UserPrivilegeResourceProvider.init(userDAO, clusterDAO, groupDAO, 
viewInstanceDAO, users);
     UserPrivilegeResourceProvider provider = new 
UserPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "jdoe", 
provider.getPropertyIds());
+    UserPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"jdoe");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals("TestCluster", 
resource.getPropertyValue(ClusterPrivilegeResourceProvider.PRIVILEGE_CLUSTER_NAME_PROPERTY_ID));
     Assert.assertEquals(ResourceType.CLUSTER.name(), 
resource.getPropertyValue(UserPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
@@ -254,7 +257,8 @@ public class UserPrivilegeResourceProviderTest extends 
AbstractPrivilegeResource
 
     UserPrivilegeResourceProvider.init(userDAO, clusterDAO, groupDAO, 
viewInstanceDAO, users);
     UserPrivilegeResourceProvider provider = new 
UserPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "jdoe", 
provider.getPropertyIds());
+    UserPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"jdoe");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals("Test View", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
     Assert.assertEquals("TestView", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
@@ -315,7 +319,8 @@ public class UserPrivilegeResourceProviderTest extends 
AbstractPrivilegeResource
 
     UserPrivilegeResourceProvider.init(userDAO, clusterDAO, groupDAO, 
viewInstanceDAO, users);
     UserPrivilegeResourceProvider provider = new 
UserPrivilegeResourceProvider();
-    Resource resource = provider.toResource(privilegeEntity, "jdoe", 
provider.getPropertyIds());
+    UserPrivilegeResponse response = provider.getResponse(privilegeEntity, 
"jdoe");
+    Resource resource = provider.toResource(response, 
provider.getPropertyIds());
 
     Assert.assertEquals("Test View", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
     Assert.assertEquals("TestView", 
resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));

Reply via email to