Search in sources :

Example 11 with Descriptor

use of org.glassfish.deployment.common.Descriptor in project Payara by payara.

the class PrimekeyFieldPersistentFields method check.

/**
 * The primkey-field must be one of the fields declared in the cmp-field
 * elements.
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    // cmp-field elements
    if (descriptor instanceof EjbEntityDescriptor) {
        String persistence = ((EjbEntityDescriptor) descriptor).getPersistenceType();
        if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) {
            try {
                // do i need to use this to help determine single vs. multiple
                // object finders, etc.
                String primkey = ((EjbEntityDescriptor) descriptor).getPrimaryKeyClassName();
                if (primkey.equals("java.lang.String")) {
                    try {
                        FieldDescriptor primField = ((EjbCMPEntityDescriptor) descriptor).getPrimaryKeyFieldDesc();
                        // primField must exist in order to be valid & pass test
                        Descriptor persistentField;
                        Field field;
                        Set persistentFields = ((EjbCMPEntityDescriptor) descriptor).getPersistenceDescriptor().getCMPFields();
                        Iterator iterator = persistentFields.iterator();
                        boolean foundMatch = false;
                        while (iterator.hasNext()) {
                            persistentField = (Descriptor) iterator.next();
                            if (primField != null) {
                                if (primField.getName().equals(persistentField.getName())) {
                                    foundMatch = true;
                                    break;
                                } else {
                                    continue;
                                }
                            } else {
                                // should already be set, can't ever be in cmp
                                // fields if primField doesn't exist
                                foundMatch = false;
                                break;
                            }
                        }
                        if (foundMatch) {
                            result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                            result.passed(smh.getLocalString(getClass().getName() + ".passed", "Primary key field [ {0} ] is defined within set of container managed fields for bean [ {1} ]", new Object[] { primField.getName(), descriptor.getName() }));
                        } else {
                            if (primField != null) {
                                result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                                result.failed(smh.getLocalString(getClass().getName() + ".failed", "Primary key field [ {0} ] is not defined within set of container managed fields for bean [ {1} ]", new Object[] { primField.getName(), descriptor.getName() }));
                            } else {
                                // not failed
                                try {
                                    if (((EjbEntityDescriptor) descriptor).getPrimaryKeyClassName().equals("java.lang.Object")) {
                                        result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                                        result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable2", "Primkey field not defined for [ {0} ] bean.", new Object[] { descriptor.getName() }));
                                    } else {
                                        result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                                        result.failed(smh.getLocalString(getClass().getName() + ".failed1", "Primary key field is not defined within set of container managed fields for bean [ {0} ]", new Object[] { descriptor.getName() }));
                                    }
                                } catch (NullPointerException e) {
                                    result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                                    result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable2", "Primkey field not defined for [ {0} ] bean.", new Object[] { descriptor.getName() }));
                                }
                            }
                        }
                    } catch (NullPointerException e) {
                        result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                        result.failed(smh.getLocalString(getClass().getName() + ".failed2", "Error: Primary Key Field must be defined for bean [ {0} ] with primary key class set to [ {1} ]", new Object[] { descriptor.getName(), primkey }));
                    }
                } else {
                    result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                    result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable3", "primkey [ {0} ] is not java.lang.String for bean [ {1} ]", new Object[] { primkey, descriptor.getName() }));
                }
            } catch (NullPointerException e) {
                result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable2", "Primkey field not defined for [ {0} ] bean.", new Object[] { descriptor.getName() }));
            }
        } else {
            result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable1", "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence", new Object[] { EjbEntityDescriptor.CONTAINER_PERSISTENCE, descriptor.getName(), persistence }));
        }
    } else {
        result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
        result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "{0} expected \n {1} bean, but called with {2} bean", new Object[] { getClass(), "Entity", "Session" }));
    }
    return result;
}
Also used : Set(java.util.Set) Result(com.sun.enterprise.tools.verifier.Result) FieldDescriptor(org.glassfish.ejb.deployment.descriptor.FieldDescriptor) EjbEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor) Field(java.lang.reflect.Field) Iterator(java.util.Iterator) EjbEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor) EjbCMPEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor) Descriptor(org.glassfish.deployment.common.Descriptor) EjbDescriptor(org.glassfish.ejb.deployment.descriptor.EjbDescriptor) FieldDescriptor(org.glassfish.ejb.deployment.descriptor.FieldDescriptor) EjbCMPEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor)

Example 12 with Descriptor

use of org.glassfish.deployment.common.Descriptor in project Payara by payara.

the class PersistenceFieldsElement method check.

/**
 * Container-managed fields test.
 * If the enterprise bean is a Entity Bean  w/Container managed persistence
 * the Bean provider must specify container managed fields in the
 * "persistent-fields" element.
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    if (descriptor instanceof EjbEntityDescriptor) {
        String persistentType = ((EjbEntityDescriptor) descriptor).getPersistenceType();
        if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistentType)) {
            // this test apply only to 1.x cmp beans, in 2.x fields are virtual fields only
            if (EjbCMPEntityDescriptor.CMP_1_1 != ((EjbCMPEntityDescriptor) descriptor).getCMPVersion()) {
                result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CMPTest.notApplicable3", "Test do not apply to this cmp-version of container managed persistence EJBs"));
                return result;
            }
            logger.log(Level.FINE, getClass().getName() + ".debug1", new Object[] { persistentType });
            // RULE: Entity w/Container managed persistence bean provider must
            // specify container managed fields in the persistent-fields
            // element
            Set persistentFields = ((EjbCMPEntityDescriptor) descriptor).getPersistenceDescriptor().getCMPFields();
            Iterator iterator = persistentFields.iterator();
            // check class to see if fields actually exist
            try {
                VerifierTestContext context = getVerifierContext();
                ClassLoader jcl = context.getClassLoader();
                Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
                Descriptor persistentField;
                Field field;
                boolean oneFailed = false;
                while (iterator.hasNext()) {
                    persistentField = (Descriptor) iterator.next();
                    try {
                        field = c.getField(persistentField.getName());
                        result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                        result.passed(smh.getLocalString(getClass().getName() + ".passed", "[ {0} ] field found in [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), descriptor.getEjbClassName() }));
                    } catch (NoSuchFieldException e) {
                        result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                        result.failed(smh.getLocalString(getClass().getName() + ".failedException1", "Error: NoSuchFieldException: [ {0} ] not found in [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), descriptor.getEjbClassName() }));
                        if (!oneFailed) {
                            oneFailed = true;
                        }
                    } catch (SecurityException e) {
                        result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                        result.failed(smh.getLocalString(getClass().getName() + ".failedException2", "Error: SecurityException: [ {0} ] not found in [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), descriptor.getEjbClassName() }));
                        if (!oneFailed) {
                            oneFailed = true;
                        }
                    }
                }
                if (oneFailed) {
                    result.setStatus(Result.FAILED);
                } else {
                    result.setStatus(Result.PASSED);
                }
            } catch (ClassNotFoundException e) {
                Verifier.debug(e);
                result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.failed(smh.getLocalString(getClass().getName() + ".failedException3", "Error: Fields don't exist or are not loadable within bean [ {0} ]", new Object[] { descriptor.getName() }));
            }
        } else if (EjbEntityDescriptor.BEAN_PERSISTENCE.equals(persistentType)) {
            result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable1", "Expected persistence type [ {0} ], but [ {1} ] bean has persistence type [ {2} ]", new Object[] { EjbEntityDescriptor.CONTAINER_PERSISTENCE, descriptor.getName(), persistentType }));
        } else {
            result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.failed(smh.getLocalString(getClass().getName() + ".failed", "Error: [ {0} ] is not valid persistentType within bean [ {1} ]", new Object[] { persistentType, descriptor.getName() }));
        }
        return result;
    } else {
        result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
        result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "[ {0} ] expected {1} bean, but called with {2} bean.", new Object[] { getClass(), "Entity", "Session" }));
        return result;
    }
}
Also used : Set(java.util.Set) VerifierTestContext(com.sun.enterprise.tools.verifier.VerifierTestContext) Result(com.sun.enterprise.tools.verifier.Result) EjbEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor) Field(java.lang.reflect.Field) Iterator(java.util.Iterator) EjbEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor) EjbCMPEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor) Descriptor(org.glassfish.deployment.common.Descriptor) EjbDescriptor(org.glassfish.ejb.deployment.descriptor.EjbDescriptor) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor)

Example 13 with Descriptor

use of org.glassfish.deployment.common.Descriptor in project Payara by payara.

the class CmpFields method runIndividualCmpFieldTest.

/**
 * run an individual verifier test of a declated cmp field of the class
 *
 * @param entity the descriptor for the entity bean containing the cmp-field
 * @param f the descriptor for the declared cmp field
 * @param c the class owning the cmp field
 * @parma r the result object to use to put the test results in
 *
 * @return true if the test passed
 */
