Search in sources :

Example 1 with Application

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

the class EjbLinkElement method check.

/**
 * The value of the ejb-link element is the ejb-name of an enterprise
 * bean in the same J2EE Application archive.
 *
 * @param descriptor the Web Application deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(WebBundleDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    boolean resolved = false;
    boolean oneFailed = false;
    int na = 0;
    // The value of the ejb-link element must be the ejb-name of an enterprise
    // bean in the same J2EE Application archive.
    String applicationName = null;
    if (!descriptor.getEjbReferenceDescriptors().isEmpty()) {
        for (Iterator itr = descriptor.getEjbReferenceDescriptors().iterator(); itr.hasNext(); ) {
            EjbReferenceDescriptor nextEjbReference = (EjbReferenceDescriptor) itr.next();
            if (nextEjbReference.isLinked()) {
                String ejb_link = nextEjbReference.getLinkName();
                ejb_link = ejb_link.substring(ejb_link.indexOf("#") + 1);
                // get the application descriptor and check all ejb-jars in the application
                try {
                    Application application = descriptor.getApplication();
                    applicationName = application.getName();
                    // File tmpFile = new File(System.getProperty("java.io.tmpdir"));
                    // tmpFile = new File(tmpFile, Verifier.TMPFILENAME + ".tmp");
                    // iterate through the ejb jars in this J2EE Application
                    Set ejbBundles = application.getBundleDescriptors(EjbBundleDescriptor.class);
                    Iterator ejbBundlesIterator = ejbBundles.iterator();
                    EjbBundleDescriptor ejbBundle = null;
                    while (ejbBundlesIterator.hasNext()) {
                        ejbBundle = (EjbBundleDescriptor) ejbBundlesIterator.next();
                        // }
                        for (Iterator itr2 = ejbBundle.getEjbs().iterator(); itr2.hasNext(); ) {
                            EjbDescriptor ejbDescriptor = (EjbDescriptor) itr2.next();
                            if (ejbDescriptor.getName().equals(ejb_link)) {
                                resolved = true;
                                logger.log(Level.FINE, getClass().getName() + ".passed", new Object[] { ejb_link, ejbDescriptor.getName() });
                                result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                                result.addGoodDetails(smh.getLocalString(getClass().getName() + ".passed", "ejb-link [ {0} ] found same value as EJB [ {1} ]", new Object[] { ejb_link, ejbDescriptor.getName() }));
                                break;
                            }
                        }
                    }
                } catch (Exception e) {
                    logger.log(Level.FINE, "com.sun.enterprise.tools.verifier.testsprint {0}", new Object[] { "[" + getClass() + "] Error: " + e.getMessage() });
                    if (!oneFailed) {
                        oneFailed = true;
                    }
                }
                // resolved the last ejb-link okay
                if (!resolved) {
                    if (!oneFailed) {
                        oneFailed = true;
                    }
                    result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                    result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error: No EJB matching [ {0} ] found within [ {1} ] ear file.", new Object[] { ejb_link, applicationName }));
                } else {
                    // clear the resolved flag for the next ejb-link
                    resolved = false;
                }
            } else {
                // Cannot get the link name of an ejb reference referring
                // to an external bean
                result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.addNaDetails(smh.getLocalString(getClass().getName() + ".notApplicable1", "Not Applicable:  Cannot verify the existance of an ejb reference [ {0} ] to external bean within different .ear file.", new Object[] { nextEjbReference.getName() }));
                na++;
            }
        }
        if (oneFailed) {
            result.setStatus(result.FAILED);
        } else if (na == descriptor.getEjbReferenceDescriptors().size()) {
            result.setStatus(result.NOT_APPLICABLE);
        } else {
            result.setStatus(result.PASSED);
        }
        // tmpFile.delete();
        return result;
    } else {
        result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "There are no ejb references to other beans within this web archive [ {0} ]", new Object[] { descriptor.getName() }));
    }
    return result;
}
Also used : EjbReferenceDescriptor(com.sun.enterprise.deployment.EjbReferenceDescriptor) EjbDescriptor(com.sun.enterprise.deployment.EjbDescriptor) EjbBundleDescriptor(com.sun.enterprise.deployment.EjbBundleDescriptor) Application(com.sun.enterprise.deployment.Application)

Example 2 with Application

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

the class EjbBundleRuntimeNode method addDescriptor.

@Override
public void addDescriptor(Object newDescriptor) {
    if (newDescriptor instanceof SecurityRoleMapping) {
        SecurityRoleMapping roleMap = (SecurityRoleMapping) newDescriptor;
        descriptor.addSecurityRoleMapping(roleMap);
        Application app = descriptor.getApplication();
        if (app != null) {
            Role role = new Role(roleMap.getRoleName());
            SecurityRoleMapper rm = app.getRoleMapper();
            if (rm != null) {
                List<PrincipalNameDescriptor> principals = roleMap.getPrincipalNames();
                for (int i = 0; i < principals.size(); i++) {
                    rm.assignRole(principals.get(i).getPrincipal(), role, descriptor);
                }
                List<String> groups = roleMap.getGroupNames();
                for (int i = 0; i < groups.size(); i++) {
                    rm.assignRole(new Group(groups.get(i)), role, descriptor);
                }
            }
        }
    } else if (newDescriptor instanceof ResourcePropertyDescriptor) {
        ResourcePropertyDescriptor desc = (ResourcePropertyDescriptor) newDescriptor;
        if ("default-role-mapping".equals(desc.getName())) {
            descriptor.setDefaultGroupPrincipalMapping(ConfigBeansUtilities.toBoolean(desc.getValue()));
        }
    }
}
Also used : Role(org.glassfish.security.common.Role) Group(org.glassfish.security.common.Group) SecurityRoleMapping(com.sun.enterprise.deployment.runtime.common.SecurityRoleMapping) SecurityRoleMapper(org.glassfish.deployment.common.SecurityRoleMapper) ResourcePropertyDescriptor(com.sun.enterprise.deployment.ResourcePropertyDescriptor) PrincipalNameDescriptor(com.sun.enterprise.deployment.runtime.common.PrincipalNameDescriptor) Application(com.sun.enterprise.deployment.Application)

Example 3 with Application

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

the class IASEjbCMPEntityDescriptor method getUniqueName.

public String getUniqueName() {
    if (uniqueName == null) {
        BundleDescriptor bundle = getEjbBundleDescriptor();
        Application application = bundle.getApplication();
        // Add ejb name and application name.
        StringBuffer rc = new StringBuffer().append(getName()).append(NAME_CONCATENATOR).append(application.getRegistrationName());
        // If it's not just a module, add a module name.
        if (!application.isVirtual()) {
            rc.append(NAME_CONCATENATOR).append(bundle.getModuleDescriptor().getArchiveUri());
        }
        uniqueName = getBaseName(getEjbClassName()) + getUniqueNumber(rc.toString());
    }
    return uniqueName;
}
Also used : BundleDescriptor(com.sun.enterprise.deployment.BundleDescriptor) Application(com.sun.enterprise.deployment.Application)

Example 4 with Application

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

the class ResourceValidator method event.

@Override
public void event(Event event) {
    if (event.is(Deployment.AFTER_APPLICATION_CLASSLOADER_CREATION)) {
        dc = (DeploymentContext) event.hook();
        Application application = dc.getModuleMetaData(Application.class);
        DeployCommandParameters commandParams = dc.getCommandParameters(DeployCommandParameters.class);
        target = commandParams.target;
        if (System.getProperty("deployment.resource.validation", "true").equals("false")) {
            deplLogger.log(Level.INFO, SKIP_RESOURCE_VALIDATION);
            return;
        }
        if (application == null) {
            return;
        }
        AppResources appResources = new AppResources();
        // Puts all resouces found in the application via annotation or xml into appResources
        parseResources(application, appResources);
        // Ensure we have a valid component invocation before triggering lookups
        String componentId = null;
        for (BundleDescriptor bundleDescriptor : application.getBundleDescriptors()) {
            if (bundleDescriptor instanceof JndiNameEnvironment) {
                componentId = DOLUtils.getComponentEnvId((JndiNameEnvironment) bundleDescriptor);
                if (componentId != null) {
                    break;
                }
            }
        }
        contextUtil.setInstanceComponentId(componentId);
        try (Context ctx = contextUtil.pushContext()) {
            validateResources(application, appResources);
        }
    }
}
Also used : DeployCommandParameters(org.glassfish.api.deployment.DeployCommandParameters) Context(org.glassfish.internal.api.JavaEEContextUtil.Context) DeploymentContext(org.glassfish.api.deployment.DeploymentContext) InitialContext(javax.naming.InitialContext) Application(com.sun.enterprise.deployment.Application)

Example 5 with Application

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

the class DolProvider method getNameFor.

/**
 * return the name for the given application
 */
