/** * Returns an ejb descriptor that I have by the same name. * Create a DummyEjbDescriptor if requested, otherwise * throws an IllegalArgumentException */ public EjbDescriptor getEjbByName(String name, boolean isCreateDummy) { for (EjbDescriptor next : this.getEjbs()) { if (next.getName().equals(name)) { return next; } } if (!isCreateDummy) { throw new IllegalArgumentException(localStrings.getLocalString( "enterprise.deployment.exceptionbeanbundle", "Referencing error: this bundle has no bean of name: {0}", name)); } // there could be cases where the annotation defines the ejb component // and the ejb-jar.xml just uses it // we have to create a dummy version of the ejb descriptor in this // case as we process xml before annotations. _logger.log(Level.FINE, "enterprise.deployment_dummy_ejb_descriptor", new Object[] {name}); DummyEjbDescriptor dummyEjbDesc = new DummyEjbDescriptor(); dummyEjbDesc.setName(name); addEjb(dummyEjbDesc); return dummyEjbDesc; }
/** * Adds a new DOL descriptor instance to the descriptor instance associated with * this XMLNode * * @param descriptor the new descriptor */ public void addDescriptor(Object newDescriptor) { if (newDescriptor instanceof EjbDescriptor) { descriptor.addEjb((EjbDescriptor) newDescriptor); } else if (newDescriptor instanceof RelationshipDescriptor) { descriptor.addRelationship((RelationshipDescriptor) newDescriptor); } else if (newDescriptor instanceof MethodPermissionDescriptor) { MethodPermissionDescriptor nd = (MethodPermissionDescriptor) newDescriptor; MethodDescriptor[] array = nd.getMethods(); for (int i=0;i<array.length;i++) { EjbDescriptor target = descriptor.getEjbByName(array[i].getEjbName()); MethodPermission[] mps = nd.getMethodPermissions(); for (int j=0;j<mps.length;j++) { DOLUtils.getDefaultLogger().fine("Adding mp " + mps[j] + " to " + array[i] + " for ejb " + array[i].getEjbName()); target.addPermissionedMethod(mps[j], array[i]); } } } else super.addDescriptor(newDescriptor); }
currentBundle.addEjb(ejbDesc);