protected boolean runIndividualCmpFieldTest(Descriptor entity, Descriptor persistentField, Class c, Result result) {
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    String cmpFieldName = persistentField.getName();
    String getMethodName = "get" + Character.toUpperCase(cmpFieldName.charAt(0)) + cmpFieldName.substring(1);
    Method getMethod = getMethod(c, getMethodName, null);
    Class fieldType;
    if (getMethod != null) {
        boolean run = false;
        // get the return type for the setMethod
        fieldType = getMethod.getReturnType();
        EjbBundleDescriptorImpl bundle = ((EjbDescriptor) entity).getEjbBundleDescriptor();
        if (!RmiIIOPUtils.isValidRmiIDLPrimitiveType(fieldType) && !EjbUtils.isValidSerializableType(fieldType)) {
            // it must be a reference to a bean's home or local interface
            if (!isValidInterface(fieldType, bundle.getEjbs(), MethodDescriptor.EJB_REMOTE, result)) {
                result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error : Invalid type assigned for container managed field [ {0} ] in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), entity.getName() }));
                return false;
            }
            if (!isValidInterface(fieldType, bundle.getEjbs(), MethodDescriptor.EJB_LOCAL, result)) {
                result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error : Invalid type assigned for container managed field [ {0} ] in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), entity.getName() }));
                return false;
            }
        }
        result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
        result.addGoodDetails(smh.getLocalString(getClass().getName() + ".passed", "Valid type assigned for container managed field [ {0} ] in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), entity.getName() }));
        run = true;
        return run;
    } else {
        result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
        result.addErrorDetails(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CMPTest.isAccessorDeclared.failed2", "Error : Cannot find accessor [ {0} ] method for [ {1} ] field ", new Object[] { getMethodName, persistentField.getName() }));
    }
    return false;
}
Also used : MethodDescriptor(com.sun.enterprise.deployment.MethodDescriptor) Descriptor(org.glassfish.deployment.common.Descriptor) EjbDescriptor(org.glassfish.ejb.deployment.descriptor.EjbDescriptor) Method(java.lang.reflect.Method) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) EjbDescriptor(org.glassfish.ejb.deployment.descriptor.EjbDescriptor) EjbBundleDescriptorImpl(org.glassfish.ejb.deployment.descriptor.EjbBundleDescriptorImpl)