public String getNameFor(ReadableArchive archive, DeploymentContext context) {
    if (context == null) {
        return null;
    }
    DeployCommandParameters params = context.getCommandParameters(DeployCommandParameters.class);
    Application application = null;
    try {
        // name for ear and module name for standalone module
        if (params.altdd != null || archive.exists("META-INF/application.xml") || archive.exists("WEB-INF/web.xml") || archive.exists("META-INF/ejb-jar.xml") || archive.exists("META-INF/application-client.xml") || archive.exists("META-INF/ra.xml")) {
            String archiveType = context.getArchiveHandler().getArchiveType();
            application = applicationFactory.createApplicationFromStandardDD(archive, archiveType);
            DeploymentTracing tracing = null;
            tracing = context.getModuleMetaData(DeploymentTracing.class);
            if (tracing != null) {
                tracing.addMark(DeploymentTracing.Mark.DOL_LOADED);
            }
            ApplicationHolder holder = new ApplicationHolder(application);
            context.addModuleMetaData(holder);
            return application.getAppName();
        }
    } catch (Exception e) {
        Logger.getAnonymousLogger().log(Level.WARNING, "Error occurred", e);
    }
    return null;
}
Also used : DeployCommandParameters(org.glassfish.api.deployment.DeployCommandParameters) DeploymentTracing(org.glassfish.internal.deployment.DeploymentTracing) Application(com.sun.enterprise.deployment.Application) IOException(java.io.IOException) SAXParseException(org.xml.sax.SAXParseException)

