Result result = getInitializedResult();
ComponentNameConstructor compName = new ComponentNameConstructor(descriptor);
SunEjbJar ejbJar = descriptor.getEjbBundleDescriptor().getIasEjbObject();
String ejbName = null, jndiName=null;
boolean oneFailed = false;
boolean notApplicable = false;
boolean oneWarning = false;
if(ejbJar!=null)
{
Ejb ejbs[] = ejbJar.getEnterpriseBeans().getEjb();
Ejb testCase = null;
for(int i=0;i<ejbs.length;i++)
{
if(ejbs[i].getEjbName().equals(descriptor.getName()))
{
testCase = ejbs[i];
break;
}
}
ejbName = testCase.getEjbName();
EjbRef ejbRefs[] = testCase.getEjbRef();
if(ejbRefs.length > 0)
{
for(int j=0;j<ejbRefs.length;j++)
{
String refName = ejbRefs[j].getEjbRefName();
String refJndiName = ejbRefs[j].getJndiName();
try
{
EjbReferenceDescriptor refDesc = descriptor.getEjbReferenceByName(refName);
String type = refDesc.getType();
if(type.equals(EjbSessionDescriptor.TYPE) ||
type.equals(EjbEntityDescriptor.TYPE))
{
result.passed(smh.getLocalString(getClass().getName() + ".passed2",
"PASSED [AS-EJB ejb-ref] ejb-ref-name [{0}] is valid",
new Object[]{refName}));
}
else
{
oneFailed = true;
result.failed(smh.getLocalString(getClass().getName() + ".failed1",
"FAILED [AS-EJB ejb-ref] ejb-ref-name has an invalid type in ejb-jar.xml." +
" Type should be Session or Entity only"));
}
}
catch(IllegalArgumentException iex)
{
oneFailed = true;
result.failed(smh.getLocalString(getClass().getName() + ".failed",
"FAILED [AS-EJB ejb-ref] ejb-ref-name [{0}] is not defined in the ejb-jar.xml",
new Object[]{refName}));
}
if(refJndiName!=null && refJndiName.length()==0)
{
oneFailed = true;
result.addErrorDetails(smh.getLocalString
(getClass().getName() + ".failed2",
"FAILED [AS-EJB ejb-ref] : jndi-name cannot be an empty string",
new Object[] {refName}));
}
if(refJndiName!=null && !refJndiName.startsWith("ejb/"))
{
oneWarning = true;
result.warning(smh.getLocalString
(getClass().getName() + ".warning",
"FAILED [AS-EJB ejb-ref] JNDI name should start with ejb/ for an ejb reference",
new Object[] {refName}));
}
result.addGoodDetails(smh.getLocalString(
getClass().getName() + ".passed1",
"PASSED [AS-EJB ejb-ref] : ejb-ref-Name is {0} and jndi-name is {1}",
new Object[] {refName,refJndiName}));
}
}
else
{
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"{0} Does not define any ejb references",
new Object[] {ejbName}));
return result;
}
}
else
{
result.addErrorDetails(smh.getLocalString
(getClass().getName() + ".notRun",
"NOT RUN [AS-EJB] : Could not create an SunEjbJar object"));
return result;
}
if (oneFailed)
{
result.setStatus(Result.FAILED);
}
else if(oneWarning)
{
result.setStatus(Result.WARNING);
}
else
{
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.passed
(smh.getLocalString
(getClass().getName() + ".passed",
"PASSED [AS-EJB] : {0} ejb refernce is verified",
new Object[] {ejbName, jndiName}));
}
return result;