Example 14 with Descriptor

use of org.glassfish.deployment.common.Descriptor in project Payara by payara.

the class CmpFieldTest method check.

/**
 * Container-managed persistent fields test, iterates over all declared
 * cmp fields and invoke the runIndividualCmpFieldTest nethod
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbCMPEntityDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    Class c = loadEjbClass(descriptor, result);
    if (c != null) {
        Descriptor persistentField;
        boolean oneFailed = false;
        Set persistentFields = descriptor.getPersistenceDescriptor().getCMPFields();
        Iterator iterator = persistentFields.iterator();
        if (iterator.hasNext()) {
            while (iterator.hasNext()) {
                persistentField = (Descriptor) iterator.next();
                boolean status = runIndividualCmpFieldTest(descriptor, persistentField, c, result);
                if (!status)
                    oneFailed = true;
            }
            if (oneFailed) {
                result.setStatus(Result.FAILED);
            } else {
                result.setStatus(Result.PASSED);
            }
        } else {
            result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmpFieldTest.notApplicable", "Not Applicable : The EJB has no CMP fields declared", new Object[] {}));
        }
    }
    return result;
}
Also used : Set(java.util.Set) Iterator(java.util.Iterator) EjbCMPEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor) Descriptor(org.glassfish.deployment.common.Descriptor) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 15 with Descriptor

use of org.glassfish.deployment.common.Descriptor in project Payara by payara.

the class ApplicationValidator method validateResourceDescriptor.

/**
 * Method to read complete application and all defined descriptor for given app. Method is used to identify
 * scope and validation for all defined jndi names at different namespace.
 * @param application
 * @return
 */
