Adding in tenant isolation into the mock rest endpoint

Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a76a4599
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a76a4599
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a76a4599

Branch: refs/heads/master
Commit: a76a459945a42bc83f6d2255c2f88821f34613d5
Parents: 24c84ad
Author: Shiro <[email protected]>
Authored: Wed Sep 10 07:10:39 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Mon Sep 15 09:26:35 2014 +0530

----------------------------------------------------------------------
 .../org.apache.stratos.rest.endpoint/as.json    |  26 --
 .../endpoint/handlers/StratosMockHandler.java   | 146 +++++++
 .../stratos/rest/endpoint/mock/MockContext.java | 402 +++++++++++++------
 .../rest/endpoint/mock/StratosTestAdmin.java    |  28 +-
 .../webapp/stratos-test/WEB-INF/cxf-servlet.xml |   2 +
 5 files changed, 456 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a76a4599/components/org.apache.stratos.rest.endpoint/as.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/as.json 
b/components/org.apache.stratos.rest.endpoint/as.json
deleted file mode 100644
index 5aaae67..0000000
--- a/components/org.apache.stratos.rest.endpoint/as.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "id": "simpleAutoscalePolicy2",
-    "loadThresholds": {
-      "requestsInFlight": {
-        "average": "20",
-        "gradient": "0",
-        "secondDerivative": "0",
-        "scaleDownMarginOfGradient": "1.0",
-        "scaleDownMarginOfSecondDerivative": "0.2"
-      },
-      "memoryConsumption": {
-        "average": "1000",
-        "gradient": "0",
-        "secondDerivative": "0",
-        "scaleDownMarginOfGradient": "1.0",
-        "scaleDownMarginOfSecondDerivative": "0.2"
-      },
-      "loadAverage": {
-        "average": "1000",
-        "gradient": "0",
-        "secondDerivative": "0",
-        "scaleDownMarginOfGradient": "1.0",
-        "scaleDownMarginOfSecondDerivative": "0.2"
-      }
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/a76a4599/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
new file mode 100644
index 0000000..6c04de1
--- /dev/null
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
@@ -0,0 +1,146 @@
+/*
+ * 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.stratos.rest.endpoint.handlers;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.jaxrs.ext.RequestHandler;
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.security.SecurityContext;
+import org.apache.stratos.rest.endpoint.ServiceHolder;
+import org.apache.stratos.rest.endpoint.Utils;
+import org.apache.stratos.rest.endpoint.context.AuthenticationContext;
+import org.apache.stratos.rest.endpoint.exception.RestAPIException;
+import org.apache.stratos.rest.endpoint.security.StratosSecurityContext;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.core.common.AuthenticationException;
+import org.wso2.carbon.core.util.AnonymousSessionUtil;
+import org.wso2.carbon.registry.core.service.RegistryService;
+import org.wso2.carbon.user.api.UserRealm;
+import org.wso2.carbon.user.core.service.RealmService;
+import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.List;
+
+/**
+ * Here we are doing the request authentication within a {@link 
RequestHandler}. The request handlers
+ * are get invoked just before the actual method invocation. This 
authentication handler make use
+ * of HTTP basic auth headers as the authentication mechanism.
+ */
+public class StratosMockHandler extends 
AbstractAuthenticationAuthorizationHandler {
+    private static Log log = 
LogFactory.getLog(StratosAuthenticationHandler.class);
+    private static String SUPPORTED_AUTHENTICATION_TYPE = "Basic";
+
+    public boolean canHandle(String authHeaderPrefix){
+        return SUPPORTED_AUTHENTICATION_TYPE.equals(authHeaderPrefix);
+    }
+
+    /**
+     * Authenticate the user against the user store. Once authenticate, 
populate the {@link org.wso2.carbon.context.CarbonContext}
+     * to be used by the downstream code.
+     * @param message
+     * @param classResourceInfo
+     * @return
+     */
+    public Response handle(Message message, ClassResourceInfo 
classResourceInfo) {
+       // If Mutual SSL is enabled
+        HttpServletRequest request = (HttpServletRequest) 
message.get("HTTP.REQUEST");
+        Object certObject = 
request.getAttribute("javax.servlet.request.X509Certificate");
+        
+        AuthorizationPolicy policy = (AuthorizationPolicy) 
message.get(AuthorizationPolicy.class);
+        String username = policy.getUserName().trim();
+        String password = policy.getPassword().trim();
+
+        //sanity check
+        if ((username == null) || username.equals("")) {
+            log.error("username is seen as null/empty values.");
+            return Response.status(Response.Status.UNAUTHORIZED)
+                           .header("WWW-Authenticate", 
"Basic").type(MediaType.APPLICATION_JSON)
+                           .entity(Utils.buildMessage("Username cannot be 
null")).build();
+        } else if (certObject == null && ((password == null) || 
password.equals(""))) {
+            log.error("password is seen as null/empty values.");
+            return Response.status(Response.Status.UNAUTHORIZED)
+                           .header("WWW-Authenticate", 
"Basic").type(MediaType.APPLICATION_JSON)
+                           .entity(Utils.buildMessage("password cannot be 
null")).build();
+        }
+        
+        try {
+               // setting the correct tenant info for downstream code..
+            PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
+            carbonContext.setUsername(username);
+            
+            return null;
+            /*RealmService realmService = ServiceHolder.getRealmService();
+            RegistryService registryService = 
ServiceHolder.getRegistryService();
+            String tenantDomain = MultitenantUtils.getTenantDomain(username);
+            int tenantId = 
realmService.getTenantManager().getTenantId(tenantDomain);
+            
+            UserRealm userRealm = null;
+            if (certObject == null) {
+                userRealm = 
AnonymousSessionUtil.getRealmByTenantDomain(registryService, realmService, 
tenantDomain);
+                if (userRealm == null) {
+                    log .error("Invalid domain or unactivated tenant login");
+                    // is this the correct HTTP code for this scenario ? (401)
+                    return 
Response.status(Response.Status.UNAUTHORIZED).header("WWW-Authenticate", 
"Basic").
+                            
type(MediaType.APPLICATION_JSON).entity(Utils.buildMessage("Tenant not 
found")).build();
+                }
+            }
+            username = MultitenantUtils.getTenantAwareUsername(username);
+            if (certObject != null || 
userRealm.getUserStoreManager().authenticate(username, password)) {  // if 
authenticated
+
+                // setting the correct tenant info for downstream code..
+                PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
+                carbonContext.setTenantDomain(tenantDomain);
+                carbonContext.setTenantId(tenantId);
+                carbonContext.setUsername(username);
+                //populate the secuirtyContext of authenticated user
+                SecurityContext securityContext = new 
StratosSecurityContext(username);
+                message.put(SecurityContext.class, securityContext);
+
+                // set the authenticated flag and let the request to continue
+                AuthenticationContext.setAuthenticated(true);
+                if (log.isDebugEnabled()) {
+                    log.debug("authenticated using the " + 
CookieBasedAuthenticationHandler.class.getName() + "for username  :" +
+                            username + "tenantDomain : " + tenantDomain + " 
tenantId : " + tenantId);
+                }
+                return null;
+            } else {
+                log.warn("unable to authenticate the request");
+                // authentication failed, request the authetication, add the 
realm name if needed to the value of WWW-Authenticate
+                return 
Response.status(Response.Status.UNAUTHORIZED).header("WWW-Authenticate", 
"Basic").
+                        
type(MediaType.APPLICATION_JSON).entity(Utils.buildMessage("Authentication 
failed. Please " +
+                        "check your username/password")).build();
+            }*/
+        } catch (Exception exception) {
+            log.error("Authentication failed",exception);
+            // server error in the eyes of the client. Hence 5xx HTTP code.
+            return 
Response.status(Response.Status.INTERNAL_SERVER_ERROR).type(MediaType.APPLICATION_JSON).
+                    entity(Utils.buildMessage("Unexpected error. Please 
contact the system admin")).build();
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/a76a4599/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
index 7046f70..84f8931 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
@@ -35,27 +35,29 @@ import 
org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDom
 import org.apache.stratos.rest.endpoint.bean.topology.Cluster;
 import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
-
+import org.wso2.carbon.context.CarbonContext;
 import java.util.*;
 
 import javax.ws.rs.core.Response.Status;
 
 public class MockContext {
     private static MockContext mockContext = new MockContext(); // singleton
+
     private Map<String, List<SubscriptionDomain>> subscriptionAliasToDomainMap 
= new HashMap<String, List<SubscriptionDomain>>();
     private Map<Integer, List<String>> tenantIdToAliasesMap = new 
HashMap<Integer, List<String>>();
-    private List<CartridgeDefinitionBean> cartridgeDefinitionBeanList = new 
LinkedList<CartridgeDefinitionBean>();
-    private Map<String,Cartridge> availableSingleTenantCartridges = new 
HashMap<String,Cartridge>();
-    private Map<String,Cartridge> availableMultiTenantCartridges = new 
HashMap<String,Cartridge>();
-    private Map<String,Cartridge> subscribedCartridges = new 
HashMap<String,Cartridge>();
+    private Map<Integer, List<CartridgeDefinitionBean>> 
cartridgeDefinitionBeanList = new HashMap<Integer, 
List<CartridgeDefinitionBean>>();
+    private Map<Integer, Map<String,Cartridge>> 
availableSingleTenantCartridges = new HashMap<Integer, Map<String,Cartridge>>();
+    private Map<Integer, Map<String,Cartridge>> availableMultiTenantCartridges 
= new HashMap<Integer, Map<String,Cartridge>>();
+    private Map<Integer, Map<String,Cartridge>> subscribedCartridges = new 
HashMap<Integer, Map<String,Cartridge>>();
     private Map<String,TenantInfoBean> tenantMap = new HashMap<String, 
TenantInfoBean>();
-    private Map<String,Partition> partitionMap = new HashMap<String, 
Partition>();
-    private Map<String,AutoscalePolicy> autoscalePolicyMap = new 
HashMap<String, AutoscalePolicy>();
-    private Map<String,DeploymentPolicy> deploymentPolicyMap = new 
HashMap<String, DeploymentPolicy>();
-    private Map<String,ServiceDefinitionBean> serviceDefinitionMap = new 
HashMap<String, ServiceDefinitionBean>();
+    private Map<String, Integer> tenantIdMap = new HashMap<String, Integer>();
+    private Map<Integer, Map<String,Partition>> partitionMap = new 
HashMap<Integer, Map<String, Partition>>();
+    private Map<Integer, Map<String,AutoscalePolicy>> autoscalePolicyMap = new 
HashMap<Integer, Map<String, AutoscalePolicy>>();
+    private Map<Integer, Map<String,DeploymentPolicy>> deploymentPolicyMap = 
new HashMap<Integer, Map<String, DeploymentPolicy>>();
+    private Map<Integer, Map<String,ServiceDefinitionBean>> 
serviceDefinitionMap = new HashMap<Integer, Map<String, 
ServiceDefinitionBean>>();
     private Map<String,Cluster> clusterMap = new HashMap<String, Cluster>();
-
-    private Set<Cartridge> temp = new HashSet<Cartridge>();
+    
+    private int tenantIdCount=1;
 
 
     private MockContext(){} // do not allow to initialize
@@ -64,10 +66,19 @@ public class MockContext {
         return mockContext;
     }
 
-
     public StratosAdminResponse addCartirdgeDefinition(CartridgeDefinitionBean 
cartridgeDefinitionBean){
-        this.cartridgeDefinitionBeanList.add(cartridgeDefinitionBean);
-        Cartridge cartridge = new Cartridge();
+       int tenantId = getTenantId();
+       List<CartridgeDefinitionBean> tenantCartridges;
+       if(this.cartridgeDefinitionBeanList.containsKey(tenantId)){
+               tenantCartridges = 
this.cartridgeDefinitionBeanList.get(tenantId);
+       }
+       else{
+               tenantCartridges = new LinkedList<CartridgeDefinitionBean>();
+               this.cartridgeDefinitionBeanList.put(tenantId, 
tenantCartridges);
+       }
+       tenantCartridges.add(cartridgeDefinitionBean);
+        
+       Cartridge cartridge = new Cartridge();
         cartridge.setCartridgeType(cartridgeDefinitionBean.type);
         cartridge.setDescription(cartridgeDefinitionBean.description);
         cartridge.setDisplayName(cartridgeDefinitionBean.displayName);
@@ -75,30 +86,51 @@ public class MockContext {
         cartridge.setProvider(cartridgeDefinitionBean.provider);
         cartridge.setVersion(cartridgeDefinitionBean.version);
 
+        Map<String,Cartridge> cartridges;
         if(cartridge.isMultiTenant()){
-            availableMultiTenantCartridges.put(cartridge.getCartridgeType(), 
cartridge);
+               if(this.availableMultiTenantCartridges.containsKey(tenantId)){
+                       cartridges = 
availableMultiTenantCartridges.get(tenantId);
+               }
+               else{
+                       cartridges = new HashMap<String,Cartridge>();
+                       this.availableMultiTenantCartridges.put(tenantId, 
cartridges);
+               }
+            cartridges.put(cartridge.getCartridgeType(), cartridge);
+            System.out.println(cartridges.size());
         }else{
-            availableSingleTenantCartridges.put(cartridge.getCartridgeType(), 
cartridge);
+               if(this.availableSingleTenantCartridges.containsKey(tenantId)){
+                       cartridges = 
availableMultiTenantCartridges.get(tenantId);
+               }
+               else{
+                       cartridges = new HashMap<String,Cartridge>();
+                       this.availableSingleTenantCartridges.put(tenantId, 
cartridges);
+               }
+               cartridges.put(cartridge.getCartridgeType(), cartridge);
+            System.out.println(cartridges.size());
         }
-        System.out.println(availableMultiTenantCartridges.size());
-        System.out.println(availableSingleTenantCartridges.size());
+
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
-        stratosAdminResponse.setMessage("Successfully deployed deployment 
policy definition with type ");
+        stratosAdminResponse.setMessage("Successfully deployed cartridge 
definition with type ");
         return stratosAdminResponse;
     }
 
 
 
     public Cartridge[] getAvailableMultiTenantCartridges() throws 
RestAPIException{
-       return availableMultiTenantCartridges.values().toArray(new 
Cartridge[0]);
+       if(!this.availableMultiTenantCartridges.containsKey(getTenantId())){
+               return new HashMap<String, Cartridge>().values().toArray(new 
Cartridge[0]);
+       }       
+       return 
this.availableMultiTenantCartridges.get(getTenantId()).values().toArray(new 
Cartridge[0]);
     }
 
 
     public Cartridge[] getAvailableSingleTenantCartridges() throws 
RestAPIException{
-        return availableSingleTenantCartridges.values().toArray(new 
Cartridge[0]);
+       if(!this.availableSingleTenantCartridges.containsKey(getTenantId())){
+               return new HashMap<String, Cartridge>().values().toArray(new 
Cartridge[0]);
+       }
+       return 
this.availableSingleTenantCartridges.get(getTenantId()).values().toArray(new 
Cartridge[0]);
     }
 
-
     public Cartridge[] getAvailableLbCartridges() throws RestAPIException{
         /*Map<String,Cartridge> availableLbCartridges = new 
HashMap<String,Cartridge>();
         Iterator it = availableSingleTenantCartridges.entrySet().iterator();
@@ -121,7 +153,8 @@ public class MockContext {
             it.remove();
         }
         return availableLbCartridges.values().toArray(new Cartridge[0]);*/
-        return availableSingleTenantCartridges.values().toArray(new 
Cartridge[0]);
+        //return availableSingleTenantCartridges.values().toArray(new 
Cartridge[0]);
+        return getAvailableSingleTenantCartridges();
     }
 
     public Cartridge[] getAvailableCartridges() throws RestAPIException{
@@ -147,65 +180,131 @@ public class MockContext {
         }
         System.out.println(availableCartridges.size());
         return availableCartridges.values().toArray(new Cartridge[0]);*/
-        return availableSingleTenantCartridges.values().toArray(new 
Cartridge[0]);
+        //return availableSingleTenantCartridges.values().toArray(new 
Cartridge[0]);
+       return getAvailableSingleTenantCartridges();
     }
 
 
     public Cartridge[] getSubscribedCartridges() throws RestAPIException{
-        return subscribedCartridges.values().toArray(new Cartridge[0]);
+       if(!this.subscribedCartridges.containsKey(getTenantId())){
+               return new HashMap<String, Cartridge>().values().toArray(new 
Cartridge[0]);
+       }
+        return (subscribedCartridges.get(getTenantId())).values().toArray(new 
Cartridge[0]);
     }
 
     public SubscriptionInfo subscribeToCartridge(CartridgeInfoBean 
cartridgeInfoBean) throws RestAPIException{
-         String cartridgeType = cartridgeInfoBean.getCartridgeType();
-         String alias = cartridgeInfoBean.getAlias();
-         Cartridge subscribedCartridge;
-         // retrieve the cartridge from available ones
-         if(availableSingleTenantCartridges.containsKey(cartridgeType)){
-            subscribedCartridge = 
availableSingleTenantCartridges.get(cartridgeType);
-
-         }else if(availableMultiTenantCartridges.containsKey(cartridgeType)){
-             subscribedCartridge = 
availableMultiTenantCartridges.get(cartridgeType);
-         }else {
-             String msg = "Wrong programme sequence";
-             throw new RestAPIException(msg);
-         }
-        //Proper way is copy construrctor
-        Cartridge copy = new Cartridge();
-        copy.setCartridgeType(subscribedCartridge.getCartridgeType());
-        copy.setDescription(subscribedCartridge.getDescription());
-        copy.setDisplayName(subscribedCartridge.getDisplayName());
-        copy.setMultiTenant(subscribedCartridge.isMultiTenant());
-        copy.setProvider(subscribedCartridge.getProvider());
-        copy.setVersion(subscribedCartridge.getVersion());
-        copy.setCartridgeAlias(alias);
-        copy.setHostName("dummy.stratos.com");
-        copy.setRepoURL("http://dummy.stratos.com/myrepo.git";);
-
-        subscribedCartridges.put(alias,copy);
+        int tenantId = this.getTenantId();
+        String cartridgeType = cartridgeInfoBean.getCartridgeType();
+        String alias = cartridgeInfoBean.getAlias();
+        Cartridge subscribedCartridge=null;
+        // retrieve the cartridge from available ones for specific tenant
+        if(availableMultiTenantCartridges.containsKey(tenantId)){
+               
if((availableMultiTenantCartridges.get(tenantId)).containsKey(cartridgeType)){
+                subscribedCartridge = 
(availableMultiTenantCartridges.get(tenantId)).get(cartridgeType);
+               }
+        }
+        else if(availableSingleTenantCartridges.containsKey(tenantId)){
+               
if((availableSingleTenantCartridges.get(tenantId)).containsKey(cartridgeType)){
+                 subscribedCartridge = 
(availableSingleTenantCartridges.get(tenantId)).get(cartridgeType);
+               }
+        }else{
+             throw new RestAPIException(Status.NO_CONTENT,"Cartridge not 
defined");
+        }
+         
+        if(subscribedCartridge!=null){
+            //Proper way is copy constructor
+            Cartridge copy = new Cartridge();
+            copy.setCartridgeType(subscribedCartridge.getCartridgeType());
+            copy.setDescription(subscribedCartridge.getDescription());
+            copy.setDisplayName(subscribedCartridge.getDisplayName());
+            copy.setMultiTenant(subscribedCartridge.isMultiTenant());
+            copy.setProvider(subscribedCartridge.getProvider());
+            copy.setVersion(subscribedCartridge.getVersion());
+            copy.setCartridgeAlias(alias);
+            copy.setHostName("dummy.stratos.com");
+            copy.setRepoURL("http://dummy.stratos.com/myrepo.git";);
+
+            Map<String,Cartridge> subscriptions;
+            if(subscribedCartridges.containsKey(tenantId)){
+               (subscribedCartridges.get(tenantId)).put(alias,copy);
+            }
+            else{
+               subscriptions = new HashMap<String,Cartridge>();
+               subscriptions.put(alias, copy);
+               subscribedCartridges.put(tenantId, subscriptions);
+            }
+            
+            SubscriptionInfo subscriptionInfo = new SubscriptionInfo();
+            subscriptionInfo.setHostname(copy.getHostName());
+            subscriptionInfo.setRepositoryURL(copy.getRepoURL());
 
-        SubscriptionInfo subscriptionInfo = new SubscriptionInfo();
-        subscriptionInfo.setHostname(copy.getHostName());
-        subscriptionInfo.setRepositoryURL(copy.getRepoURL());
+            return subscriptionInfo;
+        }
+        
+        return new SubscriptionInfo();
 
-        return subscriptionInfo;
     }
 
     public StratosAdminResponse unsubscribe(String alias) throws 
RestAPIException{
-        if(subscribedCartridges.containsKey(alias)){
-            subscribedCartridges.remove(alias);
+        if(subscribedCartridges.containsKey(getTenantId())){
+               
if((subscribedCartridges.get(getTenantId())).containsKey(alias)){
+               (subscribedCartridges.get(getTenantId())).remove(alias);
+               }       
         }else{
-            throw new RestAPIException("Unable to un-subscribe");
+            throw new RestAPIException(Status.NO_CONTENT,"Unable to 
un-subscribe");
         }
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully un-subscribed");
         return stratosAdminResponse;
     }
 
+    public Cartridge getCartridgeInfo(String alias) throws RestAPIException{
+       if(!subscribedCartridges.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT, "No cartridges 
subscribed for current tenant.");
+       
+       if(!(subscribedCartridges.get(getTenantId())).containsKey(alias))
+               throw new RestAPIException(Status.NO_CONTENT,"Cartridge 
information is not available.");
+               
+        return (subscribedCartridges.get(getTenantId())).get(alias);
+    }
+
+    public Cartridge getAvailableSingleTenantCartridgeInfo(String 
cartridgeType) throws RestAPIException{
+        if(!availableSingleTenantCartridges.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No cartridges 
defined for current tenant");
+       
+       
if(!(availableSingleTenantCartridges.get(getTenantId())).containsKey(cartridgeType))
+            throw new RestAPIException(Status.NO_CONTENT,"Cartridge is not 
available.");
+        
+        return 
(availableSingleTenantCartridges.get(getTenantId())).get(cartridgeType);
+    }
+    
+    public StratosAdminResponse deleteCartridgeDefinition(String 
cartridgeType) throws RestAPIException{
+        if((!availableSingleTenantCartridges.containsKey(getTenantId())) && 
(!availableMultiTenantCartridges.containsKey(getTenantId())))
+               throw new RestAPIException(Status.NO_CONTENT,"No cartridges 
defined for tenant");
+        
+       if(availableSingleTenantCartridges.containsKey(getTenantId())){
+               
if((availableSingleTenantCartridges.get(getTenantId())).containsKey(cartridgeType)){
+               
(availableSingleTenantCartridges.get(getTenantId())).remove(cartridgeType);
+               }
+       } else if(availableMultiTenantCartridges.containsKey(getTenantId())){
+               
if((availableMultiTenantCartridges.get(getTenantId())).containsKey(cartridgeType)){
+               
(availableMultiTenantCartridges.get(getTenantId())).remove(cartridgeType);
+               }
+        } else{
+            throw new RestAPIException(Status.BAD_REQUEST,"invalid cartridge 
type");
+        }
+        StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
+        stratosAdminResponse.setMessage("Successfully delete cartridge 
definition");
+        return stratosAdminResponse;
+    }
+
     public StratosAdminResponse addTenant(TenantInfoBean tenantInfoBean) 
throws RestAPIException{
         try{
             tenantMap.put(tenantInfoBean.getTenantDomain(),tenantInfoBean);
+            tenantInfoBean.setTenantId(tenantIdCount);
+            tenantIdMap.put(tenantInfoBean.getAdmin(), tenantIdCount++);
         }catch (Exception e){
-            throw new RestAPIException(e.getMessage());
+            throw new 
RestAPIException(Status.INTERNAL_SERVER_ERROR,e.getMessage());
         }
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully added new Tenant");
@@ -214,34 +313,25 @@ public class MockContext {
 
     public TenantInfoBean getTenant(String tenantDomain) throws 
RestAPIException{
         if(!tenantMap.containsKey(tenantDomain)){
-            throw new RestAPIException("Information for tenant: " + 
tenantDomain + " is not available");
+            throw new RestAPIException(Status.NO_CONTENT,"Information for 
tenant: " + tenantDomain + " is not available");
         }
         return tenantMap.get(tenantDomain);
     }
-
-    public Cartridge getCartridgeInfo(String alias) throws RestAPIException{
-        if(!subscribedCartridges.containsKey(alias)){
-            throw new RestAPIException("Cartridge information is not 
available.");
-        }
-        return subscribedCartridges.get(alias);
-    }
-
-    public Cartridge getAvailableSingleTenantCartridgeInfo(String 
cartridgeType) throws RestAPIException{
-        if(!availableSingleTenantCartridges.containsKey(cartridgeType)){
-            throw new RestAPIException("Cartridge is not available.");
-        }
-        return availableSingleTenantCartridges.get(cartridgeType);
-    }
-
+    
     public StratosAdminResponse deleteTenant(String tenantDomain) {
-          tenantMap.remove(tenantDomain);
+        if(tenantMap.containsKey(tenantDomain)){
+               TenantInfoBean tenant=tenantMap.get(tenantDomain);
+               tenantMap.remove(tenantDomain);
+               tenantIdMap.remove(tenant.getTenantId());
+        }
+               
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deleted tenant");
         return stratosAdminResponse;
     }
 
     public TenantInfoBean[] getTenants() throws RestAPIException{
-        return tenantMap.values().toArray(new TenantInfoBean[0]);
+       return tenantMap.values().toArray(new TenantInfoBean[0]);
     }
 
     public TenantInfoBean[] retrievePartialSearchTenants(String searchDomain) 
throws RestAPIException{
@@ -258,7 +348,7 @@ public class MockContext {
         if(tenantMap.containsKey(tenantDomain)){
             tenantMap.get(tenantDomain).setActive(true);
         } else{
-            throw new RestAPIException("Invalid tenant domain");
+            throw new RestAPIException(Status.BAD_REQUEST,"Invalid tenant 
domain");
         }
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully activated Tenant");
@@ -269,130 +359,193 @@ public class MockContext {
         if(tenantMap.containsKey(tenantDomain)){
             tenantMap.get(tenantDomain).setActive(false);
         } else{
-            throw new RestAPIException("Invalid tenant domain");
+            throw new RestAPIException(Status.BAD_REQUEST,"Invalid tenant 
domain");
         }
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deactivated Tenant");
         return stratosAdminResponse;
     }
 
-    public StratosAdminResponse deleteCartridgeDefinition(String 
cartridgeType) throws RestAPIException{
-        if(availableSingleTenantCartridges.containsKey(cartridgeType)){
-            availableSingleTenantCartridges.remove(cartridgeType);
-        } else if(availableMultiTenantCartridges.containsKey(cartridgeType)){
-            availableMultiTenantCartridges.remove(cartridgeType);
-        } else{
-            throw new RestAPIException("invalid cartridge type");
-        }
-        StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
-        stratosAdminResponse.setMessage("Successfully delete cartridge 
definition");
-        return stratosAdminResponse;
-    }
-
     public StratosAdminResponse addPartition(Partition partition) {
-            partitionMap.put(partition.id, partition);
+       Map<String,Partition> partitions;
+       if (partitionMap.containsKey(getTenantId())){
+               partitions = partitionMap.get(getTenantId());
+       }
+       else{
+               partitions = new HashMap<String, Partition>();
+               partitionMap.put(getTenantId(), partitions);
+       }
+       partitions.put(partition.id, partition);
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deployed partition");
         return stratosAdminResponse;
     }
 
     public StratosAdminResponse addAutoScalingPolicyDefinition(AutoscalePolicy 
autoscalePolicy) {
-            autoscalePolicyMap.put(autoscalePolicy.getId(), autoscalePolicy);
+       Map<String,AutoscalePolicy> policies;
+       if (autoscalePolicyMap.containsKey(getTenantId())){
+               policies = autoscalePolicyMap.get(getTenantId());
+       }
+       else{
+               policies = new HashMap<String, AutoscalePolicy>();
+               autoscalePolicyMap.put(getTenantId(), policies);
+       }
+       policies.put(autoscalePolicy.getId(), autoscalePolicy);
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deployed auto scaling 
policy definition");
         return stratosAdminResponse;
     }
 
     public StratosAdminResponse addDeploymentPolicyDefinition(DeploymentPolicy 
deploymentPolicy) {
-           deploymentPolicyMap.put(deploymentPolicy.id,deploymentPolicy);
+       Map<String,DeploymentPolicy> policies;
+       if (deploymentPolicyMap.containsKey(getTenantId())){
+               policies = deploymentPolicyMap.get(getTenantId());
+       }
+       else{
+               policies = new HashMap<String, DeploymentPolicy>();
+               deploymentPolicyMap.put(getTenantId(), policies);
+       }
+       policies.put(deploymentPolicy.id,deploymentPolicy);
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deployed deployment 
policy definition");
         return stratosAdminResponse;
     }
 
     public Partition[] getPartitions() throws RestAPIException{
-        return partitionMap.values().toArray(new Partition[0]);
+       if(!partitionMap.containsKey(getTenantId())){
+               return new HashMap<String,Partition>().values().toArray(new 
Partition[0]);
+       }
+       return (partitionMap.get(getTenantId())).values().toArray(new 
Partition[0]);
     }
 
     public Partition getPartition(String partitionId) throws RestAPIException{
-        if(!partitionMap.containsKey(partitionId)){
+        if(!partitionMap.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No partitions 
have been defined for the tenant");
+        
+       if(!(partitionMap.get(getTenantId())).containsKey(partitionId)){
             throw new RestAPIException("There is no partition with the id: " + 
partitionId);
         }
-        return  partitionMap.get(partitionId);
+        return  (partitionMap.get(getTenantId())).get(partitionId);
     }
 
 
     public Partition[] getPartitionsOfPolicy(String deploymentPolicyId) throws 
RestAPIException{
-        if(!deploymentPolicyMap.containsKey(deploymentPolicyId)){
-            throw new RestAPIException("There is no deployment policy with id: 
" + deploymentPolicyId);
+       if(!deploymentPolicyMap.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No deployment 
policies have been defined for tenant");
+       
+       
if(!(deploymentPolicyMap.get(getTenantId())).containsKey(deploymentPolicyId)){
+            throw new RestAPIException(Status.NO_CONTENT,"There is no 
deployment policy with id: " + deploymentPolicyId);
         }
-        return 
deploymentPolicyMap.get(deploymentPolicyId).partition.toArray(new Partition[0]);
+        return 
(deploymentPolicyMap.get(getTenantId())).get(deploymentPolicyId).partition.toArray(new
 Partition[0]);
     }
 
     public PartitionGroup[] getPartitionGroups(String deploymentPolicyId)  
throws RestAPIException{
-        if(!deploymentPolicyMap.containsKey(deploymentPolicyId)){
-            throw new RestAPIException("There is no policy with id: " + 
deploymentPolicyId);
+       if(!deploymentPolicyMap.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No deployment 
policies have been defined for tenant");
+       
+       
if(!(deploymentPolicyMap.get(getTenantId())).containsKey(deploymentPolicyId)){
+            throw new RestAPIException(Status.NO_CONTENT,"There is no policy 
with id: " + deploymentPolicyId);
         }
-        return 
deploymentPolicyMap.get(deploymentPolicyId).partitionGroup.toArray(new 
PartitionGroup[0]);
+        return 
(deploymentPolicyMap.get(getTenantId())).get(deploymentPolicyId).partitionGroup.toArray(new
 PartitionGroup[0]);
     }
 
     public AutoscalePolicy[] getAutoscalePolicies()  throws RestAPIException{
-         return autoscalePolicyMap.values().toArray(new AutoscalePolicy[0]);
+       if(!autoscalePolicyMap.containsKey(getTenantId())){
+               return new 
HashMap<String,AutoscalePolicy>().values().toArray(new AutoscalePolicy[0]);
+       }
+       return (autoscalePolicyMap.get(getTenantId())).values().toArray(new 
AutoscalePolicy[0]);
     }
 
     public AutoscalePolicy getAutoscalePolicies(String autoscalePolicyId) 
throws  RestAPIException{
-        if(!autoscalePolicyMap.containsKey(autoscalePolicyId)){
+       if(!autoscalePolicyMap.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No autoscaling 
policies have been defined for tenant");
+       
+       
if(!(autoscalePolicyMap.get(getTenantId())).containsKey(autoscalePolicyId)){
             throw new RestAPIException("There is no auto scale policy with id: 
" + autoscalePolicyId);
         }
-        return autoscalePolicyMap.get(autoscalePolicyId);
+        return (autoscalePolicyMap.get(getTenantId())).get(autoscalePolicyId);
     }
 
     public DeploymentPolicy[] getDeploymentPolicies() throws RestAPIException{
-        return deploymentPolicyMap.values().toArray(new DeploymentPolicy[0]);
+       if(!deploymentPolicyMap.containsKey(getTenantId())){
+               return new 
HashMap<String,DeploymentPolicy>().values().toArray(new DeploymentPolicy[0]);
+       }
+       
+       return (deploymentPolicyMap.get(getTenantId())).values().toArray(new 
DeploymentPolicy[0]);
     }
 
     public DeploymentPolicy getDeploymentPolicies(String deploymentPolicyId) 
throws RestAPIException{
-        if(!deploymentPolicyMap.containsKey(deploymentPolicyId)){
+       if(!deploymentPolicyMap.containsKey(getTenantId()))
+               throw new RestAPIException("No deployment policies have been 
defined for tenant");
+       
+       
if(!(deploymentPolicyMap.get(getTenantId())).containsKey(deploymentPolicyId)){
             throw new RestAPIException("There is no deployment policy with id: 
" + deploymentPolicyId);
         }
-        return deploymentPolicyMap.get(deploymentPolicyId);
+        return 
(deploymentPolicyMap.get(getTenantId())).get(deploymentPolicyId);
     }
+    
     public StratosAdminResponse deployService(ServiceDefinitionBean 
serviceDefinitionBean) {
-        
serviceDefinitionMap.put(serviceDefinitionBean.getCartridgeType(),serviceDefinitionBean);
+       Map<String,ServiceDefinitionBean> serviceDefinitions;
+       
+       if(!serviceDefinitionMap.containsKey(getTenantId())){
+               serviceDefinitions = new 
HashMap<String,ServiceDefinitionBean>();
+               serviceDefinitionMap.put(getTenantId(), serviceDefinitions);
+       }
+       else{
+               serviceDefinitions = serviceDefinitionMap.get(getTenantId());
+       }
+       
+       
serviceDefinitions.put(serviceDefinitionBean.getCartridgeType(),serviceDefinitionBean);
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deployed service");
         return stratosAdminResponse;
 
     }
+       
     public ServiceDefinitionBean[] getServices() throws RestAPIException{
-        return serviceDefinitionMap.values().toArray(new 
ServiceDefinitionBean[0]);
+       if(!serviceDefinitionMap.containsKey(getTenantId())){
+               return new 
HashMap<String,ServiceDefinitionBean>().values().toArray(new 
ServiceDefinitionBean[0]);
+       }
+       return (serviceDefinitionMap.get(getTenantId())).values().toArray(new 
ServiceDefinitionBean[0]);
     }
 
     public ServiceDefinitionBean getServiceType(String serviceType) throws 
RestAPIException{
-        return serviceDefinitionMap.get(serviceType);
+        if(!serviceDefinitionMap.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No services have 
been defined for tenant");
+        
+       return (serviceDefinitionMap.get(getTenantId())).get(serviceType);
     }
 
     public Partition[] getPartitions(String deploymentPolicyId, String 
partitionGroupId) throws RestAPIException{
-        if(!deploymentPolicyMap.containsKey(deploymentPolicyId)){
-            throw new RestAPIException("There is no deployment policy with id: 
" + deploymentPolicyId);
+       if(!deploymentPolicyMap.containsKey(getTenantId()))
+               throw new RestAPIException(Status.NO_CONTENT,"No deployment 
policies have been defined for tenant");
+       
+       
if(!(deploymentPolicyMap.get(getTenantId())).containsKey(deploymentPolicyId)){
+            throw new RestAPIException(Status.NO_CONTENT,"There is no 
deployment policy with id: " + deploymentPolicyId);
         }
+       
         Partition[] partitions = null;
-         DeploymentPolicy deploymentPolicy = 
deploymentPolicyMap.get(deploymentPolicyId);
+         DeploymentPolicy deploymentPolicy = 
(deploymentPolicyMap.get(getTenantId())).get(deploymentPolicyId);
          for(PartitionGroup partitionGroup : deploymentPolicy.partitionGroup){
              if(partitionGroup.id.equals(partitionGroupId)){
                  partitions =  partitionGroup.partition.toArray(new 
Partition[0]);
              }
          }
         if(partitions == null){
-            throw new RestAPIException("Partition not found");
+            throw new RestAPIException(Status.NO_CONTENT,"Partition not 
found");
         }
         return partitions;
     }
+    
     public Cluster[] getClusters() throws RestAPIException{
         return clusterMap.values().toArray(new Cluster[0]);
     }
+    
     public DeploymentPolicy[] getDeploymentPoliciesForCartridgeType(String 
cartridgeType) throws RestAPIException{
-        return deploymentPolicyMap.values().toArray(new DeploymentPolicy[0]);
+        if(!deploymentPolicyMap.containsKey(getTenantId())){
+               return new 
HashMap<String,DeploymentPolicy>().values().toArray(new DeploymentPolicy[0]);
+        }
+       return (deploymentPolicyMap.get(getTenantId())).values().toArray(new 
DeploymentPolicy[0]);
     }
 
        public StratosAdminResponse addSubscriptionDomains(int tenantId, String 
alias, SubscriptionDomainRequest request) {
@@ -467,12 +620,21 @@ public class MockContext {
                                        
stratosAdminResponse.setMessage("Successfully removed the subscription domain: 
"+domainName);
                                }
                        }
-               } else {
-                       
+               } else {                
                        stratosAdminResponse.setMessage("Failed to remove the 
subscription domain: "+domainName);
                }
                
         return stratosAdminResponse;
        }
+       
+    private int getTenantId() {
+       String userName = 
CarbonContext.getThreadLocalCarbonContext().getUsername();
+       if (tenantIdMap.containsKey(userName)){
+               return tenantIdMap.get(userName);
+       }
+       else {
+               return -1;
+       }
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a76a4599/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
index d766ebd..5e878e1 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
@@ -19,13 +19,20 @@
 package org.apache.stratos.rest.endpoint.mock;
 
 
+import java.net.URI;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.common.beans.TenantInfoBean;
+import org.apache.stratos.common.exception.StratosException;
+import org.apache.stratos.common.util.CommonUtil;
 import org.apache.stratos.manager.dto.Cartridge;
 import org.apache.stratos.manager.dto.SubscriptionInfo;
 import org.apache.stratos.manager.exception.ADCException;
+import org.apache.stratos.manager.exception.ServiceDoesNotExistException;
+import org.apache.stratos.manager.subscription.CartridgeSubscription;
 import org.apache.stratos.manager.subscription.SubscriptionDomain;
+import org.apache.stratos.rest.endpoint.ServiceHolder;
 import org.apache.stratos.rest.endpoint.Utils;
 import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction;
 import org.apache.stratos.rest.endpoint.annotation.SuperTenantService;
@@ -42,6 +49,14 @@ import 
org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDom
 import org.apache.stratos.rest.endpoint.bean.topology.Cluster;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 import org.apache.stratos.rest.endpoint.services.ServiceUtils;
+import org.apache.stratos.tenant.mgt.core.TenantPersistor;
+import org.apache.stratos.tenant.mgt.util.TenantMgtUtil;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.context.RegistryType;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.session.UserRegistry;
+import org.wso2.carbon.user.core.tenant.Tenant;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
@@ -49,6 +64,7 @@ import javax.ws.rs.*;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 
 @Path("/admin/")
 public class StratosTestAdmin {
@@ -151,7 +167,7 @@ public class StratosTestAdmin {
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
     @SuperTenantService(true)
     public StratosAdminResponse addTenant(TenantInfoBean tenantInfoBean) 
throws RestAPIException {
-         return MockContext.getInstance().addTenant(tenantInfoBean);
+       return MockContext.getInstance().addTenant(tenantInfoBean);
     }
 
 
@@ -191,7 +207,7 @@ public class StratosTestAdmin {
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
     @SuperTenantService(true)
     public TenantInfoBean[] retrieveTenants() throws RestAPIException {
-           return MockContext.getInstance().getTenants();
+       return MockContext.getInstance().getTenants();
     }
 
     @GET
@@ -518,5 +534,13 @@ public class StratosTestAdmin {
 
         return MockContext.getInstance().removeSubscriptionDomain(2, 
subscriptionAlias, domainName);
     }
+    
+    @POST
+       @Path("/cartridge/sync")
+       @Consumes("application/json")
+       @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+       public Response synchronizeRepository(String alias) throws 
RestAPIException {
+               return Response.noContent().build();
+       }
 
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a76a4599/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
 
b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
index 7c9e7fd..7f326ab 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
@@ -38,6 +38,7 @@
             <ref bean="badRequestExceptionHandler"/>
             <ref bean="jsonProvider"/>
                        <ref bean="throwableExceptionHandler"/>
+                       <ref bean="basicAuthenticationFilter"/>
             <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
                 <property name="dropRootElement" value="true"/>
                 <property name="supportUnwrapped" value="true"/>
@@ -47,6 +48,7 @@
     </jaxrs:server>
 
     <bean id="stratosRestEndpointTestBean" 
class="org.apache.stratos.rest.endpoint.mock.StratosTestAdmin"/>
+    <bean id="basicAuthenticationFilter" 
class="org.apache.stratos.rest.endpoint.handlers.StratosMockHandler"/>
     <bean id="exceptionHandler" 
class="org.apache.stratos.rest.endpoint.handlers.CustomExceptionMapper"/>
     <bean id="badRequestExceptionHandler" 
class="org.apache.stratos.rest.endpoint.handlers.BadRequestExceptionMapper"/>
     <bean id="genericExceptionHandler" 
class="org.apache.stratos.rest.endpoint.handlers.GenericExceptionMapper"/>

Reply via email to