Package com.sun.enterprise.tools.verifier.tests.dd

Source Code of com.sun.enterprise.tools.verifier.tests.dd.ParseDD

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License").  You
* may not use this file except in compliance with the License.  You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt.  See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license."  If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above.  However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/

package com.sun.enterprise.tools.verifier.tests.dd;

import com.sun.enterprise.deployment.EjbSessionDescriptor;
import com.sun.enterprise.tools.verifier.Result;
import com.sun.enterprise.tools.verifier.StringManagerHelper;
import com.sun.enterprise.tools.verifier.tests.VerifierTest;
import com.sun.enterprise.tools.verifier.util.LogDomains;
import com.sun.enterprise.tools.verifier.util.XMLValidationHandler;
import org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
* <p>
* This test parses the deployment descriptor using a SAX parser to
* avoid the dependency on the DOL
* <p>
*
* @author  Sheetal Vartak
* @version
*/

public class ParseDD extends VerifierTest {
    DocumentBuilder builder = null;
    Result result;
    private com.sun.enterprise.util.LocalStringManagerImpl smh;
    boolean oneFailed = false;
    private static String EJB = "EJB Deployment Descriptor";
    private static String APPCLIENT = "App Client Deployment Descriptor";
    private static String CONNECTOR = "Connector Deployment Descriptor";
    private static String WEB = "Web Deployment Descriptor";

    // Logger to log messages
    private static Logger logger = LogDomains.getLogger(LogDomains.AVK_VERIFIER_LOGGER);


    /**
      * <p>
      * This test parses the deployment descriptor using a SAX parser to
      * avoid the dependency on the DOL
      * <p>
      */

    public ParseDD () {
  result = getInitializedResult();
  smh = StringManagerHelper.getLocalStringsManager();
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  try {
       factory.setAttribute("http://apache.org/xml/features/allow-java-encodings", new Boolean(true));
      builder = factory.newDocumentBuilder();
      EntityResolver dh = new XMLValidationHandler(false);
      builder.setEntityResolver(dh);
  } catch (ParserConfigurationException e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed(smh.getLocalString
        (getClass().getName() + ".Exception",
         "Exception : {0}",
         new Object[] {e.toString()}));
  }catch (Exception e) {
            logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed(smh.getLocalString
        (getClass().getName() + ".Exception",
         "Exception : {0}",
         new Object[] {e.toString()}));
  }
    }


