Package com.ibm.xsp.extlib.sbt.connections

Source Code of com.ibm.xsp.extlib.sbt.connections.ConnectionDataSource$Accessor

/*
* © Copyright IBM Corp. 2010
*
* 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.connections;

import java.util.HashMap;
import java.util.Map;

import org.w3c.dom.Document;

import com.ibm.commons.xml.NamespaceContext;
import com.ibm.commons.xml.NamespaceContextImpl;
import com.ibm.sbt.services.client.ClientService;
import com.ibm.sbt.services.client.ClientService.HandlerXml;
import com.ibm.sbt.services.client.connections.ConnectionsService;
import com.ibm.sbt.services.endpoints.Endpoint;
import com.ibm.sbt.services.endpoints.EndpointFactory;
import com.ibm.xsp.FacesExceptionEx;
import com.ibm.xsp.extlib.sbt.model.RestDataBlockAccessor;
import com.ibm.xsp.extlib.sbt.model.RestDataSource;
import com.ibm.xsp.extlib.sbt.model.accessor.AtomXmlBlockAccessor;
/**
* Data source for atom based Connections data.
* @author Philippe Riand
*/
public class ConnectionDataSource extends RestDataSource {

    public static NamespaceContext XPATH_CONTEXT;
    static {
        NamespaceContextImpl ns = new NamespaceContextImpl();
        ns.addNamespace("a","http://www.w3.org/2005/Atom");
        ns.addNamespace("opensearch","http://a9.com/-/spec/opensearch/1.1/");
        ns.addNamespace("x","http://www.w3.org/1999/xhtml");
       
        ns.addNamespace("app","http://www.w3.org/2007/app");    
        ns.addNamespace("snx","http://www.ibm.com/xmlns/prod/sn");

        ns.addNamespace("activity","http://activitystrea.ms/spec/1.0/");

        XPATH_CONTEXT = ns;
    }
   
    public static class Accessor extends AtomXmlBlockAccessor {

        private static final long serialVersionUID = 1L;
       
        public Accessor() {} // Serialization
        public Accessor(ConnectionDataSource ds) {
            super(ds);
        }
       
        @Override
        public NamespaceContext getNamespaceContext() {
            return XPATH_CONTEXT;
        }
       
        protected Map<String,String> getParameters(int index, int blockSize) {
            HashMap<String,String> map = new HashMap<String,String>();
            map.putAll(getUrlParameters());
            map.put("page",Integer.toString(index+1));
            map.put("ps",Integer.toString(blockSize));
            return map;
        }
       
        @Override
        protected Block loadBlock(int index, int blockSize) {
            try {
                ConnectionsService svc = createService(findEndpointBean(),getServiceUrl());
                Map<String,String> parameters = getParameters(index, blockSize);
               
                HandlerXml handler = new HandlerXml();
                Document doc = (Document)svc.get(getServiceUrl(),parameters, handler).getData();
               
                return new XmlBlock(index,doc);
            } catch(Exception ex) {
                throw new FacesExceptionEx(ex,"Error while reading the Connections entries");
            }
        }
       
        protected ConnectionsService createService(Endpoint endpoint, String serviceUrl) {
          //TODO Padraic
//            ConnectionsService svc = new ConnectionsService(endpoint,serviceUrl);
          ConnectionsService svc = new ConnectionsService(endpoint);
            return svc;
        }
    }
   
   
    public ConnectionDataSource() {
    }

    @Override
    public String getDefaultEndpoint() {
        return EndpointFactory.SERVER_CONNECTIONS;
    }
   
    @Override
    protected RestDataBlockAccessor createAccessor() {
        return new Accessor(this);
    }   
}
TOP

Related Classes of com.ibm.xsp.extlib.sbt.connections.ConnectionDataSource$Accessor

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.