public boolean validateResourceDescriptor(Application application) {
    /*
     * Below final String is the prefix which I am appending with each module
     * name to avoid duplicates. In ejblite case application name, ejb bundle
     * name and web bundle name always returns the same name if not specified.
     * So my validation fails so to avoid the same appending difference prefix
     * with each module name.
     * 
     * For two ejb-jar.xml in two different modules as part of the ear, they
     * must have unique module names (this is per spec requirement), so the
     * module scoped resources just needs to be unique within their modules. So
     * in that case all bundle name must be unique so appending extra string is
     * not fail anything.
     * 
     * It is used for internal reference only.
     */
    final String APP_LEVEL = "AppLevel:";
    final String EJBBUNDLE_LEVEL = "EBDLevel:";
    final String EJB_LEVEL = "EJBLevel:";
    final String APPCLIENTBUNDLE_LEVEL = "ACDevel:";
    final String APPCLIENT_LEVEL = "ACLevel:";
    final String WEBBUNDLE_LEVEL = "WBDLevel:";
    Set<EnvironmentProperty> environmentProperties = application.getEnvironmentProperties();
    for (EnvironmentProperty environmentProperty : environmentProperties) {
        String jndiName = environmentProperty.getName();
        if (environmentProperty.hasLookupName()) {
            jndiName = environmentProperty.getLookupName();
        } else if (environmentProperty.getMappedName().length() > 0) {
            jndiName = environmentProperty.getMappedName();
        }
        if (jndiName.startsWith(JNDI_COMP) || jndiName.startsWith(JNDI_MODULE)) {
            inValidJndiName = jndiName;
            return false;
        }
    }
    // Reads resource definition descriptor at application level
    CommonResourceBundleDescriptor commonResourceBundleDescriptor = (CommonResourceBundleDescriptor) application;
    Vector appLevel = new Vector();
    if (commonResourceBundleDescriptor != null) {
        Set<ResourceDescriptor> resourceDescriptors = commonResourceBundleDescriptor.getAllResourcesDescriptors();
        if (findExistingDescriptors(resourceDescriptors, APP_LEVEL + commonResourceBundleDescriptor.getName())) {
            return false;
        }
        appLevel.add(APP_LEVEL + commonResourceBundleDescriptor.getName());
        validNameSpaceDetails.put(APP_KEYS, appLevel);
    }
    // Reads resource definition descriptor at application-client level
    Set<ApplicationClientDescriptor> appClientDescs = application.getBundleDescriptors(ApplicationClientDescriptor.class);
    Vector appClientLevel = new Vector();
    for (ApplicationClientDescriptor acd : appClientDescs) {
        Set<ResourceDescriptor> resourceDescriptors = acd.getAllResourcesDescriptors(ApplicationClientDescriptor.class);
        if (findExistingDescriptors(resourceDescriptors, APPCLIENTBUNDLE_LEVEL + acd.getName())) {
            return false;
        }
        appClientLevel.add(APPCLIENTBUNDLE_LEVEL + acd.getName());
    }
    validNameSpaceDetails.put(APPCLIENT_KEYS, appClientLevel);
    // Reads resource definition descriptor at connector level
    Set<ConnectorDescriptor> connectorDescs = application.getBundleDescriptors(ConnectorDescriptor.class);
    Vector cdLevel = new Vector();
    for (ConnectorDescriptor cd : connectorDescs) {
        Set<ResourceDescriptor> resourceDescriptors = cd.getAllResourcesDescriptors(ApplicationClientDescriptor.class);
        if (findExistingDescriptors(resourceDescriptors, APPCLIENT_LEVEL + cd.getName())) {
            return false;
        }
        cdLevel.add(APPCLIENT_LEVEL + cd.getName());
    }
    validNameSpaceDetails.put(CONNECTOR_KEYS, cdLevel);
    // Reads resource definition descriptor at ejb-bundle level
    Set<EjbBundleDescriptor> ejbBundleDescs = application.getBundleDescriptors(EjbBundleDescriptor.class);
    Vector ebdLevel = new Vector();
    Vector edLevel = new Vector();
    for (EjbBundleDescriptor ebd : ejbBundleDescs) {
        Set<ResourceDescriptor> resourceDescriptors = ebd.getAllResourcesDescriptors();
        if (findExistingDescriptors(resourceDescriptors, EJBBUNDLE_LEVEL + ebd.getName())) {
            return false;
        }
        ebdLevel.add(EJBBUNDLE_LEVEL + ebd.getName());
        // Reads resource definition descriptor at ejb level
        Set<EjbDescriptor> ejbDescriptors = (Set<EjbDescriptor>) ebd.getEjbs();
        for (Iterator itr = ejbDescriptors.iterator(); itr.hasNext(); ) {
            EjbDescriptor ejbDescriptor = (EjbDescriptor) itr.next();
            resourceDescriptors = ejbDescriptor.getAllResourcesDescriptors();
            if (findExistingDescriptors(resourceDescriptors, EJB_LEVEL + ebd.getName() + "#" + ejbDescriptor.getName())) {
                return false;
            }
            edLevel.add(EJB_LEVEL + ebd.getName() + "#" + ejbDescriptor.getName());
        }
    }
    validNameSpaceDetails.put(EJBBUNDLE_KEYS, ebdLevel);
    validNameSpaceDetails.put(EJB_KEYS, edLevel);
    // Reads resource definition descriptor at web-bundle level
    Set<WebBundleDescriptor> webBundleDescs = application.getBundleDescriptors(WebBundleDescriptor.class);
    Vector wbdLevel = new Vector();
    for (WebBundleDescriptor wbd : webBundleDescs) {
        Set<ResourceDescriptor> resourceDescriptors = wbd.getAllResourcesDescriptors();
        if (findExistingDescriptors(resourceDescriptors, WEBBUNDLE_LEVEL + wbd.getName())) {
            return false;
        }
        wbdLevel.add(WEBBUNDLE_LEVEL + wbd.getName());
    }
    validNameSpaceDetails.put(WEBBUNDLE_KEYS, wbdLevel);
    for (CommonResourceValidator rv : allResourceDescriptors.values()) {
        Descriptor desc = rv.getDescriptor();
        if (desc instanceof AbstractConnectorResourceDescriptor) {
            AbstractConnectorResourceDescriptor acrd = (AbstractConnectorResourceDescriptor) desc;
            if (acrd.getResourceAdapter() == null) {
                continue;
            }
            int poundIndex = acrd.getResourceAdapter().indexOf("#");
            if (poundIndex == 0) {
                // the resource adapter name is of the format "#xxx", it is an
                // embedded resource adapter
                acrd.setResourceAdapter(application.getName() + acrd.getResourceAdapter());
            } else if (poundIndex < 0) {
            // the resource adapter name do not contains # symbol, it is a
            // standalone resource adapter
            } else if (poundIndex > 0) {
                // the resource adapter name is of the format "xx#xxx", this is an
                // invalid name
                deplLogger.log(Level.SEVERE, RESOURCE_ADAPTER_NAME_INVALID, new Object[] { application.getAppName(), acrd.getName(), acrd.getResourceAdapter() });
                return false;
            }
        }
    }
    // or not
    if (allUniqueResource) {
        return compareDescriptors();
    }
    return allUniqueResource;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) Iterator(java.util.Iterator) ModuleDescriptor(org.glassfish.deployment.common.ModuleDescriptor) Descriptor(org.glassfish.deployment.common.Descriptor)