Aggregations

Application (com.sun.enterprise.deployment.Application)66 BundleDescriptor (com.sun.enterprise.deployment.BundleDescriptor)17 WebBundleDescriptor (com.sun.enterprise.deployment.WebBundleDescriptor)10 DeployCommandParameters (org.glassfish.api.deployment.DeployCommandParameters)10 ApplicationInfo (org.glassfish.internal.data.ApplicationInfo)10 IOException (java.io.IOException)9 File (java.io.File)8 ModuleDescriptor (org.glassfish.deployment.common.ModuleDescriptor)8 EjbBundleDescriptor (com.sun.enterprise.deployment.EjbBundleDescriptor)7 ReadableArchive (org.glassfish.api.deployment.archive.ReadableArchive)7 EjbDescriptor (com.sun.enterprise.deployment.EjbDescriptor)5 DeploymentException (org.glassfish.deployment.common.DeploymentException)5 SAXParseException (org.xml.sax.SAXParseException)5 ApplicationClientDescriptor (com.sun.enterprise.deployment.ApplicationClientDescriptor)4 ArrayList (java.util.ArrayList)4 WebappClassLoader (org.glassfish.web.loader.WebappClassLoader)4 OpsParams (org.glassfish.api.deployment.OpsParams)3 EjbBundleDescriptorImpl (org.glassfish.ejb.deployment.descriptor.EjbBundleDescriptorImpl)3 Applications (com.sun.enterprise.config.serverbeans.Applications)2 WebComponentDescriptor (com.sun.enterprise.deployment.WebComponentDescriptor)2