Search in sources :

Example 1 with ResourceEnvReferenceDescriptor

use of com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor in project Payara by payara.

the class EnvEntriesValidator method validateEnvEntry.

private void validateEnvEntry(JndiNameEnvironment env, Object curEntry, String name) {
    String logicalJndiName = getLogicalJNDIName(name, env);
    Map namespace = getNamespace(logicalJndiName, env);
    Object preObject = namespace.get(logicalJndiName);
    if (preObject != null) {
        if (preObject instanceof SimpleEnvEntry && curEntry instanceof SimpleEnvEntry) {
            SimpleEnvEntry preEnvEntry = (SimpleEnvEntry) preObject;
            SimpleEnvEntry curEnvEntry = (SimpleEnvEntry) curEntry;
            if (areConflicting(preEnvEntry.getType(), curEnvEntry.getType()) || areConflicting(preEnvEntry.getValue(), curEnvEntry.getValue())) {
                throwConflictException(name, namespace.toString());
            }
        } else if (preObject instanceof EjbReference && curEntry instanceof EjbReference) {
            EjbReference preRef = (EjbReference) preObject;
            EjbReference curRef = (EjbReference) curEntry;
            if (areConflicting(preRef.getType(), curRef.getType()) || areConflicting(preRef.getEjbHomeInterface(), curRef.getEjbHomeInterface()) || areConflicting(preRef.getEjbInterface(), curRef.getEjbInterface()) || // link name is optional. compare only when they are both not null.
            ((preRef.getLinkName() != null && curRef.getLinkName() != null && !preRef.getLinkName().equals(curRef.getLinkName()))) || (preRef.isLocal() != curRef.isLocal()) || areConflicting(preRef.getLookupName(), curRef.getLookupName())) {
                throwConflictException(name, namespace.toString());
            }
        } else if (preObject instanceof ResourceReferenceDescriptor && curEntry instanceof ResourceReferenceDescriptor) {
            ResourceReferenceDescriptor preRef = (ResourceReferenceDescriptor) preObject;
            ResourceReferenceDescriptor curRef = (ResourceReferenceDescriptor) curEntry;
            if (areConflicting(preRef.getType(), curRef.getType()) || areConflicting(preRef.getAuthorization(), curRef.getAuthorization()) || areConflicting(preRef.getSharingScope(), curRef.getSharingScope()) || areConflicting(preRef.getMappedName(), curRef.getMappedName()) || areConflicting(preRef.getLookupName(), curRef.getLookupName())) {
                throwConflictException(name, namespace.toString());
            }
        } else if (preObject instanceof ResourceEnvReferenceDescriptor && curEntry instanceof ResourceEnvReferenceDescriptor) {
            ResourceEnvReferenceDescriptor preRef = (ResourceEnvReferenceDescriptor) preObject;
            ResourceEnvReferenceDescriptor curRef = (ResourceEnvReferenceDescriptor) curEntry;
            if (areConflicting(preRef.getType(), curRef.getType()) || areConflicting(preRef.getRefType(), curRef.getRefType()) || areConflicting(preRef.getMappedName(), curRef.getMappedName()) || areConflicting(preRef.getLookupName(), curRef.getLookupName())) {
                throwConflictException(name, namespace.toString());
            }
        } else {
            throwConflictException(name, namespace.toString());
        }
    } else {
        namespace.put(logicalJndiName, curEntry);
    }
}
Also used : EjbReference(com.sun.enterprise.deployment.types.EjbReference) ResourceEnvReferenceDescriptor(com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor) ResourceReferenceDescriptor(com.sun.enterprise.deployment.ResourceReferenceDescriptor) Map(java.util.Map) HashMap(java.util.HashMap)

Example 2 with ResourceEnvReferenceDescriptor

use of com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor in project Payara by payara.

the class WebBundleRuntimeNode method writeDescriptor.

/**
 * write the descriptor class to a DOM tree and return it
 *
 * @param parent node for the DOM tree
 * @param bundleDescriptor the descriptor to write
 * @return the DOM tree top node
 */