    /**
     * Parse validate the XML file
     *
     * @param source Input XML to be checked
     *
     */
    public Result validateConnectorDescriptor(InputStream source)
    {
  Document document = null;
  result = getInitializedResult();
  result.setComponentName(EJB);
  NodeList nodeList = null;
  try {
      if (source == null) {
    logger.log(Level.SEVERE,getClass().getName() + ".srcnull");
    result.failed
        (smh.getLocalString
         (getClass().getName() + ".NoIO",
          "no InputStream found",
          new Object[] {}));
    return result;
      }
      else {
    document = builder.parse(source);

    //license-required
    nodeList = document.getElementsByTagName("license-required");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("true")
          && !value.equals("false")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedLicense",
          "[Connector] license-required cannot be {0}. It has to be either true or false.",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedLicense",
          "PASSED[Connector]  : license-required is {0}.",
          new Object[] {value}));
      }
        }
    }

    //reauthentication-support
    nodeList = document.getElementsByTagName("reauthentication-support");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("true")
          && !value.equals("false")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedReauthenticationSupport",
          "[Connector] reauthentication-support cannot be {0}. It has to be either true or false.",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedReauthenticationSupport",
          "PASSED [Connector] : reauthentication-support is {0}.",
          new Object[] {value}));
      }
        }
    }

    //transaction-support
    nodeList = document.getElementsByTagName("transaction-support");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("NoTransaction")
          && !value.equals("LocalTransaction")
          && !value.equals("XATransaction")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedTransactionSupport",
          "[Connector]transaction-support cannot be {0}. It has to be either NoTransaction or LocalTransaction or XATransaction.",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedTransactionSupport",
          "PASSED [Connector] : transaction-support is {0}.",
          new Object[] {value}));
      }
        }
    }
    if (result.getStatus() != Result.FAILED) {
        result.setStatus(Result.PASSED);
    }
    return result;
      }
  } catch (IOException e) {
            logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (SAXException e) {
            logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (Exception e) {
           logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  }
    }

    /**
     * Parse validate the XML file
     *
     * @param source Input XML to be checked
     *
     */
    public Result validateAppClientDescriptor(InputStream source)
    {
  Document document = null;
  result = getInitializedResult();
  result.setComponentName(EJB);
  NodeList nodeList = null;
  try {
      if (source == null) {
    logger.log(Level.SEVERE,getClass().getName() + ".srcnull");
    result.failed
        (smh.getLocalString
         (getClass().getName() + ".NoIO",
          "no InputStream found",
          new Object[] {}));
    return result;
      }
      else {
    document = builder.parse(source);

    //ejb-ref-type
    nodeList = document.getElementsByTagName("ejb-ref-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String ejbRefTypeValue = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!ejbRefTypeValue.equals(EjbSessionDescriptor.TYPE)
          && !ejbRefTypeValue.equals(EjbEntityDescriptor.TYPE)) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedAppClientEjbRefType",
          "[App Client] ejb-ref-type cannot be {0}. It has to be either Entity or Session.",
          new Object[] {ejbRefTypeValue}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedAppClientEjbRefType",
          "PASSED [App Client] : ejb-ref-type is {0}.",
          new Object[] {ejbRefTypeValue}));
      }
        }
    }

    //res-auth
    nodeList = document.getElementsByTagName("res-auth");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Application")
          && !value.equals("Container")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedAppClientResAuth",
          "[App Client] res-auth cannot be {0}. It has to be either Application or Container",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedAppClientResAuth",
          "PASSED [App Client] : res-auth is {0}.",
          new Object[] {value}));
      }
        }
    }

    //res-sharing-scope
    nodeList = document.getElementsByTagName("res-sharing-scope");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Shareable")
          && !value.equals("Unshareable")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedAppClientResSharingScope",
          "[App Client] res-sharing-scope cannot be {0}. It has to be either Shareable or Unshareable",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedAppClientResSharingScope",
          "PASSED [App Client] : res-sharing-scope is {0}.",
          new Object[] {value}));
      }
        }
    }

    if (result.getStatus() != Result.FAILED) {
        result.setStatus(Result.PASSED);
    }
    return result;
      }
  } catch (IOException e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (SAXException e) {
           logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (Exception e) {
           logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  }
    }

    /**
     * Parse validate the XML file
     *
     * @param source Input XML to be checked
     *
     */
    public Result validateWebDescriptor(InputStream source)
    {
  Document document = null;
  result = getInitializedResult();
  result.setComponentName(EJB);
  NodeList nodeList = null;
  try {
      if (source == null) {
    logger.log(Level.SEVERE,getClass().getName() + ".srcnull");
    result.failed
        (smh.getLocalString
         (getClass().getName() + ".NoIO",
          "no InputStream found",
          new Object[] {}));
    return result;
      }
      else {
    document = builder.parse(source);

    //ejb-ref-type
    nodeList = document.getElementsByTagName("ejb-ref-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String ejbRefTypeValue = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!ejbRefTypeValue.equals(EjbSessionDescriptor.TYPE)
          && !ejbRefTypeValue.equals(EjbEntityDescriptor.TYPE)) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedWebEjbRefType",
          "[Web] ejb-ref-type cannot be {0}. It has to be either Entity or Session.",
          new Object[] {ejbRefTypeValue}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedWebEjbRefType",
          "PASSED [Web] : ejb-ref-type is {0}.",
          new Object[] {ejbRefTypeValue}));
      }
        }
    }

    //res-auth
    nodeList = document.getElementsByTagName("res-auth");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Application")
          && !value.equals("Container")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedWebResAuth",
          "[Web] res-auth cannot be {0}. It has to be either Application or Container",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedWebResAuth",
          "PASSED[Web]  : res-auth is {0}.",
          new Object[] {value}));
      }
        }
    }

    //res-sharing-scope
    nodeList = document.getElementsByTagName("res-sharing-scope");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Shareable")
          && !value.equals("Unshareable")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedWebResSharingScope",
          "[Web] res-sharing-scope cannot be {0}. It has to be either Shareable or Unshareable",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedWebResSharingScope",
          "PASSED [Web] : res-sharing-scope is {0}.",
          new Object[] {value}));
      }
        }
    }

    if (result.getStatus() != Result.FAILED) {
        result.setStatus(Result.PASSED);
    }
    return result;
      }
  } catch (IOException e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (SAXException e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (Exception e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  }
    }


    /**
     * Parse validate the XML file
     *
     * @param source Input XML to be checked
     *
     */
    public Result validateEJBDescriptor(InputStream source)
    {
  Document document = null;
  result = getInitializedResult();
  result.setComponentName(EJB);
  NodeList nodeList = null;
  try {
      if (source == null) {
    logger.log(Level.SEVERE, getClass().getName() + ".srcnull");
    result.failed
        (smh.getLocalString
         (getClass().getName() + ".NoIO",
          "no InputStream found",
          new Object[] {}));
    return result;
      }
      else {
    document = builder.parse(source);

    checkInterfacePairs(document, "remote", "home");
    checkInterfacePairs(document, "local", "local-home");

    //session-type
    nodeList = document.getElementsByTagName("session-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String sessionTypeValue = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!sessionTypeValue.equals(EjbSessionDescriptor.STATELESS)
          && !sessionTypeValue.equals(EjbSessionDescriptor.STATEFUL)) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedSession",
          "session-type cannot be {0}. It has to be either Stateless or Stateful.",
          new Object[] {sessionTypeValue}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedSession",
          "PASSED : session-type is {0}.",
          new Object[] {sessionTypeValue}));
      }

        }
    }

    //ejb-ref-type
    nodeList = document.getElementsByTagName("ejb-ref-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String ejbRefTypeValue = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!ejbRefTypeValue.equals(EjbSessionDescriptor.TYPE)
          && !ejbRefTypeValue.equals(EjbEntityDescriptor.TYPE)) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedEjbRefType",
          "[EJB] ejb-ref-type cannot be {0}. It has to be either Entity or Session.",
          new Object[] {ejbRefTypeValue}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedEjbRefType",
          "PASSED [EJB] : ejb-ref-type is {0}.",
          new Object[] {ejbRefTypeValue}));
      }

        }
    }

    //multiplicity
    nodeList = document.getElementsByTagName("multiplicity");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String multiplicityValue = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!multiplicityValue.equals("One")
          && !multiplicityValue.equals("Many")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedMultiplicity",
          "[EJB] multiplicity cannot be {0}. It has to be either One or Many",
          new Object[] {multiplicityValue}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedMultiplicity",
          "PASSED [EJB] : multiplicity is {0}.",
          new Object[] {multiplicityValue}));
      }

        }
    }

    //cmp-version
    nodeList = document.getElementsByTagName("cmp-version");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("1.x")
          && !value.equals("2.x")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedVersion",
          "[EJB] version cannot be {0}. It has to be either 1.x or 2.x",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedVersion",
          "PASSED [EJB] : version is {0}.",
          new Object[] {value}));
      }

        }
    }

    //destination-type
    nodeList = document.getElementsByTagName("destination-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("javax.jms.Queue")
          && !value.equals("javax.jms.Topic")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedDestinationType",
          "[EJB] destination-type cannot be {0}. It has to be either javax.jms.Topic or javax.jms.Queue",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedDestinationType",
          "PASSED [EJB] : destination-type is {0}.",
          new Object[] {value}));
      }
        }
    }
    //method-intf
    nodeList = document.getElementsByTagName("method-intf");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Home")
          && !value.equals("Remote")
          && !value.equals("LocalHome")
          && !value.equals("Local")
          && !value.equals("ServiceEndpoint")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedMethodIntf",
          "[EJB] method-intf cannot be [ {0} ]. It has to be either Local, Remote, LocalHome or Home or ServiceEndpoint",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedMethodIntf",
          "PASSED [EJB] : method-intf is {0}.",
          new Object[] {value}));
      }
        }
    }
    //persistence-type
    nodeList = document.getElementsByTagName("persistence-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Bean")
          && !value.equals("Container")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedPersistenceType",
          "[EJB] persistence-type cannot be {0}. It has to be either Bean or Container",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedPersistenceType",
          "PASSED [EJB] : persistence-type is {0}.",
          new Object[] {value}));
      }
        }
    }

    //reentrant
    nodeList = document.getElementsByTagName("reentrant");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("True")
          && !value.equals("False")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedReentrant",
          "[EJB] reentrant cannot be {0}. It has to be either True or False",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedReentrant",
          "PASSED [EJB] : reentrant is {0}.",
          new Object[] {value}));
      }
        }
    }

    //res-auth
    nodeList = document.getElementsByTagName("res-auth");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Application")
          && !value.equals("Container")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedEjbResAuth",
          "[EJB] res-auth cannot be {0}. It has to be either Application or Container",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedEjbResAuth",
          "PASSED [EJB] : res-auth is {0}.",
          new Object[] {value}));
      }
        }
    }

    //result-type-mapping
    nodeList = document.getElementsByTagName("result-type-mapping");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Local")
          && !value.equals("Remote")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedResultTypeMapping",
          "[EJB] result-type-mapping cannot be {0}. It has to be either Remote or Local",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedResultTypeMapping",
          "PASSED [EJB] : result-type-mapping is {0}.",
          new Object[] {value}));
      }
        }
    }

    //subscription-durability
    nodeList = document.getElementsByTagName("subscription-durability");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Durable")
          && !value.equals("NonDurable")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedSubscriptionDurability",
          "[EJB] subscription-durability cannot be {0}. It has to be either Durable or NonDurable",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedSubscriptionDurability",
          "PASSED [EJB] : subscription-durability is {0}.",
          new Object[] {value}));
      }
        }
    }
    //trans-attribute
    nodeList = document.getElementsByTagName("trans-attribute");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("NotSupported")
          && !value.equals("Supports")
          && !value.equals("Required")
          && !value.equals("RequiresNew")
          && !value.equals("Mandatory")
          && !value.equals("Never")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedTransAttribute",
          "[EJB] trans-attribute cannot be {0}. It has to be either NotSupported or Supports or Required or RequiresNew or Mandatory or Never.",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedTransAttribute",
          "PASSED [EJB]: trans-attribute is {0}.",
          new Object[] {value}));
      }
        }
    }

    //transaction-type
    nodeList = document.getElementsByTagName("transaction-type");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Bean")
          && !value.equals("Container")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedTransactionType",
          "[EJB] transaction-type cannot be {0}. It has to be either Bean or Container",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedTransactionType",
          "PASSED [EJB]: transaction-type is {0}.",
          new Object[] {value}));
      }
        }
    }

    //acknowledge-mode
    nodeList = document.getElementsByTagName("acknowledge-mode");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Auto-acknowledge")
          && !value.equals("Dups-ok-acknowledge")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedAcknowledgeMode",
          "[EJB] acknowledge-mode cannot be {0}. It has to be either True or False",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedAcknowledgeMode",
          "PASSED [EJB]: acknowledge-mode is {0}.",
          new Object[] {value}));
      }
        }
    }

    //res-sharing-scope
    nodeList = document.getElementsByTagName("res-sharing-scope");
    if (nodeList != null) {
        for (int i = 0; i < nodeList.getLength(); i++) {
      String value = ((Text)nodeList.item(i).getFirstChild()).getNodeValue();
      if (!value.equals("Shareable")
          && !value.equals("Unshareable")) {
          result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedEjbResSharingScope",
          "[EJB] res-sharing-scope cannot be {0}. It has to be either Shareable or Unshareable",
          new Object[] {value}));
          oneFailed = true;
      }
      else {
          result.addGoodDetails
        (smh.getLocalString
         (getClass().getName() + ".passedEjbResSharingScope",
          "PASSED [EJB] : res-sharing-scope is {0}.",
          new Object[] {value}));
      }
        }
    }


    if (result.getStatus() != Result.FAILED) {
        result.setStatus(Result.PASSED);
    }
    return result;
      }
  } catch (IOException e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (SAXException e) {
      logger.log(Level.SEVERE,getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  } catch (Exception e) {
      logger.log(Level.SEVERE, getClass().getName() + ".Exception",
        new Object[] {e.toString()});
      result.failed
    (smh.getLocalString
     (getClass().getName() + ".Exception",
      "Exception : {0}",
      new Object[] {e.toString()}));
      return result;
  }
    }

    public void checkInterfacePairs(Document document, String intf1, String intf2) {
        //check if "local" and "local-home" are both present
        //similarly for "remote" and "remote-home"

        int length1 = 0;
  int length2 = 0;
        NodeList nodeList = document.getElementsByTagName(intf1.trim());
  if (nodeList != null) {
      length1 = nodeList.getLength();

  }
  nodeList = document.getElementsByTagName(intf2.trim());
  if (nodeList != null) {
      length2 = nodeList.getLength();

  }
 
  if (length1 == length2) {
      if (length1 != 0) {
          result.addGoodDetails
      (smh.getLocalString
       (getClass().getName() + ".passedPairs",
        "PASSED [EJB] : [ {0} ] and [ {1} ] tags present.",
        new Object[] {intf1, intf2}));
      }
  } else {
      result.failed
        (smh.getLocalString
         (getClass().getName() + ".failedPairs",
    "FAILED [EJB] : Either one of the [ {0} ] : [ {1} ] tag pair is not present.",
    new Object[] {intf1, intf2}));
  }
 
    }

}
TOP

Related Classes of com.sun.enterprise.tools.verifier.tests.dd.ParseDD

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.