示例#1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @SuppressWarnings("unchecked") private static <T> T getContextualReference(javax.enterprise.inject.spi.BeanManager bm, java.util.Set<javax.enterprise.inject.spi.Bean<?>> beans, Class type)
        private static T getContextualReference <T, T1>(BeanManager bm, ISet <T1> beans, Type type)
        {
            if (beans == null || beans.Count == 0)
            {
                return(null);
            }

            // if we would resolve to multiple beans then BeanManager#resolve would throw an AmbiguousResolutionException
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: javax.enterprise.inject.spi.Bean<?> bean = bm.resolve(beans);
            Bean <object> bean = bm.resolve(beans);

            if (bean == null)
            {
                return(null);
            }
            else
            {
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: javax.enterprise.context.spi.CreationalContext<?> creationalContext = bm.createCreationalContext(bean);
                CreationalContext <object> creationalContext = bm.createCreationalContext(bean);

                // if we obtain a contextual reference to a @Dependent scope bean, make sure it is released
                if (isDependentScoped(bean))
                {
                    releaseOnContextClose(creationalContext, bean);
                }

                return((T)bm.getReference(bean, type, creationalContext));
            }
        }
示例#2
0
        private static void releaseOnContextClose <T1, T2>(CreationalContext <T1> creationalContext, Bean <T2> bean)
        {
            CommandContext commandContext = Context.CommandContext;

            if (commandContext != null)
            {
                commandContext.registerCommandContextListener(new CreationalContextReleaseListener(creationalContext));
            }
            else
            {
                LOG.warning("Obtained instance of @Dependent scoped bean " + bean + " outside of process engine command context. " + "Bean instance will not be destroyed. This is likely to create a memory leak. Please use a normal scope like @ApplicationScoped for this bean.");
            }
        }
示例#3
0
        public override T get <T>(Contextual <T> contextual, CreationalContext <T> arg1)
        {
            Bean <T> bean         = (Bean <T>)contextual;
            string   variableName = bean.Name;

            BusinessProcess businessProcess = BusinessProcess;
            object          variable        = businessProcess.getVariable(variableName);

            if (variable != null)
            {
                if (logger.isLoggable(Level.FINE))
                {
                    if (businessProcess.Associated)
                    {
                        logger.fine("Getting instance of bean '" + variableName + "' from Execution[" + businessProcess.ExecutionId + "].");
                    }
                    else
                    {
                        logger.fine("Getting instance of bean '" + variableName + "' from transient bean store");
                    }
                }

                return((T)variable);
            }
            else
            {
                if (logger.isLoggable(Level.FINE))
                {
                    if (businessProcess.Associated)
                    {
                        logger.fine("Creating instance of bean '" + variableName + "' in business process context representing Execution[" + businessProcess.ExecutionId + "].");
                    }
                    else
                    {
                        logger.fine("Creating instance of bean '" + variableName + "' in transient bean store");
                    }
                }

                T beanInstance = bean.create(arg1);
                businessProcess.setVariable(variableName, beanInstance);
                return(beanInstance);
            }
        }
示例#4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test @Deployment public void testExecutionIdInjectableByQualifier()
        public virtual void testExecutionIdInjectableByQualifier()
        {
            getBeanInstance(typeof(BusinessProcess)).startProcessByKey("keyOfTheProcess");

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Set<javax.enterprise.inject.spi.Bean<?>> beans = beanManager.getBeans(String.class, new org.camunda.bpm.engine.cdi.annotation.ExecutionIdLiteral());
            ISet <Bean <object> > beans = beanManager.getBeans(typeof(string), new ExecutionIdLiteral());
            Bean <string>         bean  = (Bean <string>)beanManager.resolve(beans);

            CreationalContext <string> ctx = beanManager.createCreationalContext(bean);
            string executionId             = (string)beanManager.getReference(bean, typeof(string), ctx);

            Assert.assertNotNull(executionId);

            string processInstanceId = (string)getBeanInstance("processInstanceId");

            Assert.assertNotNull(processInstanceId);

            assertEquals(processInstanceId, executionId);
        }