Package com.ibm.xsp.extlib.sbt.user

Source Code of com.ibm.xsp.extlib.sbt.user.SmartCloudPeopleDataProvider$PeopleData

/*
* © Copyright IBM Corp. 2011
*
* Licensed 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 com.ibm.xsp.extlib.sbt.user;

import java.util.Set;

import com.ibm.commons.Platform;
import com.ibm.commons.util.io.json.JsonJavaObject;
import com.ibm.jscript.types.FBSValue;
import com.ibm.sbt.services.client.ClientService.HandlerJson;
import com.ibm.sbt.services.client.ClientServicesException;
import com.ibm.sbt.services.client.GenericService;
import com.ibm.sbt.services.endpoints.Endpoint;
import com.ibm.sbt.services.endpoints.EndpointFactory;
import com.ibm.sbt.util.JsonNavigator;
import com.ibm.xsp.extlib.social.impl.AbstractPeopleDataProvider;
import com.ibm.xsp.extlib.social.impl.PersonImpl;

/**
* PeopleDataProvider class to provide subscriber info for SmartCloudFiles.
*
* @author doconnor
*
*/
public class SmartCloudPeopleDataProvider extends AbstractPeopleDataProvider {
    public static class PeopleData extends PersonImpl.Properties {
        boolean privateData;
       
        //SmartCloudFiles subscriber id
        String smartCloudSubscriberId;
       String  smartCloudSubscriberEmail;
       String smartCloudDisplayName;
    }
    private static PeopleData EMPTY_DATA = new PeopleData();
   
    private final String SUBSCRIBER_ID = "smartCloudSubscriberId";
    private final String EMAIL_ID = "smartCloudSubscriberEmail";
    private final String DISPLAY_NAME = "smartCloudDisplayName";
   

    private PeopleData getPeopleData(PersonImpl person) {
        String id = person.getId();
        PeopleData data = (PeopleData)getProperties(id, PeopleData.class);
       
        // If the data is "private", then it is only available to the authenticated user
        if(data!=null && data.privateData && !person.isAuthenticatedUser()) {
            data = null;
        }
       
        if(data == null) {
            synchronized(getSyncObject()) {
                data = (PeopleData)getProperties(id, PeopleData.class);
                if(data == null) {
                    try {
            data = readPeopleData(person);
          } catch (ClientServicesException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
                    if(data!=EMPTY_DATA) {
                        addProperties(id,data);
                    }
                }
            }
        }
        return data;
    }
    private PeopleData readPeopleData(PersonImpl person) throws ClientServicesException {
        if(!person.isAuthenticatedUser()){
            //should never happen as this should be guarded
            return null;
        }
        Endpoint ep = EndpointFactory.getEndpointUnchecked(EndpointFactory.SERVER_SMARTCLOUD);
        if(ep!=null) {
            if(ep.isAuthenticated()){
          // Find the SmartCloud id
          GenericService service = new GenericService(ep);
//                    service.get("/manage/oauth/getUserIdentity",null, "json");
//                   
          //TODO - Padraic
         HandlerJson json= new HandlerJson();
         Object result = service.get("/manage/oauth/getUserIdentity", json).getData();
          if(result instanceof JsonJavaObject){
              JsonNavigator jsonUtil = new JsonNavigator(result);
              PeopleData data = new PeopleData();
              data.smartCloudSubscriberId = jsonUtil.stringValue("subscriberid");
              data.smartCloudSubscriberEmail=jsonUtil.stringValue("email");
              data.smartCloudDisplayName=jsonUtil.stringValue("name");
             
              return data;
          }
      }
        }
        return EMPTY_DATA;
    }

    @Override
    public String getName() {
        return "SmartCloud";
    }
    @Override
    protected String getDefaultCacheScope() {
        return "global"; // $NON-NLS-1$
    }
    @Override
    protected int getDefaultCacheSize() {
        return 300;
    }

    /* (non-Javadoc)
     * @see com.ibm.xsp.extlib.social.impl.AbstractPeopleDataProvider#getType(com.ibm.xsp.extlib.social.impl.PersonImpl, java.lang.Object)
     */
    @Override
    public Class<?> getType(PersonImpl person, Object key) {
        if(SUBSCRIBER_ID.equals(key)){
            return String.class;
        }
        if(EMAIL_ID.equals(key)){
            return String.class;
        }
        return null;
    }

    /* (non-Javadoc)
     * @see com.ibm.xsp.extlib.social.impl.AbstractPeopleDataProvider#getValue(com.ibm.xsp.extlib.social.impl.PersonImpl, java.lang.Object)
     */
    @Override
    public Object getValue(PersonImpl person, Object key) {
        if(SUBSCRIBER_ID.equals(key) && person.isAuthenticatedUser()){
            return getPeopleData(person).smartCloudSubscriberId;
        }
        if(EMAIL_ID.equals(key) && person.isAuthenticatedUser()){
            return getPeopleData(person).smartCloudSubscriberEmail;
        }
       
        if(DISPLAY_NAME.equals(key) && person.isAuthenticatedUser()){
            return getPeopleData(person).smartCloudDisplayName;
        }

        return null;
    }

    @Override
    public void enumerateProperties(Set<String> propNames) {
        super.enumerateProperties(propNames);
        propNames.add(SUBSCRIBER_ID);
        propNames.add(EMAIL_ID);      
        propNames.add(DISPLAY_NAME);
    }
   
    /* (non-Javadoc)
     * @see com.ibm.xsp.extlib.social.impl.AbstractPeopleDataProvider#readValues(com.ibm.xsp.extlib.social.impl.PersonImpl[])
     */
    @Override
    public void readValues(PersonImpl[] persons) {
    }
}
TOP

Related Classes of com.ibm.xsp.extlib.sbt.user.SmartCloudPeopleDataProvider$PeopleData

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.