Package org.apache.geronimo.naming.deployment

Source Code of org.apache.geronimo.naming.deployment.ENCHelper$XmlEnvRefs

/**
*
* Copyright 2003-2004 The Apache Software Foundation
*
*  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 org.apache.geronimo.naming.deployment;

import java.util.HashMap;
import java.util.Map;
import javax.enterprise.deploy.model.DDBean;
import javax.enterprise.deploy.spi.DConfigBean;
import javax.enterprise.deploy.spi.exceptions.BeanNotFoundException;
import javax.enterprise.deploy.spi.exceptions.ConfigurationException;

import org.apache.geronimo.xbeans.geronimo.naming.GerEjbLocalRefType;
import org.apache.geronimo.xbeans.geronimo.naming.GerEjbRefType;
import org.apache.geronimo.xbeans.geronimo.naming.GerResourceEnvRefType;
import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType;
import org.apache.xmlbeans.SchemaTypeLoader;
import org.apache.xmlbeans.XmlBeans;

/**
* @version $Rev: 355877 $ $Date: 2005-12-11 03:48:27 +0100 (Sun, 11 Dec 2005) $
*/
public class ENCHelper {
    static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[]{
        XmlBeans.typeLoaderForClassLoader(org.apache.geronimo.xbeans.j2ee.String.class.getClassLoader()),
    });


    public static final String[][] ENC_XPATHS = {
        {"ejb-ref"},
        {"ejb-local-ref"},
        {"resource-env-ref"},
        {"resource-ref"},
    };

    public static final String[][] NAME_XPATHS = {
        {"ejb-ref-name"},
        {"ejb-ref-name"},
        {"resource-env-ref-name"},
        {"res-ref-name"}
    };


    private final String[] xpaths;
    private final String[] namePaths;

    private RemoteRefDConfigBean[] ejbRefs;

    private LocalRefDConfigBean[] ejbLocalRefs;
    private LocalRefDConfigBean[] resourceEnvRefs;
    private LocalRefDConfigBean[] resourceRefs;

    public ENCHelper(DDBean ddBean, XmlEnvRefs envRefs, String[] xpaths, String[] namePaths) {
        this.xpaths = xpaths;
        this.namePaths = namePaths;
        DDBean[] ddEjbRefs = ddBean.getChildBean(xpaths[0]);
        if (ddEjbRefs == null) {
            ddEjbRefs = new DDBean[0];
        }
        ejbRefs = new RemoteRefDConfigBean[ddEjbRefs.length];
        GerEjbRefType[] xmlEjbRefs = envRefs.getEjbRefs();
        Map ejbRefMap = new HashMap();
        for (int i = 0; i < xmlEjbRefs.length; i++) {
            GerEjbRefType refAdapter = xmlEjbRefs[i];
            ejbRefMap.put(refAdapter.getRefName(), refAdapter);
//            envRefs.removeEjbRef(0);
        }
//        for (int i = 0; i < ddEjbRefs.length; i++) {
//            DDBean ddRef = ddEjbRefs[i];
//            String name = ddRef.getText(namePaths[0])[0];
//            GerRemoteRefType refAdapter;
//            if (ejbRefMap.get(name) == null) {
//                refAdapter = envRefs.addNewEjbRef();
//                refAdapter.setRefName(name);
//            } else {
//                refAdapter = (GerRemoteRefType) ejbRefMap.get(name);
//                envRefs.setEjbRef(i, refAdapter);
//            }
//            ejbRefs[i] = new RemoteRefDConfigBean(ddRef, refAdapter, namePaths[0]);
//        }
//
//        DDBean[] ddEjbLocalRefs = ddBean.getChildBean(xpaths[1]);
//        if (ddEjbLocalRefs == null) {
//            ddEjbLocalRefs = new DDBean[0];
//        }
//        ejbLocalRefs = new LocalRefDConfigBean[ddEjbLocalRefs.length];
//        GerLocalRefType[] xmlEjbLocalRefs = envRefs.getEjbLocalRefs();
//        Map ejbLocalRefMap = new HashMap();
//        for (int i = 0; i < xmlEjbLocalRefs.length; i++) {
//            GerLocalRefType refAdapter = xmlEjbLocalRefs[i];
//            ejbLocalRefMap.put(refAdapter.getRefName(), refAdapter);
//            envRefs.removeEjbLocalRef(0);
//        }
//        for (int i = 0; i < ddEjbLocalRefs.length; i++) {
//            DDBean ddRef = ddEjbLocalRefs[i];
//            String name = ddRef.getText(namePaths[1])[0];
//            GerLocalRefType refAdapter;
//            if (ejbLocalRefMap.get(name) == null) {
//                refAdapter = envRefs.addNewEjbLocalRef();
//                refAdapter.setRefName(name);
//            } else {
//                refAdapter = (GerLocalRefType) ejbLocalRefMap.get(name);
//                envRefs.setEjbLocalRef(i, refAdapter);
//            }
//            ejbLocalRefs[i] = new LocalRefDConfigBean(ddRef, refAdapter, namePaths[1]);
//        }
//
//
//        DDBean[] ddResourceEnvRefs = ddBean.getChildBean(xpaths[2]);
//        if (ddResourceEnvRefs == null) {
//            ddResourceEnvRefs = new DDBean[0];
//        }
//        resourceEnvRefs = new LocalRefDConfigBean[ddResourceEnvRefs.length];
//        GerLocalRefType[] xmlResourceEnvRefs = envRefs.getResourceEnvRefs();
//        Map resourceEnvRefMap = new HashMap();
//        for (int i = 0; i < xmlResourceEnvRefs.length; i++) {
//            GerLocalRefType refAdapter = xmlResourceEnvRefs[i];
//            resourceEnvRefMap.put(refAdapter.getRefName(), refAdapter);
//            envRefs.removeResourceEnvRef(0);
//        }
//        for (int i = 0; i < ddResourceEnvRefs.length; i++) {
//            DDBean ddRef = ddResourceEnvRefs[i];
//            String name = ddRef.getText(namePaths[2])[0];
//            GerLocalRefType refAdapter;
//            if (resourceEnvRefMap.get(name) == null) {
//                refAdapter = envRefs.addNewResourceEnvRef();
//                refAdapter.setRefName(name);
//            } else {
//                refAdapter = (GerLocalRefType) resourceEnvRefMap.get(name);
//                envRefs.setResourceEnvRef(i, refAdapter);
//            }
//            resourceEnvRefs[i] = new LocalRefDConfigBean(ddRef, refAdapter, namePaths[2]);
//        }
//
//        DDBean[] ddResourceRefs = ddBean.getChildBean(xpaths[3]);
//        if (ddResourceRefs == null) {
//            ddResourceRefs = new DDBean[0];
//        }
//        resourceRefs = new LocalRefDConfigBean[ddResourceRefs.length];
//        GerLocalRefType[] xmlResourceRefs = envRefs.getResourceRefs();
//        Map resourceRefMap = new HashMap();
//        for (int i = 0; i < xmlResourceRefs.length; i++) {
//            GerLocalRefType refAdapter = xmlResourceRefs[i];
//            resourceRefMap.put(refAdapter.getRefName(), refAdapter);
//            envRefs.removeResourceRef(0);
//        }
//        for (int i = 0; i < ddResourceRefs.length; i++) {
//            DDBean ddRef = ddResourceRefs[i];
//            String name = ddRef.getText(namePaths[3])[0];
//            GerLocalRefType refAdapter;
//            if (resourceRefMap.get(name) == null) {
//                refAdapter = envRefs.addNewResourceRef();
//                refAdapter.setRefName(name);
//            } else {
//                refAdapter = (GerLocalRefType) resourceRefMap.get(name);
//                envRefs.setResourceRef(i, refAdapter);
//            }
//            resourceRefs[i] = new LocalRefDConfigBean(ddRef, refAdapter, namePaths[3]);
//        }

    }

    public DConfigBean getDConfigBean(DDBean ddBean) throws ConfigurationException {
        String xpath = ddBean.getXpath();
        if (xpath.equals(xpaths[0])) {
            String name = ddBean.getText(namePaths[0])[0];
            for (int i = 0; i < ejbRefs.length; i++) {
                RemoteRefDConfigBean ejbRef = ejbRefs[i];
                if (ejbRef.getRefName().equals(name)) {
                    return ejbRef;
                }
            }
            throw new ConfigurationException("no such ejb-ref-name" + name);
        } else if (xpath.equals(xpaths[1])) {
            String name = ddBean.getText(namePaths[1])[0];
            for (int i = 0; i < ejbLocalRefs.length; i++) {
                LocalRefDConfigBean ejbLocalRef = ejbLocalRefs[i];
                if (ejbLocalRef.getRefName().equals(name)) {
                    return ejbLocalRef;
                }
            }
            throw new ConfigurationException("no such ejb-ref-name" + name);
        } else if (xpath.equals(xpaths[2])) {
            String name = ddBean.getText(namePaths[2])[0];
            for (int i = 0; i < resourceEnvRefs.length; i++) {
                LocalRefDConfigBean resourceEnvRef = resourceEnvRefs[i];
                if (resourceEnvRef.getRefName().equals(name)) {
                    return resourceEnvRef;
                }
            }
            throw new ConfigurationException("no such ejb-ref-name" + name);
        } else if (xpath.equals(xpaths[3])) {
            String name = ddBean.getText(namePaths[3])[0];
            for (int i = 0; i < resourceRefs.length; i++) {
                LocalRefDConfigBean resourceRef = resourceRefs[i];
                if (resourceRef.getRefName().equals(name)) {
                    return resourceRef;
                }
            }
            throw new ConfigurationException("no such res-ref-name" + name);
        } else {
            throw new ConfigurationException("Unrecognized XPath: " + ddBean.getXpath());
        }
    }

    public void removeDConfigBean(DConfigBean dcBean) throws BeanNotFoundException {
//          DDBean ddBean = dcBean.getDDBean();
//          String xpath = ddBean.getXpath();
//          String name = ddBean.getText();
        /*
              if (xpath.endsWith("ejb-ref/ejb-ref-name")) {
                  if (ejbRefs.remove(name) == null) {
                      throw new BeanNotFoundException("No DConfigBean found with name: " + name);
                  }
              } else if (xpath.endsWith("ejb-local-ref/ejb-ref-name")) {
                  if (ejbLocalRefs.remove(name) == null) {
                      throw new BeanNotFoundException("No DConfigBean found with name: " + name);
                  }
              } else if (xpath.endsWith("service-ref/service-ref-name")) {
                  if (serviceRefs.remove(name) == null) {
                      throw new BeanNotFoundException("No DConfigBean found with name: " + name);
                  }
              } else if (xpath.endsWith("resource-ref/res-ref-name")) {
                  if (resourceRefs.remove(name) == null) {
                      throw new BeanNotFoundException("No DConfigBean found with name: " + name);
                  }
              } else {
                  throw new BeanNotFoundException("Unrecognized XPath: " + xpath);
              }
              */
    }


    public static class XmlEnvRefs {
        private final GerEjbRefType[] ejbRefs;
        private final GerEjbLocalRefType[] ejbLocalRefs;
        private final GerResourceRefType[] resourceRefs;
        private final GerResourceEnvRefType[] resourceEnvRefs;

        public XmlEnvRefs(GerEjbRefType[] ejbRefs, GerEjbLocalRefType[] ejbLocalRefs, GerResourceRefType[] resourceRefs, GerResourceEnvRefType[] resourceEnvRefs) {
            this.ejbRefs = ejbRefs;
            this.ejbLocalRefs = ejbLocalRefs;
            this.resourceRefs = resourceRefs;
            this.resourceEnvRefs = resourceEnvRefs;
        }

        public GerEjbRefType[] getEjbRefs() {
            return ejbRefs;
        }

        public GerEjbLocalRefType[] getEjbLocalRefs() {
            return ejbLocalRefs;
        }

        public GerResourceRefType[] getResourceRefs() {
            return resourceRefs;
        }

        public GerResourceEnvRefType[] getResourceEnvRefs() {
            return resourceEnvRefs;
        }

    }
}
TOP

Related Classes of org.apache.geronimo.naming.deployment.ENCHelper$XmlEnvRefs

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.