Aggregations

Descriptor (org.glassfish.deployment.common.Descriptor)17 EjbDescriptor (com.sun.enterprise.deployment.EjbDescriptor)5 ComponentNameConstructor (com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor)5 Iterator (java.util.Iterator)5 Set (java.util.Set)5 Result (com.sun.enterprise.tools.verifier.Result)4 RootDeploymentDescriptor (org.glassfish.deployment.common.RootDeploymentDescriptor)4 EjbCMPEntityDescriptor (org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor)4 EjbDescriptor (org.glassfish.ejb.deployment.descriptor.EjbDescriptor)4 EjbBundleDescriptor (com.sun.enterprise.deployment.EjbBundleDescriptor)3 LifecycleCallbackDescriptor (com.sun.enterprise.deployment.LifecycleCallbackDescriptor)3 Field (java.lang.reflect.Field)3 EjbEntityDescriptor (org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor)3 BundleDescriptor (com.sun.enterprise.deployment.BundleDescriptor)2 EjbInterceptor (com.sun.enterprise.deployment.EjbInterceptor)2 EjbReferenceDescriptor (com.sun.enterprise.deployment.EjbReferenceDescriptor)2 ManagedBeanDescriptor (com.sun.enterprise.deployment.ManagedBeanDescriptor)2 ServiceReferenceDescriptor (com.sun.enterprise.deployment.ServiceReferenceDescriptor)2 VerifierTestContext (com.sun.enterprise.tools.verifier.VerifierTestContext)2 ModuleDescriptor (org.glassfish.deployment.common.ModuleDescriptor)2