@Override
public Node writeDescriptor(Node parent, WebBundleDescriptorImpl bundleDescriptor) {
    Element web = (Element) super.writeDescriptor(parent, bundleDescriptor);
    SunWebAppImpl sunWebApp = (SunWebAppImpl) bundleDescriptor.getSunDescriptor();
    // context-root?
    appendTextChild(web, RuntimeTagNames.CONTEXT_ROOT, bundleDescriptor.getContextRoot());
    // security-role-mapping
    SecurityRoleMapping[] roleMappings = sunWebApp.getSecurityRoleMapping();
    if (roleMappings != null && roleMappings.length > 0) {
        SecurityRoleMappingNode srmn = new SecurityRoleMappingNode();
        for (SecurityRoleMapping roleMapping : roleMappings) {
            srmn.writeDescriptor(web, RuntimeTagNames.SECURITY_ROLE_MAPPING, roleMapping);
        }
    }
    // servlet
    Set servlets = bundleDescriptor.getServletDescriptors();
    org.glassfish.web.deployment.node.runtime.gf.ServletNode servletNode = new org.glassfish.web.deployment.node.runtime.gf.ServletNode();
    for (Iterator itr = servlets.iterator(); itr.hasNext(); ) {
        WebComponentDescriptor servlet = (WebComponentDescriptor) itr.next();
        servletNode.writeDescriptor(web, RuntimeTagNames.SERVLET, servlet);
    }
    // idempotent-url-pattern
    IdempotentUrlPattern[] patterns = sunWebApp.getIdempotentUrlPatterns();
    if (patterns != null && patterns.length > 0) {
        IdempotentUrlPatternNode node = new IdempotentUrlPatternNode();
        for (IdempotentUrlPattern pattern : patterns) {
            node.writeDescriptor(web, RuntimeTagNames.IDEMPOTENT_URL_PATTERN, pattern);
        }
    }
    // session-config?
    if (sunWebApp.getSessionConfig() != null) {
        SessionConfigNode scn = new SessionConfigNode();
        scn.writeDescriptor(web, RuntimeTagNames.SESSION_CONFIG, sunWebApp.getSessionConfig());
    }
    // ejb-ref*
    Set<EjbReference> ejbRefs = bundleDescriptor.getEjbReferenceDescriptors();
    if (ejbRefs.size() > 0) {
        EjbRefNode node = new EjbRefNode();
        for (EjbReference ejbRef : ejbRefs) {
            node.writeDescriptor(web, RuntimeTagNames.EJB_REF, ejbRef);
        }
    }
    // resource-ref*
    Set<ResourceReferenceDescriptor> resourceRefs = bundleDescriptor.getResourceReferenceDescriptors();
    if (resourceRefs.size() > 0) {
        ResourceRefNode node = new ResourceRefNode();
        for (ResourceReferenceDescriptor resourceRef : resourceRefs) {
            node.writeDescriptor(web, RuntimeTagNames.RESOURCE_REF, resourceRef);
        }
    }
    // resource-env-ref*
    Set<ResourceEnvReferenceDescriptor> resourceEnvRefs = bundleDescriptor.getResourceEnvReferenceDescriptors();
    if (resourceEnvRefs.size() > 0) {
        ResourceEnvRefNode node = new ResourceEnvRefNode();
        for (ResourceEnvReferenceDescriptor resourceEnvRef : resourceEnvRefs) {
            node.writeDescriptor(web, RuntimeTagNames.RESOURCE_ENV_REF, resourceEnvRef);
        }
    }
    // service-ref*
    if (bundleDescriptor.hasServiceReferenceDescriptors()) {
        ServiceRefNode serviceNode = new ServiceRefNode();
        for (ServiceReferenceDescriptor next : bundleDescriptor.getServiceReferenceDescriptors()) {
            serviceNode.writeDescriptor(web, WebServicesTagNames.SERVICE_REF, next);
        }
    }
    // message-destination-ref*
    MessageDestinationRefNode.writeMessageDestinationReferences(web, bundleDescriptor);
    // cache?
    Cache cache = sunWebApp.getCache();
    if (cache != null) {
        CacheNode cn = new CacheNode();
        cn.writeDescriptor(web, RuntimeTagNames.CACHE, cache);
    }
    // class-loader?
    ClassLoader classLoader = sunWebApp.getClassLoader();
    if (classLoader != null) {
        ClassLoaderNode cln = new ClassLoaderNode();
        cln.writeDescriptor(web, RuntimeTagNames.CLASS_LOADER, classLoader);
    }
    // jsp-config?
    if (sunWebApp.getJspConfig() != null) {
        WebPropertyNode propertyNode = new WebPropertyNode();
        Node jspConfig = appendChild(web, RuntimeTagNames.JSP_CONFIG);
        propertyNode.writeDescriptor(jspConfig, RuntimeTagNames.PROPERTY, sunWebApp.getJspConfig().getWebProperty());
    }
    // locale-charset-info?
    if (sunWebApp.getLocaleCharsetInfo() != null) {
        LocaleCharsetInfoNode localeNode = new LocaleCharsetInfoNode();
        localeNode.writeDescriptor(web, RuntimeTagNames.LOCALE_CHARSET_INFO, sunWebApp.getLocaleCharsetInfo());
    }
    // parameter-encoding?
    if (sunWebApp.isParameterEncoding()) {
        Element parameter = appendChild(web, RuntimeTagNames.PARAMETER_ENCODING);
        if (sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.FORM_HINT_FIELD) != null) {
            setAttribute(parameter, RuntimeTagNames.FORM_HINT_FIELD, sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.FORM_HINT_FIELD));
        }
        if (sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.DEFAULT_CHARSET) != null) {
            setAttribute(parameter, RuntimeTagNames.DEFAULT_CHARSET, sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.DEFAULT_CHARSET));
        }
    }
    // property*
    WebPropertyNode props = new WebPropertyNode();
    props.writeDescriptor(web, RuntimeTagNames.PROPERTY, sunWebApp.getWebProperty());
    // valve*
    if (sunWebApp.getValve() != null) {
        ValveNode valve = new ValveNode();
        valve.writeDescriptor(web, RuntimeTagNames.VALVE, sunWebApp.getValve());
    }
    // message-destination*
    RuntimeDescriptorNode.writeMessageDestinationInfo(web, bundleDescriptor);
    // webservice-description*
    WebServiceRuntimeNode webServiceNode = new WebServiceRuntimeNode();
    webServiceNode.writeWebServiceRuntimeInfo(web, bundleDescriptor);
    // error-url
    if (sunWebApp.getAttributeValue(SunWebApp.ERROR_URL) != null) {
        setAttribute(web, RuntimeTagNames.ERROR_URL, sunWebApp.getAttributeValue(SunWebApp.ERROR_URL));
    }
    // httpservlet-security-provider
    if (sunWebApp.getAttributeValue(SunWebApp.HTTPSERVLET_SECURITY_PROVIDER) != null) {
        setAttribute(web, RuntimeTagNames.HTTPSERVLET_SECURITY_PROVIDER, sunWebApp.getAttributeValue(SunWebApp.HTTPSERVLET_SECURITY_PROVIDER));
    }
    // keep-state
    appendTextChild(web, RuntimeTagNames.KEEP_STATE, String.valueOf(bundleDescriptor.getKeepState()));
    return web;
}
Also used : SunWebAppImpl(org.glassfish.web.deployment.runtime.SunWebAppImpl) Set(java.util.Set) XMLElement(com.sun.enterprise.deployment.node.XMLElement) Element(org.w3c.dom.Element) IdempotentUrlPattern(com.sun.enterprise.deployment.runtime.web.IdempotentUrlPattern) ServiceRefNode(com.sun.enterprise.deployment.node.runtime.ServiceRefNode) ResourceEnvRefNode(com.sun.enterprise.deployment.node.runtime.ResourceEnvRefNode) EjbRefNode(com.sun.enterprise.deployment.node.runtime.EjbRefNode) ServiceRefNode(com.sun.enterprise.deployment.node.runtime.ServiceRefNode) ResourceRefNode(com.sun.enterprise.deployment.node.runtime.ResourceRefNode) SecurityRoleMappingNode(com.sun.enterprise.deployment.node.runtime.common.SecurityRoleMappingNode) Node(org.w3c.dom.Node) RuntimeBundleNode(com.sun.enterprise.deployment.node.runtime.RuntimeBundleNode) RuntimeDescriptorNode(com.sun.enterprise.deployment.node.runtime.RuntimeDescriptorNode) MessageDestinationRefNode(com.sun.enterprise.deployment.node.runtime.MessageDestinationRefNode) MessageDestinationRuntimeNode(com.sun.enterprise.deployment.node.runtime.MessageDestinationRuntimeNode) WebServiceRuntimeNode(com.sun.enterprise.deployment.node.runtime.WebServiceRuntimeNode) WebBundleNode(org.glassfish.web.deployment.node.WebBundleNode) WebServiceRuntimeNode(com.sun.enterprise.deployment.node.runtime.WebServiceRuntimeNode) EjbRefNode(com.sun.enterprise.deployment.node.runtime.EjbRefNode) Iterator(java.util.Iterator) ClassLoader(org.glassfish.web.deployment.runtime.ClassLoader) ResourceReferenceDescriptor(com.sun.enterprise.deployment.ResourceReferenceDescriptor) SecurityRoleMapping(com.sun.enterprise.deployment.runtime.common.SecurityRoleMapping) ResourceRefNode(com.sun.enterprise.deployment.node.runtime.ResourceRefNode) ServiceReferenceDescriptor(com.sun.enterprise.deployment.ServiceReferenceDescriptor) SecurityRoleMappingNode(com.sun.enterprise.deployment.node.runtime.common.SecurityRoleMappingNode) EjbReference(com.sun.enterprise.deployment.types.EjbReference) WebComponentDescriptor(com.sun.enterprise.deployment.WebComponentDescriptor) ResourceEnvRefNode(com.sun.enterprise.deployment.node.runtime.ResourceEnvRefNode) ResourceEnvReferenceDescriptor(com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor) Cache(org.glassfish.web.deployment.runtime.Cache)

