use of org.apache.openejb.jee.ContainerTransaction$JAXB.writeContainerTransaction in project tomee by apache.
the class AssemblyDescriptor$JAXB method _read.
public static final AssemblyDescriptor _read(final XoXMLStreamReader reader, RuntimeContext context) throws Exception {
// Check for xsi:nil
if (reader.isXsiNil()) {
return null;
}
if (context == null) {
context = new RuntimeContext();
}
final AssemblyDescriptor assemblyDescriptor = new AssemblyDescriptor();
context.beforeUnmarshal(assemblyDescriptor, LifecycleCallback.NONE);
List<SecurityRole> securityRole = null;
List<MethodPermission> methodPermission = null;
List<ContainerTransaction> containerTransaction = null;
List<ContainerConcurrency> containerConcurrency = null;
List<InterceptorBinding> interceptorBinding = null;
List<MessageDestination> messageDestination = null;
KeyedCollection<String, ApplicationException> applicationException = null;
// Check xsi:type
final QName xsiType = reader.getXsiType();
if (xsiType != null) {
if (("assembly-descriptorType" != xsiType.getLocalPart()) || ("http://java.sun.com/xml/ns/javaee" != xsiType.getNamespaceURI())) {
return context.unexpectedXsiType(reader, AssemblyDescriptor.class);
}
}
// Read attributes
for (final Attribute attribute : reader.getAttributes()) {
if (("id" == attribute.getLocalName()) && (("" == attribute.getNamespace()) || (attribute.getNamespace() == null))) {
// ATTRIBUTE: id
final String id = Adapters.collapsedStringAdapterAdapter.unmarshal(attribute.getValue());
context.addXmlId(reader, id, assemblyDescriptor);
assemblyDescriptor.id = id;
} else if (XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI != attribute.getNamespace()) {
context.unexpectedAttribute(attribute, new QName("", "id"));
}
}
// Read elements
for (final XoXMLStreamReader elementReader : reader.getChildElements()) {
if (("security-role" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: securityRole
final SecurityRole securityRoleItem = readSecurityRole(elementReader, context);
if (securityRole == null) {
securityRole = assemblyDescriptor.securityRole;
if (securityRole != null) {
securityRole.clear();
} else {
securityRole = new ArrayList<SecurityRole>();
}
}
securityRole.add(securityRoleItem);
} else if (("method-permission" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: methodPermission
final MethodPermission methodPermissionItem = readMethodPermission(elementReader, context);
if (methodPermission == null) {
methodPermission = assemblyDescriptor.methodPermission;
if (methodPermission != null) {
methodPermission.clear();
} else {
methodPermission = new ArrayList<MethodPermission>();
}
}
methodPermission.add(methodPermissionItem);
} else if (("container-transaction" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: containerTransaction
final ContainerTransaction containerTransactionItem = readContainerTransaction(elementReader, context);
if (containerTransaction == null) {
containerTransaction = assemblyDescriptor.containerTransaction;
if (containerTransaction != null) {
containerTransaction.clear();
} else {
containerTransaction = new ArrayList<ContainerTransaction>();
}
}
containerTransaction.add(containerTransactionItem);
} else if (("container-concurrency" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: containerConcurrency
final ContainerConcurrency containerConcurrencyItem = readContainerConcurrency(elementReader, context);
if (containerConcurrency == null) {
containerConcurrency = assemblyDescriptor.containerConcurrency;
if (containerConcurrency != null) {
containerConcurrency.clear();
} else {
containerConcurrency = new ArrayList<ContainerConcurrency>();
}
}
containerConcurrency.add(containerConcurrencyItem);
} else if (("interceptor-binding" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: interceptorBinding
final InterceptorBinding interceptorBindingItem = readInterceptorBinding(elementReader, context);
if (interceptorBinding == null) {
interceptorBinding = assemblyDescriptor.interceptorBinding;
if (interceptorBinding != null) {
interceptorBinding.clear();
} else {
interceptorBinding = new ArrayList<InterceptorBinding>();
}
}
interceptorBinding.add(interceptorBindingItem);
} else if (("message-destination" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: messageDestination
final MessageDestination messageDestinationItem = readMessageDestination(elementReader, context);
if (messageDestination == null) {
messageDestination = assemblyDescriptor.messageDestination;
if (messageDestination != null) {
messageDestination.clear();
} else {
messageDestination = new ArrayList<MessageDestination>();
}
}
messageDestination.add(messageDestinationItem);
} else if (("exclude-list" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: excludeList
final ExcludeList excludeList = readExcludeList(elementReader, context);
assemblyDescriptor.excludeList = excludeList;
} else if (("application-exception" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: applicationException
final ApplicationException applicationExceptionItem = readApplicationException(elementReader, context);
if (applicationException == null) {
applicationException = assemblyDescriptor.applicationException;
if (applicationException != null) {
applicationException.clear();
} else {
applicationException = new KeyedCollection<String, ApplicationException>();
}
}
applicationException.add(applicationExceptionItem);
} else {
context.unexpectedElement(elementReader, new QName("http://java.sun.com/xml/ns/javaee", "security-role"), new QName("http://java.sun.com/xml/ns/javaee", "method-permission"), new QName("http://java.sun.com/xml/ns/javaee", "container-transaction"), new QName("http://java.sun.com/xml/ns/javaee", "container-concurrency"), new QName("http://java.sun.com/xml/ns/javaee", "interceptor-binding"), new QName("http://java.sun.com/xml/ns/javaee", "message-destination"), new QName("http://java.sun.com/xml/ns/javaee", "exclude-list"), new QName("http://java.sun.com/xml/ns/javaee", "application-exception"));
}
}
if (securityRole != null) {
assemblyDescriptor.securityRole = securityRole;
}
if (methodPermission != null) {
assemblyDescriptor.methodPermission = methodPermission;
}
if (containerTransaction != null) {
assemblyDescriptor.containerTransaction = containerTransaction;
}
if (containerConcurrency != null) {
assemblyDescriptor.containerConcurrency = containerConcurrency;
}
if (interceptorBinding != null) {
assemblyDescriptor.interceptorBinding = interceptorBinding;
}
if (messageDestination != null) {
assemblyDescriptor.messageDestination = messageDestination;
}
if (applicationException != null) {
assemblyDescriptor.applicationException = applicationException;
}
context.afterUnmarshal(assemblyDescriptor, LifecycleCallback.NONE);
return assemblyDescriptor;
}
use of org.apache.openejb.jee.ContainerTransaction$JAXB.writeContainerTransaction in project tomee by apache.
the class DebuggableVmHackery method deploy.
public AppModule deploy(final AppModule appModule) throws OpenEJBException {
for (final EjbModule ejbModule : appModule.getEjbModules()) {
final EjbJar ejbJar = ejbModule.getEjbJar();
final OpenejbJar openejbJar = ejbModule.getOpenejbJar();
final Map<String, EjbDeployment> deployments = openejbJar.getDeploymentsByEjbName();
ejbJar.setRelationships(null);
final List<String> removed = new ArrayList<String>();
for (final EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
final String ejbName = bean.getEjbName();
final EjbDeployment ejbDeployment = deployments.get(ejbName);
pruneRefs(bean, ejbDeployment);
// }
if (!(bean instanceof MessageDrivenBean) && !(bean instanceof EntityBean)) {
continue;
}
ejbJar.removeEnterpriseBean(ejbName);
openejbJar.removeEjbDeployment(ejbDeployment);
removed.add(ejbName);
final AssemblyDescriptor assemblyDescriptor = ejbJar.getAssemblyDescriptor();
if (assemblyDescriptor != null) {
for (final MethodPermission permission : copy(assemblyDescriptor.getMethodPermission())) {
for (final Method method : copy(permission.getMethod())) {
if (method.getEjbName().equals(ejbName)) {
permission.getMethod().remove(method);
}
}
if (permission.getMethod().size() == 0) {
assemblyDescriptor.getMethodPermission().remove(permission);
}
}
for (final ContainerTransaction transaction : copy(assemblyDescriptor.getContainerTransaction())) {
for (final Method method : copy(transaction.getMethod())) {
if (method.getEjbName().equals(ejbName)) {
transaction.getMethod().remove(method);
}
}
if (transaction.getMethod().size() == 0) {
assemblyDescriptor.getContainerTransaction().remove(transaction);
}
}
for (final InterceptorBinding binding : copy(assemblyDescriptor.getInterceptorBinding())) {
if (binding.getEjbName().equals(ejbName)) {
assemblyDescriptor.getInterceptorBinding().remove(binding);
}
}
}
}
// Drop any ejb ref to with an ejb-link to a removed ejb
for (final EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
bean.getEjbLocalRefMap().keySet().removeAll(removed);
bean.getEjbRefMap().keySet().removeAll(removed);
}
for (final Interceptor interceptor : ejbJar.getInterceptors()) {
pruneRefs(interceptor, new EjbDeployment());
}
}
return appModule;
}
use of org.apache.openejb.jee.ContainerTransaction$JAXB.writeContainerTransaction in project tomee by apache.
the class EjbJarInfoBuilder method initMethodTransactions.
private void initMethodTransactions(final EjbModule jar, final Map ejbds, final EjbJarInfo ejbJarInfo) {
final List<ContainerTransaction> containerTransactions = jar.getEjbJar().getAssemblyDescriptor().getContainerTransaction();
for (final ContainerTransaction cTx : containerTransactions) {
final MethodTransactionInfo info = new MethodTransactionInfo();
info.description = cTx.getDescription();
info.transAttribute = cTx.getTransAttribute().toString();
info.methods.addAll(getMethodInfos(cTx.getMethod(), ejbds));
ejbJarInfo.methodTransactions.add(info);
}
}
use of org.apache.openejb.jee.ContainerTransaction$JAXB.writeContainerTransaction in project tomee by apache.
the class StatefulTransactionAttributesTest method test.
public void test() throws Exception {
System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
final Assembler assembler = new Assembler();
final ConfigurationFactory config = new ConfigurationFactory();
assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
final EjbJar ejbJar = new EjbJar();
ejbJar.addEnterpriseBean(new StatefulBean(Color.class));
ejbJar.addEnterpriseBean(new StatefulBean(Red.class));
ejbJar.addEnterpriseBean(new StatefulBean(Crimson.class));
ejbJar.addEnterpriseBean(new StatefulBean(Scarlet.class));
final List<ContainerTransaction> declared = ejbJar.getAssemblyDescriptor().getContainerTransaction();
declared.add(new ContainerTransaction(TransAttribute.REQUIRED, "*", "Crimson", "*"));
declared.add(new ContainerTransaction(TransAttribute.REQUIRES_NEW, "*", "Crimson", "create"));
final ContainerTransaction o = new ContainerTransaction(TransAttribute.SUPPORTS, "*", "Crimson", "create");
o.getMethod().get(0).setMethodIntf(MethodIntf.HOME);
declared.add(o);
declared.add(new ContainerTransaction(TransAttribute.REQUIRES_NEW, "*", "Crimson", "remove"));
declared.add(new ContainerTransaction(TransAttribute.REQUIRES_NEW, Color.class.getName(), "Scarlet", "*"));
declared.add(new ContainerTransaction(TransAttribute.NEVER, Red.class.getName(), "Scarlet", "red"));
declared.add(new ContainerTransaction(TransAttribute.REQUIRED, "Scarlet", Scarlet.class.getMethod("scarlet")));
final EjbJarInfo ejbJarInfo = config.configureApplication(ejbJar);
assembler.createApplication(ejbJarInfo);
final InitialContext context = new InitialContext();
{
final ColorLocal color = (ColorLocal) context.lookup("ColorLocal");
assertEquals("Never", color.color());
assertEquals("RequiresNew", color.color((Object) null));
assertEquals("Supports", color.color((String) null));
assertEquals("Supports", color.color((Boolean) null));
assertEquals("Supports", color.color((Integer) null));
}
{
final ColorRemote color = (ColorRemote) context.lookup("ColorRemote");
assertEquals("Never", color.color());
assertEquals("RequiresNew", color.color((Object) null));
assertEquals("Supports", color.color((String) null));
assertEquals("Supports", color.color((Boolean) null));
assertEquals("Supports", color.color((Integer) null));
}
{
final ColorEjbLocalHome home = (ColorEjbLocalHome) context.lookup("ColorLocalHome");
final ColorEjbLocalObject color = home.create("Supports");
assertEquals("Never", color.color());
assertEquals("RequiresNew", color.color((Object) null));
assertEquals("Supports", color.color((String) null));
assertEquals("Supports", color.color((Boolean) null));
assertEquals("Supports", color.color((Integer) null));
expected.set("Supports");
color.remove();
}
{
final ColorEjbHome home = (ColorEjbHome) context.lookup("ColorRemoteHome");
final ColorEjbObject color = home.create("Supports");
assertEquals("Never", color.color());
assertEquals("RequiresNew", color.color((Object) null));
assertEquals("Supports", color.color((String) null));
assertEquals("Supports", color.color((Boolean) null));
assertEquals("Supports", color.color((Integer) null));
expected.set("Supports");
color.remove();
}
{
final RedLocal red = (RedLocal) context.lookup("RedLocal");
assertEquals("Never", red.color());
assertEquals("Required", red.color((Object) null));
assertEquals("Supports", red.color((String) null));
assertEquals("Supports", red.color((Boolean) null));
assertEquals("Supports", red.color((Integer) null));
assertEquals("RequiresNew", red.red());
assertEquals("Required", red.red((Object) null));
assertEquals("Required", red.red((String) null));
}
{
final RedRemote red = (RedRemote) context.lookup("RedRemote");
assertEquals("Never", red.color());
assertEquals("Required", red.color((Object) null));
assertEquals("Supports", red.color((String) null));
assertEquals("Supports", red.color((Boolean) null));
assertEquals("Supports", red.color((Integer) null));
assertEquals("RequiresNew", red.red());
assertEquals("Required", red.red((Object) null));
assertEquals("Required", red.red((String) null));
}
{
final RedEjbLocalHome home = (RedEjbLocalHome) context.lookup("RedLocalHome");
final RedEjbLocalObject red = home.create("Supports");
assertEquals("Never", red.color());
assertEquals("Required", red.color((Object) null));
assertEquals("Supports", red.color((String) null));
assertEquals("Supports", red.color((Boolean) null));
assertEquals("Supports", red.color((Integer) null));
assertEquals("RequiresNew", red.red());
assertEquals("Required", red.red((Object) null));
assertEquals("Required", red.red((String) null));
expected.set("Supports");
red.remove();
}
{
final RedEjbHome home = (RedEjbHome) context.lookup("RedRemoteHome");
final RedEjbObject red = home.create("Supports");
assertEquals("Never", red.color());
assertEquals("Required", red.color((Object) null));
assertEquals("Supports", red.color((String) null));
assertEquals("Supports", red.color((Boolean) null));
assertEquals("Supports", red.color((Integer) null));
assertEquals("RequiresNew", red.red());
assertEquals("Required", red.red((Object) null));
assertEquals("Required", red.red((String) null));
expected.set("Supports");
red.remove();
}
{
final CrimsonLocal crimson = (CrimsonLocal) context.lookup("CrimsonLocal");
assertEquals("Required", crimson.color());
assertEquals("Required", crimson.color((Object) null));
assertEquals("Required", crimson.color((String) null));
assertEquals("Required", crimson.color((Boolean) null));
assertEquals("Required", crimson.color((Integer) null));
assertEquals("RequiresNew", crimson.red());
assertEquals("Required", crimson.red((Object) null));
assertEquals("Required", crimson.red((String) null));
assertEquals("RequiresNew", crimson.crimson());
assertEquals("Required", crimson.crimson((String) null));
}
{
final CrimsonRemote crimson = (CrimsonRemote) context.lookup("CrimsonRemote");
assertEquals("Required", crimson.color());
assertEquals("Required", crimson.color((Object) null));
assertEquals("Required", crimson.color((String) null));
assertEquals("Required", crimson.color((Boolean) null));
assertEquals("Required", crimson.color((Integer) null));
assertEquals("RequiresNew", crimson.red());
assertEquals("Required", crimson.red((Object) null));
assertEquals("Required", crimson.red((String) null));
assertEquals("RequiresNew", crimson.crimson());
assertEquals("Required", crimson.crimson((String) null));
}
{
final CrimsonEjbLocalHome home = (CrimsonEjbLocalHome) context.lookup("CrimsonLocalHome");
final CrimsonEjbLocalObject crimson = home.create("RequiresNew");
assertEquals("Required", crimson.color());
assertEquals("Required", crimson.color((Object) null));
assertEquals("Required", crimson.color((String) null));
assertEquals("Required", crimson.color((Boolean) null));
assertEquals("Required", crimson.color((Integer) null));
assertEquals("RequiresNew", crimson.red());
assertEquals("Required", crimson.red((Object) null));
assertEquals("Required", crimson.red((String) null));
assertEquals("RequiresNew", crimson.crimson());
assertEquals("Required", crimson.crimson((String) null));
expected.set("RequiresNew");
crimson.remove();
}
{
final CrimsonEjbHome home = (CrimsonEjbHome) context.lookup("CrimsonRemoteHome");
final CrimsonEjbObject crimson = home.create("Supports");
assertEquals("Required", crimson.color());
assertEquals("Required", crimson.color((Object) null));
assertEquals("Required", crimson.color((String) null));
assertEquals("Required", crimson.color((Boolean) null));
assertEquals("Required", crimson.color((Integer) null));
assertEquals("RequiresNew", crimson.red());
assertEquals("Required", crimson.red((Object) null));
assertEquals("Required", crimson.red((String) null));
assertEquals("RequiresNew", crimson.crimson());
assertEquals("Required", crimson.crimson((String) null));
expected.set("RequiresNew");
crimson.remove();
}
{
final ScarletLocal scarlet = (ScarletLocal) context.lookup("ScarletLocal");
assertEquals("Never", scarlet.color());
assertEquals("Required", scarlet.color((Object) null));
assertEquals("RequiresNew", scarlet.color((String) null));
assertEquals("RequiresNew", scarlet.color((Boolean) null));
assertEquals("RequiresNew", scarlet.color((Integer) null));
assertEquals("RequiresNew", scarlet.red());
assertEquals("Never", scarlet.red((Object) null));
assertEquals("Never", scarlet.red((String) null));
assertEquals("Required", scarlet.scarlet());
assertEquals("NotSupported", scarlet.scarlet((String) null));
}
{
final ScarletRemote scarlet = (ScarletRemote) context.lookup("ScarletRemote");
assertEquals("Never", scarlet.color());
assertEquals("Required", scarlet.color((Object) null));
assertEquals("RequiresNew", scarlet.color((String) null));
assertEquals("RequiresNew", scarlet.color((Boolean) null));
assertEquals("RequiresNew", scarlet.color((Integer) null));
assertEquals("RequiresNew", scarlet.red());
assertEquals("Never", scarlet.red((Object) null));
assertEquals("Never", scarlet.red((String) null));
assertEquals("Required", scarlet.scarlet());
assertEquals("NotSupported", scarlet.scarlet((String) null));
}
{
final ScarletEjbLocalHome home = (ScarletEjbLocalHome) context.lookup("ScarletLocalHome");
final ScarletEjbLocalObject scarlet = home.create("RequiresNew");
assertEquals("Never", scarlet.color());
assertEquals("Required", scarlet.color((Object) null));
assertEquals("RequiresNew", scarlet.color((String) null));
assertEquals("RequiresNew", scarlet.color((Boolean) null));
assertEquals("RequiresNew", scarlet.color((Integer) null));
assertEquals("RequiresNew", scarlet.red());
assertEquals("Never", scarlet.red((Object) null));
assertEquals("Never", scarlet.red((String) null));
assertEquals("Required", scarlet.scarlet());
assertEquals("NotSupported", scarlet.scarlet((String) null));
}
{
final ScarletEjbHome home = (ScarletEjbHome) context.lookup("ScarletRemoteHome");
final ScarletEjbObject scarlet = home.create("RequiresNew");
assertEquals("Never", scarlet.color());
assertEquals("Required", scarlet.color((Object) null));
assertEquals("RequiresNew", scarlet.color((String) null));
assertEquals("RequiresNew", scarlet.color((Boolean) null));
assertEquals("RequiresNew", scarlet.color((Integer) null));
assertEquals("RequiresNew", scarlet.red());
assertEquals("Never", scarlet.red((Object) null));
assertEquals("Never", scarlet.red((String) null));
assertEquals("Required", scarlet.scarlet());
assertEquals("NotSupported", scarlet.scarlet((String) null));
}
}
use of org.apache.openejb.jee.ContainerTransaction$JAXB.writeContainerTransaction in project tomee by apache.
the class CheckInvalidTransactionAttributeTest method xml.
@Keys(@Key(value = "xml.invalidTransactionAttribute", type = KeyType.WARNING))
public EjbJar xml() throws SecurityException, NoSuchMethodException {
final EjbJar ejbJar = new EjbJar();
final StatelessBean bean = ejbJar.addEnterpriseBean(new StatelessBean(CheeseEjb.class));
bean.setTransactionType(TransactionType.BEAN);
final ContainerTransaction tx = new ContainerTransaction();
tx.getMethod().add(new Method(bean.getEjbName(), CheeseEjb.class.getMethod("sayCheesePlease", null)));
tx.setTransAttribute(TransAttribute.REQUIRED);
ejbJar.getAssemblyDescriptor().getContainerTransaction().add(tx);
return ejbJar;
}
Aggregations