protected boolean test(TargetModuleID[] moduleIDs, String path) throws Exception { // hack for std modules TargetModuleID[] aTargetModuleIDs = findApplication("sayhello", ModuleType.WAR, null); dumpModulesIDs("war", aTargetModuleIDs); if (moduleIDs.length == 0) { // deployment failed ? log("Deployment failed, got zero TargetModuleID"); System.exit(1); } // we are loading the deployed file and checking that the moduleIDs are // correct Application app = ApplicationArchivist.openArchive(new File(path)); // check of non running modules ModuleType modType; if (app.isVirtual()) { modType = app.getStandaloneBundleDescriptor().getModuleType(); } else { modType = ModuleType.EAR; } // now we need to start the application for (int i = 0; i < moduleIDs.length; i++) { TargetModuleID aTargetModuleID = moduleIDs[i]; // should be part of the non running TargetModuleID[] targetModuleIDs = findApplication(aTargetModuleID.getModuleID(), modType, Boolean.FALSE); check(path, app, targetModuleIDs); // should be part of the available apps targetModuleIDs = findApplication(aTargetModuleID.getModuleID(), modType, null); check(path, app, targetModuleIDs); // now we start it.. start(aTargetModuleID.getModuleID()); // should be part of the running targetModuleIDs = findApplication(aTargetModuleID.getModuleID(), modType, Boolean.TRUE); check(path, app, targetModuleIDs); // should be part of the available apps targetModuleIDs = findApplication(aTargetModuleID.getModuleID(), modType, null); check(path, app, targetModuleIDs); } return true; }
/** * The ejb element specifies the URI of a ejb-jar, relative to the top level of the application * package. * * @param descriptor the Application deployment descriptor * @return <code>Result</code> the results for this assertion */ public Result check(Application descriptor) { Result result = getInitializedResult(); if (descriptor.getBundleDescriptors(EjbBundleDescriptor.class).size() > 0) { boolean oneFailed = false; for (Iterator itr = descriptor.getBundleDescriptors(EjbBundleDescriptor.class).iterator(); itr.hasNext(); ) { EjbBundleDescriptor ejbd = (EjbBundleDescriptor) itr.next(); // not sure what we can do to test this string? if (ejbd.getModuleDescriptor().getArchiveUri().endsWith(".jar")) { result.passed( smh.getLocalString( getClass().getName() + ".passed", "[ {0} ] specifies the URI [ {1} ] of an ejb-jar, relative to the top level of the application package [ {2} ].", new Object[] { ejbd.getName(), ejbd.getModuleDescriptor().getArchiveUri(), descriptor.getName() })); } else { if (!oneFailed) { oneFailed = true; } result.addErrorDetails( smh.getLocalString( getClass().getName() + ".failed", "Error: [ {0} ] does not specify the URI [ {1} ] of an ejb-jar, relative to the top level of the application package [ {2} ], or does not end with \".jar\"", new Object[] { ejbd.getName(), ejbd.getModuleDescriptor().getArchiveUri(), descriptor.getName() })); } } if (oneFailed) { result.setStatus(Result.FAILED); } else { result.setStatus(Result.PASSED); } } else { result.notApplicable( smh.getLocalString( getClass().getName() + ".notApplicable", "There are no ejb components in application [ {0} ]", new Object[] {descriptor.getName()})); } return result; }
/** * write the descriptor class to a DOM tree and return it * * @param parent node for the DOM tree * @param nodeName the node name * @param application the descriptor to write * @return the DOM tree top node */ public Node writeDescriptor(Node parent, String nodeName, Application application) { Node appNode = super.writeDescriptor(parent, nodeName, application); // web* for (ModuleDescriptor module : application.getModules()) { if (module.getModuleType().equals(DOLUtils.warType())) { Node web = appendChild(appNode, RuntimeTagNames.WEB); appendTextChild(web, RuntimeTagNames.WEB_URI, module.getArchiveUri()); appendTextChild(web, RuntimeTagNames.CONTEXT_ROOT, module.getContextRoot()); } } // pass-by-reference ? if (application.isPassByReferenceDefined()) { appendTextChild( appNode, RuntimeTagNames.PASS_BY_REFERENCE, String.valueOf(application.getPassByReference())); } // NOTE : unique-id is no longer written out to sun-ejb-jar.xml. It is persisted via // domain.xml deployment context properties instead. // security-role-mapping* List<SecurityRoleMapping> roleMappings = application.getSecurityRoleMappings(); for (int i = 0; i < roleMappings.size(); i++) { SecurityRoleMappingNode srmn = new SecurityRoleMappingNode(); srmn.writeDescriptor(appNode, RuntimeTagNames.SECURITY_ROLE_MAPPING, roleMappings.get(i)); } // realm? appendTextChild(appNode, RuntimeTagNames.REALM, application.getRealm()); // references RuntimeDescriptorNode.writeCommonComponentInfo(appNode, application); RuntimeDescriptorNode.writeMessageDestinationInfo(appNode, application); // archive-name appendTextChild(appNode, RuntimeTagNames.ARCHIVE_NAME, application.getArchiveName()); // compatibility appendTextChild(appNode, RuntimeTagNames.COMPATIBILITY, application.getCompatibility()); // keep-state appendTextChild( appNode, RuntimeTagNames.KEEP_STATE, String.valueOf(application.getKeepState())); return appNode; }
private boolean check(String path, Application app, TargetModuleID[] moduleIDs) { if (app.isVirtual()) { BundleDescriptor bd = app.getStandaloneBundleDescriptor(); // standalone module, should be fast. if (moduleIDs.length != 1) { // wrong number... log("Error " + path + " is a standalone module, got more than 1 targetmoduleID"); dumpModulesIDs("", moduleIDs); return false; } } else { for (int i = 0; i < moduleIDs.length; i++) { TargetModuleID parent = moduleIDs[i]; Target target = parent.getTarget(); log("Deployed on " + target.getName() + " with module ID " + parent.getModuleID()); // now look at all the children TargetModuleID[] children = parent.getChildTargetModuleID(); if (children == null) { log( "ERROR : App from " + path + " has " + app.getBundleDescriptors().size() + " modules but I didn't get any children TagetModuleID"); return false; } // size is consistent ? if (children.length != app.getBundleDescriptors().size()) { log( "ERROR : App from " + path + " has " + app.getBundleDescriptors().size() + " modules but I got only " + children.length + " children TagetModuleID"); return false; } else { log( "Expected " + app.getBundleDescriptors().size() + " children TargetModuleIDs and got " + children.length); } for (int j = 0; j < children.length; j++) { TargetModuleID aChild = children[j]; log("Processing " + aChild.getModuleID()); String childModuleID = aChild.getModuleID(); String[] splitted = childModuleID.split("#"); if (splitted.length != 2) { log("Unknown sub module id " + childModuleID); return false; } // check that parent TargeTModuleID is correct if (aChild.getParentTargetModuleID().equals(parent)) { log("Child's parent TargetModuleID is correctly set"); } else { log("Child's parent TargetModuleID is incorrect"); return false; } String first = splitted[0]; if (first.equals(parent.getModuleID())) { log("Correct parent module id for child " + childModuleID); } else { log("Incorrect parent module id for child " + childModuleID); } // look for the right module descriptor.. ModuleDescriptor md = app.getModuleDescriptorByUri(splitted[1]); if (md == null) { log("Cannot find module descriptor for " + childModuleID); // return false; } else { log("Found module descriptor for " + childModuleID); } if (md.getModuleType().equals(ModuleType.WAR)) { log("Web module deployed at : " + aChild.getWebURL()); } } } } // if we are here, it's good ! return true; }
/** * The alt-dd element specifies a URI to the post-assembly deployment descriptor relative to the * root of the application * * @param descriptor the Application deployment descriptor * @return <code>Result</code> the results for this assertion */ public Result check(Application descriptor) { Result result = getInitializedResult(); if (descriptor.getEjbBundleDescriptors().size() > 0) { boolean oneFailed = false; int na = 0; for (Iterator itr = descriptor.getEjbBundleDescriptors().iterator(); itr.hasNext(); ) { EjbBundleDescriptor ejbd = (EjbBundleDescriptor) itr.next(); if (ejbd.getModuleDescriptor().getAlternateDescriptor() != null) { if (!(ejbd.getModuleDescriptor().getAlternateDescriptor().equals(""))) { JarFile jarFile = null; InputStream deploymentEntry = null; // File f = null; // if (Verifier.getEarFile() != null) // f = new File(Verifier.getEarFile()); try { // if (f==null){ String uri = getAbstractArchiveUri(descriptor); // try { FileArchive arch = new FileArchive(); arch.open(uri); deploymentEntry = arch.getEntry(ejbd.getModuleDescriptor().getAlternateDescriptor()); // }catch (Exception e) { } // }else{ // // jarFile = new JarFile(f); // ZipEntry deploymentEntry1 = // jarFile.getEntry(ejbd.getModuleDescriptor().getAlternateDescriptor()); // if (deploymentEntry1 != null){ // deploymentEntry = // jarFile.getInputStream(deploymentEntry1); // } // } if (deploymentEntry != null) { result.addGoodDetails( smh.getLocalString( getClass().getName() + ".passed", "Found alternate EJB deployment descriptor URI file [ {0} ] within [ {1} ]", new Object[] { ejbd.getModuleDescriptor().getAlternateDescriptor(), ejbd.getName() })); } else { if (!oneFailed) { oneFailed = true; } result.addErrorDetails( smh.getLocalString( getClass().getName() + ".failed", "Error: No alternate EJB deployment descriptor URI file found, looking for [ {0} ] within [ {1} ]", new Object[] { ejbd.getModuleDescriptor().getAlternateDescriptor(), ejbd.getName() })); } // jarFile.close(); } catch (FileNotFoundException ex) { Verifier.debug(ex); if (!oneFailed) { oneFailed = true; } result.failed( smh.getLocalString( getClass().getName() + ".failedException", "Error: File not found trying to read deployment descriptor file [ {0} ] within [ {1} ]", new Object[] { ejbd.getModuleDescriptor().getAlternateDescriptor(), ejbd.getName() })); } catch (IOException ex) { Verifier.debug(ex); if (!oneFailed) { oneFailed = true; } result.failed( smh.getLocalString( getClass().getName() + ".failedException1", "Error: IO Error trying to read deployment descriptor file [ {0} ] within [ {1} ]", new Object[] { ejbd.getModuleDescriptor().getAlternateDescriptor(), ejbd.getName() })); } finally { try { if (deploymentEntry != null) deploymentEntry.close(); } catch (Exception x) { } } } } else { na++; result.notApplicable( smh.getLocalString( getClass().getName() + ".notApplicable1", "There is no java EJB alternative deployment descriptor in [ {0} ]", new Object[] {ejbd.getName()})); } } if (oneFailed) { result.setStatus(Result.FAILED); } else if (na == descriptor.getEjbBundleDescriptors().size()) { result.setStatus(Result.NOT_APPLICABLE); } else { result.setStatus(Result.PASSED); } } else { result.notApplicable( smh.getLocalString( getClass().getName() + ".notApplicable", "There are no EJB components in application [ {0} ]", new Object[] {descriptor.getName()})); } return result; }