Example 3 with ResourceEnvReferenceDescriptor

use of com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor in project Payara by payara.

the class AppSpecificConnectorClassLoaderUtil method processDescriptorForRAReferences.

private void processDescriptorForRAReferences(com.sun.enterprise.deployment.Application app, String moduleName, JndiNameEnvironment jndiEnv) {
    // resource-ref
    for (Object resourceRef : jndiEnv.getResourceReferenceDescriptors()) {
        ResourceReferenceDescriptor resRefDesc = (ResourceReferenceDescriptor) resourceRef;
        String jndiName = resRefDesc.getJndiName();
        // ignore refs where jndi-name is not available
        if (jndiName != null) {
            detectResourceInRA(app, moduleName, jndiName);
        }
    }
    // resource-env-ref
    for (Object resourceEnvRef : jndiEnv.getResourceEnvReferenceDescriptors()) {
        ResourceEnvReferenceDescriptor resourceEnvRefDesc = (ResourceEnvReferenceDescriptor) resourceEnvRef;
        String jndiName = resourceEnvRefDesc.getJndiName();
        // ignore refs where jndi-name is not available
        if (jndiName != null) {
            detectResourceInRA(app, moduleName, jndiName);
        }
    }
}
Also used : ResourceEnvReferenceDescriptor(com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor) ResourceReferenceDescriptor(com.sun.enterprise.deployment.ResourceReferenceDescriptor)

