use of org.glassfish.deployment.common.Descriptor in project Payara by payara.
the class CmpFields method check.
/**
* Container-managed fields valid type test.
*
* The Bean Provider must ensure that the Java types assigned to the
* container-managed fields are one of the following: Java primitive types,
* Java serializable types, or references to enterprise beans' remote or home
* interfaces.
*
* @param descriptor the Enterprise Java Bean deployment descriptor
*
* @return <code>Result</code> the results for this assertion
*/
public Result check(EjbDescriptor descriptor) {
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbEntityDescriptor) {
String persistentType = ((EjbEntityDescriptor) descriptor).getPersistenceType();
if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistentType)) {
// this test apply only to 1.x cmp beans, in 2.x fields are virtual fields only
if (EjbCMPEntityDescriptor.CMP_1_1 != ((EjbCMPEntityDescriptor) descriptor).getCMPVersion()) {
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CMPTest.notApplicable3", "Test do not apply to this cmp-version of container managed persistence EJBs"));
return result;
}
VerifierTestContext context = getVerifierContext();
ClassLoader jcl = context.getClassLoader();
// RULE: container-managed fields are one of the following:
// Java primitive types, Java serializable types, or references
// to enterprise beans' remote or home interfaces.
Set persistentFields = ((EjbCMPEntityDescriptor) descriptor).getPersistenceDescriptor().getCMPFields();
Iterator iterator = persistentFields.iterator();
Descriptor persistentField;
Field field;
boolean oneFailed = false;
while (iterator.hasNext()) {
persistentField = (Descriptor) iterator.next();
boolean foundField = false;
try {
Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
// start do while loop here....
do {
try {
Field f = c.getDeclaredField(persistentField.getName());
foundField = true;
Class persistentFieldClassType = f.getType();
if (descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName()) && descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName())) {
if (RmiIIOPUtils.isPersistentFieldTypeValid(persistentFieldClassType, descriptor.getHomeClassName(), descriptor.getRemoteClassName())) {
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addGoodDetails(smh.getLocalString(getClass().getName() + ".passed", "Valid type assigned to container managed field [ {0} ] found in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), c.getName() }));
} else {
oneFailed = true;
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error: Invalid type assigned to container managed field [ {0} ] found in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), c.getName() }));
}
}
if (descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName()) && descriptor.getLocalClassName() != null && !"".equals(descriptor.getLocalClassName())) {
if (RmiIIOPUtils.isPersistentFieldTypeValid(persistentFieldClassType, descriptor.getLocalHomeClassName(), descriptor.getLocalClassName())) {
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addGoodDetails(smh.getLocalString(getClass().getName() + ".passed", "Valid type assigned to container managed field [ {0} ] found in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), c.getName() }));
} else {
oneFailed = true;
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error: Invalid type assigned to container managed field [ {0} ] found in bean [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), c.getName() }));
}
}
} catch (NoSuchFieldException e) {
foundField = false;
}
} while (((c = c.getSuperclass()) != null) && (!foundField));
if (!foundField) {
if (!oneFailed) {
oneFailed = true;
}
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failedException1", "Error: field [ {0} ] not found in class [ {1} ]", new Object[] { ((Descriptor) persistentField).getName(), descriptor.getEjbClassName() }));
}
} catch (ClassNotFoundException e) {
Verifier.debug(e);
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.failed(smh.getLocalString(getClass().getName() + ".failedException", "Error: [ {0} ] class not found.", new Object[] { descriptor.getEjbClassName() }));
}
}
if (oneFailed) {
result.setStatus(Result.FAILED);
} else {
result.setStatus(Result.PASSED);
}
} else {
// if (BEAN_PERSISTENCE.equals(persistentType))
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable1", "Expected persistence type [ {0} ], but [ {1} ] bean has persistence type [ {2} ]", new Object[] { EjbEntityDescriptor.CONTAINER_PERSISTENCE, descriptor.getName(), persistentType }));
}
return result;
} else {
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "[ {0} ] expected {1} bean, but called with {2} bean.", new Object[] { getClass(), "Entity", "Session" }));
return result;
}
}
use of org.glassfish.deployment.common.Descriptor in project Payara by payara.
the class AroundInvokeNode method getDescriptor.
@Override
public LifecycleCallbackDescriptor getDescriptor() {
if (descriptor == null) {
descriptor = new LifecycleCallbackDescriptor();
Descriptor parentDesc = (Descriptor) getParentNode().getDescriptor();
if (parentDesc instanceof EjbDescriptor) {
EjbDescriptor ejbDesc = (EjbDescriptor) parentDesc;
descriptor.setDefaultLifecycleCallbackClass(ejbDesc.getEjbClassName());
} else if (parentDesc instanceof EjbInterceptor) {
EjbInterceptor ejbInterceptor = (EjbInterceptor) parentDesc;
descriptor.setDefaultLifecycleCallbackClass(ejbInterceptor.getInterceptorClassName());
}
}
return descriptor;
}
use of org.glassfish.deployment.common.Descriptor in project Payara by payara.
the class MailSessionDeployer method registerMailSessionDefinitions.
private void registerMailSessionDefinitions(String appName, Descriptor descriptor) {
if (descriptor instanceof JndiNameEnvironment) {
JndiNameEnvironment env = (JndiNameEnvironment) descriptor;
for (Descriptor msd : env.getResourceDescriptors(JavaEEResourceType.MSD)) {
assert msd instanceof MailSessionDescriptor;
registerMSDReferredByApplication(appName, (MailSessionDescriptor) msd);
}
}
// ejb descriptor
if (descriptor instanceof EjbBundleDescriptor) {
EjbBundleDescriptor ejbDesc = (EjbBundleDescriptor) descriptor;
Set<EjbDescriptor> ejbDescriptors = (Set<EjbDescriptor>) ejbDesc.getEjbs();
for (EjbDescriptor ejbDescriptor : ejbDescriptors) {
for (Descriptor msd : ejbDescriptor.getResourceDescriptors(JavaEEResourceType.MSD)) {
assert msd instanceof MailSessionDescriptor;
registerMSDReferredByApplication(appName, (MailSessionDescriptor) msd);
}
}
// ejb interceptors
Set<EjbInterceptor> ejbInterceptors = ejbDesc.getInterceptors();
for (EjbInterceptor ejbInterceptor : ejbInterceptors) {
for (Descriptor msd : ejbInterceptor.getResourceDescriptors(JavaEEResourceType.MSD)) {
assert msd instanceof MailSessionDescriptor;
registerMSDReferredByApplication(appName, (MailSessionDescriptor) msd);
}
}
}
if (descriptor instanceof BundleDescriptor) {
// managed bean descriptors
Set<ManagedBeanDescriptor> managedBeanDescriptors = ((BundleDescriptor) descriptor).getManagedBeans();
for (ManagedBeanDescriptor mbd : managedBeanDescriptors) {
for (Descriptor msd : mbd.getResourceDescriptors(JavaEEResourceType.MSD)) {
assert msd instanceof MailSessionDescriptor;
registerMSDReferredByApplication(appName, (MailSessionDescriptor) msd);
}
}
}
}
use of org.glassfish.deployment.common.Descriptor in project Payara by payara.
the class ApplicationValidator method isExistsDescriptor.
/**
* Method to compare existing descriptor with other descriptors. If both descriptor is equal then deployment
* should be failed. scope is nothing but app level,connector level, ejb level etc., which is used later to
* compare same jndi name is defined at different scope or not.
* @param name
* @param descriptor
* @param scope
* @return
*/
private boolean isExistsDescriptor(String name, ResourceDescriptor descriptor, String scope) {
if (descriptor != null) {
CommonResourceValidator commonResourceValidator = allResourceDescriptors.get(name);
if (commonResourceValidator != null) {
Descriptor existingDescriptor = commonResourceValidator.getDescriptor();
if (descriptor instanceof MailSessionDescriptor && existingDescriptor instanceof MailSessionDescriptor) {
if (!descriptor.equals(existingDescriptor)) {
allUniqueResource = false;
return true;
} else if (!(existingDescriptor == descriptor)) {
DOLUtils.getDefaultLogger().log(Level.SEVERE, "DEP0001:Application validation fails for given application: {0}", new Object[] { descriptor.getName() });
}
} else if (descriptor instanceof DataSourceDefinitionDescriptor && existingDescriptor instanceof DataSourceDefinitionDescriptor) {
if (!descriptor.equals(existingDescriptor)) {
allUniqueResource = false;
return true;
} else if (!(existingDescriptor == descriptor)) {
DOLUtils.getDefaultLogger().log(Level.SEVERE, "DEP0002:Duplicate descriptor found for given jndi-name: {0}", new Object[] { descriptor.getName() });
}
} else if (descriptor instanceof ConnectionFactoryDefinitionDescriptor && existingDescriptor instanceof ConnectionFactoryDefinitionDescriptor) {
if (!descriptor.equals(existingDescriptor)) {
allUniqueResource = false;
return true;
} else if (!(existingDescriptor == descriptor)) {
DOLUtils.getDefaultLogger().log(Level.SEVERE, "DEP0002:Duplicate descriptor found for given jndi-name: {0}", new Object[] { descriptor.getName() });
}
} else if (descriptor instanceof AdministeredObjectDefinitionDescriptor && existingDescriptor instanceof AdministeredObjectDefinitionDescriptor) {
if (!descriptor.equals(existingDescriptor)) {
allUniqueResource = false;
return true;
} else if (!(existingDescriptor == descriptor)) {
DOLUtils.getDefaultLogger().log(Level.SEVERE, "DEP0002:Duplicate descriptor found for given jndi-name: {0}", new Object[] { descriptor.getName() });
}
}
@SuppressWarnings("unchecked") Vector<String> vectorScope = commonResourceValidator.getScope();
if (vectorScope != null) {
vectorScope.add(scope);
}
commonResourceValidator.setScope(vectorScope);
allResourceDescriptors.put(name, commonResourceValidator);
} else {
Vector<String> vectorScope = new Vector<>();
vectorScope.add(scope);
allResourceDescriptors.put(name, new CommonResourceValidator(descriptor, name, vectorScope));
}
}
return false;
}
use of org.glassfish.deployment.common.Descriptor in project Payara by payara.
the class DOLUtils method getComponentEnvId.
/**
* Generate a unique id name for each J2EE component.
* @param env
* @return
*/
public static String getComponentEnvId(JndiNameEnvironment env) {
String id = null;
if (env instanceof EjbDescriptor) {
// EJB component
EjbDescriptor ejbEnv = (EjbDescriptor) env;
// Make jndi name flat so it won't result in the creation of
// a bunch of sub-contexts.
String flattedJndiName = ejbEnv.getJndiName().replace('/', '.');
EjbBundleDescriptor ejbBundle = ejbEnv.getEjbBundleDescriptor();
Descriptor d = ejbBundle.getModuleDescriptor().getDescriptor();
// as the web bundle, because they share the same JNDI namespace
if (d instanceof WebBundleDescriptor) {
// copy of code below
WebBundleDescriptor webEnv = (WebBundleDescriptor) d;
id = webEnv.getApplication().getName() + ID_SEPARATOR + webEnv.getContextRoot();
if (deplLogger.isLoggable(Level.FINER)) {
deplLogger.log(Level.FINER, CONVERT_EJB_TO_WEB_ID, id);
}
} else {
id = ejbEnv.getApplication().getName() + ID_SEPARATOR + ejbBundle.getModuleDescriptor().getArchiveUri() + ID_SEPARATOR + ejbEnv.getName() + ID_SEPARATOR + flattedJndiName + ejbEnv.getUniqueId();
}
} else if (env instanceof WebBundleDescriptor) {
WebBundleDescriptor webEnv = (WebBundleDescriptor) env;
id = webEnv.getApplication().getName() + ID_SEPARATOR + webEnv.getContextRoot();
} else if (env instanceof ApplicationClientDescriptor) {
ApplicationClientDescriptor appEnv = (ApplicationClientDescriptor) env;
id = "client" + ID_SEPARATOR + appEnv.getName() + ID_SEPARATOR + appEnv.getMainClassName();
} else if (env instanceof ManagedBeanDescriptor) {
id = ((ManagedBeanDescriptor) env).getGlobalJndiName();
} else if (env instanceof EjbBundleDescriptor) {
EjbBundleDescriptor ejbBundle = (EjbBundleDescriptor) env;
id = "__ejbBundle__" + ID_SEPARATOR + ejbBundle.getApplication().getName() + ID_SEPARATOR + ejbBundle.getModuleName();
}
return id;
}
Aggregations