Example 4 with ResourceEnvReferenceDescriptor

use of com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor in project Payara by payara.

the class EjbBundleTracerVisitor method accept.

protected void accept(EjbDescriptor ejb) {
    logInfo("==================");
    logInfo(ejb.getType() + " Bean " + ejb.getName());
    logInfo("\thomeClassName " + ejb.getHomeClassName());
    logInfo("\tremoteClassName " + ejb.getRemoteClassName());
    logInfo("\tlocalhomeClassName " + ejb.getLocalHomeClassName());
    logInfo("\tlocalClassName " + ejb.getLocalClassName());
    logInfo("\tremoteBusinessIntfs " + ejb.getRemoteBusinessClassNames());
    logInfo("\tlocalBusinessIntfs " + ejb.getLocalBusinessClassNames());
    logInfo("\tjndiName " + ejb.getJndiName());
    logInfo("\tejbClassName " + ejb.getEjbClassName());
    logInfo("\ttransactionType " + ejb.getTransactionType());
    if (ejb.getUsesCallerIdentity() == false) {
        logInfo("\trun-as role " + ejb.getRunAsIdentity());
    } else {
        logInfo("\tuse-caller-identity " + ejb.getUsesCallerIdentity());
    }
    for (EjbReference aRef : ejb.getEjbReferenceDescriptors()) {
        accept(aRef);
    }
    for (Iterator e = ejb.getPermissionedMethodsByPermission().keySet().iterator(); e.hasNext(); ) {
        MethodPermission mp = (MethodPermission) e.next();
        Set methods = (Set) ejb.getPermissionedMethodsByPermission().get(mp);
        accept(mp, methods);
    }
    if (ejb.getStyledPermissionedMethodsByPermission() != null) {
        for (Iterator e = ejb.getStyledPermissionedMethodsByPermission().keySet().iterator(); e.hasNext(); ) {
            MethodPermission mp = (MethodPermission) e.next();
            Set methods = (Set) ejb.getStyledPermissionedMethodsByPermission().get(mp);
            accept(mp, methods);
        }
    }
    for (RoleReference roleRef : ejb.getRoleReferences()) {
        accept(roleRef);
    }
    for (Iterator e = ejb.getMethodContainerTransactions().keySet().iterator(); e.hasNext(); ) {
        MethodDescriptor md = (MethodDescriptor) e.next();
        ContainerTransaction ct = (ContainerTransaction) ejb.getMethodContainerTransactions().get(md);
        accept(md, ct);
    }
    for (EnvironmentProperty envProp : ejb.getEnvironmentProperties()) {
        accept(envProp);
    }
    for (ResourceReferenceDescriptor next : ejb.getResourceReferenceDescriptors()) {
        accept(next);
    }
    for (ResourceEnvReferenceDescriptor next : ejb.getResourceEnvReferenceDescriptors()) {
        accept(next);
    }
    for (MessageDestinationReferencer next : ejb.getMessageDestinationReferenceDescriptors()) {
        accept(next);
    }
    // referencer as well.
    if (ejb.getType().equals(EjbMessageBeanDescriptor.TYPE)) {
        MessageDestinationReferencer msgDestReferencer = (MessageDestinationReferencer) ejb;
        if (msgDestReferencer.getMessageDestinationLinkName() != null) {
            accept(msgDestReferencer);
        }
    }
    for (ServiceReferenceDescriptor sref : ejb.getServiceReferenceDescriptors()) {
        accept(sref);
    }
    if (ejb instanceof EjbCMPEntityDescriptor) {
        EjbCMPEntityDescriptor cmp = (EjbCMPEntityDescriptor) ejb;
        PersistenceDescriptor persistenceDesc = cmp.getPersistenceDescriptor();
        for (Object fd : persistenceDesc.getCMPFields()) {
            accept((FieldDescriptor) fd);
        }
        for (Object o : persistenceDesc.getQueriedMethods()) {
            if (o instanceof MethodDescriptor) {
                QueryDescriptor qd = persistenceDesc.getQueryFor((MethodDescriptor) o);
                accept(qd);
            }
        }
    }
}
Also used : Set(java.util.Set) ServiceReferenceDescriptor(com.sun.enterprise.deployment.ServiceReferenceDescriptor) MethodDescriptor(com.sun.enterprise.deployment.MethodDescriptor) MethodPermission(com.sun.enterprise.deployment.MethodPermission) EjbReference(com.sun.enterprise.deployment.types.EjbReference) PersistenceDescriptor(org.glassfish.ejb.deployment.descriptor.PersistenceDescriptor) MessageDestinationReferencer(com.sun.enterprise.deployment.types.MessageDestinationReferencer) QueryDescriptor(org.glassfish.ejb.deployment.descriptor.QueryDescriptor) RoleReference(com.sun.enterprise.deployment.RoleReference) ContainerTransaction(org.glassfish.ejb.deployment.descriptor.ContainerTransaction) EnvironmentProperty(com.sun.enterprise.deployment.EnvironmentProperty) Iterator(java.util.Iterator) ResourceEnvReferenceDescriptor(com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor) ResourceReferenceDescriptor(com.sun.enterprise.deployment.ResourceReferenceDescriptor) EjbCMPEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor)

Example 5 with ResourceEnvReferenceDescriptor

use of com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor in project Payara by payara.

the class EjbBundleValidator method accept.

/**
 * visits an ejb descriptor
 * @param ejb descriptor
 */
@Override
public void accept(EjbDescriptor ejb) {
    // application
    if (ejb instanceof DummyEjbDescriptor) {
        throw new IllegalArgumentException(localStrings.getLocalString("enterprise.deployment.exceptionbeanbundle", "Referencing error: this bundle has no bean of name: {0}", new Object[] { ejb.getName() }));
    }
    this.ejb = ejb;
    setDOLDefault(ejb);
    computeRuntimeDefault(ejb);
    checkDependsOn(ejb);
    validateConcurrencyMetadata(ejb);
    validateStatefulTimeout(ejb);
    validatePassivationConfiguration(ejb);
    try {
        ClassLoader cl = ejb.getEjbBundleDescriptor().getClassLoader();
        Class ejbClass = cl.loadClass(ejb.getEjbClassName());
        if (Globals.getDefaultHabitat() == null) {
            return;
        }
        if (ejb instanceof EjbSessionDescriptor) {
            EjbSessionDescriptor desc = (EjbSessionDescriptor) ejb;
            if (desc.isClustered()) {
                if (!desc.isSingleton()) {
                    throw new IllegalArgumentException("Only Sinlgeton beans can be Clustered: " + desc.getName());
                }
                if (!Serializable.class.isAssignableFrom(ejbClass)) {
                    throw new IllegalStateException(String.format("Clustered Singleton %s must be Serializable", desc.getName()));
                }
                if (desc.getClusteredLockType() == DistributedLockType.LOCK) {
                    throw new IllegalStateException(String.format("Clustered Singleton %s - incompatible lock type LOCK", desc.getName()));
                }
            }
        }
        // Perform 2.x style TimedObject processing if the class
        // hasn't already been identified as a timed object.
        AnnotationTypesProvider provider = Globals.getDefaultHabitat().getService(AnnotationTypesProvider.class, "EJB");
        if (provider == null) {
            throw new RuntimeException("Cannot find AnnotationTypesProvider named 'EJB'");
        }
        if (ejb.getEjbTimeoutMethod() == null && provider.getType("javax.ejb.TimedObject").isAssignableFrom(ejbClass)) {
            MethodDescriptor timedObjectMethod = new MethodDescriptor("ejbTimeout", "TimedObject timeout method", new String[] { "javax.ejb.Timer" }, MethodDescriptor.TIMER_METHOD);
            ejb.setEjbTimeoutMethod(timedObjectMethod);
        } else if (ejb.getEjbTimeoutMethod() != null) {
            // If timeout-method was only processed from the descriptor,
            // we need to create a MethodDescriptor using the actual
            // Method object corresponding to the timeout method.  The
            // timeout method can have any access type and be anywhere
            // in the bean class hierarchy.
            MethodDescriptor timeoutMethodDescOrig = ejb.getEjbTimeoutMethod();
            MethodDescriptor timeoutMethodDesc = processTimeoutMethod(ejb, timeoutMethodDescOrig, provider, ejbClass);
            ejb.setEjbTimeoutMethod(timeoutMethodDesc);
        }
        for (ScheduledTimerDescriptor sd : ejb.getScheduledTimerDescriptors()) {
            try {
                // This method creates new schedule and attempts to calculate next timeout.
                // The second part ensures that all values that are not verified up-front
                // are also validated.
                // It does not check that such timeout date is a valid date.
                EJBTimerSchedule.isValid(sd);
            } catch (Exception e) {
                throw new RuntimeException(ejb.getName() + ": Invalid schedule " + "defined on method " + sd.getTimeoutMethod().getFormattedString() + ": " + e.getMessage());
            }
            MethodDescriptor timeoutMethodDescOrig = sd.getTimeoutMethod();
            MethodDescriptor timeoutMethodDesc = processTimeoutMethod(ejb, timeoutMethodDescOrig, provider, ejbClass);
            sd.setTimeoutMethod(timeoutMethodDesc);
        }
    } catch (Exception e) {
        RuntimeException re = new RuntimeException("Error processing EjbDescriptor");
        re.initCause(e);
        throw re;
    }
    // has to be derived from target inject method or inject field.
    for (InjectionCapable injectable : ejb.getEjbBundleDescriptor().getInjectableResources(ejb)) {
        accept(injectable);
    }
    for (Iterator itr = ejb.getEjbReferenceDescriptors().iterator(); itr.hasNext(); ) {
        EjbReference aRef = (EjbReference) itr.next();
        accept(aRef);
    }
    for (Iterator it = ejb.getResourceReferenceDescriptors().iterator(); it.hasNext(); ) {
        ResourceReferenceDescriptor next = (ResourceReferenceDescriptor) it.next();
        accept(next);
    }
    for (Iterator it = ejb.getResourceEnvReferenceDescriptors().iterator(); it.hasNext(); ) {
        ResourceEnvReferenceDescriptor next = (ResourceEnvReferenceDescriptor) it.next();
        accept(next);
    }
    for (Iterator it = ejb.getMessageDestinationReferenceDescriptors().iterator(); it.hasNext(); ) {
        MessageDestinationReferencer next = (MessageDestinationReferencer) it.next();
        accept(next);
    }
    // referencer as well.
    if (ejb.getType().equals(EjbMessageBeanDescriptor.TYPE)) {
        if (ejb instanceof MessageDestinationReferencer) {
            MessageDestinationReferencer msgDestReferencer = (MessageDestinationReferencer) ejb;
            if (msgDestReferencer.getMessageDestinationLinkName() != null) {
                accept(msgDestReferencer);
            }
        }
    }
    Set serviceRefs = ejb.getServiceReferenceDescriptors();
    for (Iterator itr = serviceRefs.iterator(); itr.hasNext(); ) {
        accept((ServiceReferenceDescriptor) itr.next());
    }
    if (ejb instanceof EjbCMPEntityDescriptor) {
        EjbCMPEntityDescriptor cmp = (EjbCMPEntityDescriptor) ejb;
        PersistenceDescriptor persistenceDesc = cmp.getPersistenceDescriptor();
        for (Iterator e = persistenceDesc.getCMPFields().iterator(); e.hasNext(); ) {
            FieldDescriptor fd = (FieldDescriptor) e.next();
            accept(fd);
        }
    }
}
Also used : Serializable(java.io.Serializable) Set(java.util.Set) DummyEjbDescriptor(org.glassfish.ejb.deployment.descriptor.DummyEjbDescriptor) ScheduledTimerDescriptor(org.glassfish.ejb.deployment.descriptor.ScheduledTimerDescriptor) MethodDescriptor(com.sun.enterprise.deployment.MethodDescriptor) FieldDescriptor(org.glassfish.ejb.deployment.descriptor.FieldDescriptor) EjbReference(com.sun.enterprise.deployment.types.EjbReference) PersistenceDescriptor(org.glassfish.ejb.deployment.descriptor.PersistenceDescriptor) MessageDestinationReferencer(com.sun.enterprise.deployment.types.MessageDestinationReferencer) InjectionCapable(com.sun.enterprise.deployment.InjectionCapable) Iterator(java.util.Iterator) ResourceEnvReferenceDescriptor(com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor) ResourceReferenceDescriptor(com.sun.enterprise.deployment.ResourceReferenceDescriptor) EjbSessionDescriptor(org.glassfish.ejb.deployment.descriptor.EjbSessionDescriptor) EjbCMPEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor) AnnotationTypesProvider(org.glassfish.internal.deployment.AnnotationTypesProvider)

Aggregations

ResourceEnvReferenceDescriptor (com.sun.enterprise.deployment.ResourceEnvReferenceDescriptor)8 ResourceReferenceDescriptor (com.sun.enterprise.deployment.ResourceReferenceDescriptor)5 EjbReference (com.sun.enterprise.deployment.types.EjbReference)4 Iterator (java.util.Iterator)3 Set (java.util.Set)3 MethodDescriptor (com.sun.enterprise.deployment.MethodDescriptor)2 ServiceReferenceDescriptor (com.sun.enterprise.deployment.ServiceReferenceDescriptor)2 MessageDestinationReferencer (com.sun.enterprise.deployment.types.MessageDestinationReferencer)2 EjbCMPEntityDescriptor (org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor)2 PersistenceDescriptor (org.glassfish.ejb.deployment.descriptor.PersistenceDescriptor)2 EnvironmentProperty (com.sun.enterprise.deployment.EnvironmentProperty)1 InjectionCapable (com.sun.enterprise.deployment.InjectionCapable)1 InjectionTarget (com.sun.enterprise.deployment.InjectionTarget)1 MethodPermission (com.sun.enterprise.deployment.MethodPermission)1 RoleReference (com.sun.enterprise.deployment.RoleReference)1 WebBundleDescriptor (com.sun.enterprise.deployment.WebBundleDescriptor)1 WebComponentDescriptor (com.sun.enterprise.deployment.WebComponentDescriptor)1 XMLElement (com.sun.enterprise.deployment.node.XMLElement)1 EjbRefNode (com.sun.enterprise.deployment.node.runtime.EjbRefNode)1 MessageDestinationRefNode (com.sun.enterprise.deployment.node.runtime.MessageDestinationRefNode)1