You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/01/17 22:20:10 UTC
svn commit: r1434919 [1/2] - in /openwebbeans/trunk:
webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/
webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/
webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/ webbeans-...
Author: arne
Date: Thu Jan 17 21:20:09 2013
New Revision: 1434919
URL: http://svn.apache.org/viewvc?rev=1434919&view=rev
Log:
OWB-755: Moved creation and destruction of instances from Bean to Producer / InjectionTarget
Added:
openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalProvider.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionProvider.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryProvider.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorProvider.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/BeanManagerProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/EventProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionPointProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerFieldProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducer.java
Removed:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducerRemove.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducerRemove.java
Modified:
openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationFilter.java
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationListener.java
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java
Modified: openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java (original)
+++ openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java Thu Jan 17 21:20:09 2013
@@ -25,6 +25,7 @@ import javax.enterprise.context.spi.Crea
import org.apache.webbeans.component.BuildInOwbBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.ProviderBasedProxyProducer;
import org.apache.webbeans.spi.SecurityService;
public class PrincipalBean extends BuildInOwbBean<Principal>
@@ -33,31 +34,7 @@ public class PrincipalBean extends Build
public PrincipalBean(WebBeansContext webBeansContext)
{
super(webBeansContext, WebBeansType.PRINCIPAL, Principal.class);
- }
-
- @Override
- protected Principal createInstance(CreationalContext<Principal> creationalContext)
- {
- SecurityService securityService = getWebBeansContext().getService(SecurityService.class);
- if(securityService != null)
- {
- Principal t = securityService.getCurrentPrincipal();
- return createProxyWrapper(t, creationalContext);
- }
-
- return null;
- }
-
- @Override
- protected Principal createActualInstance(CreationalContext<Principal> creationalContext)
- {
- SecurityService securityService = getWebBeansContext().getService(SecurityService.class);
- if(securityService != null)
- {
- return securityService.getCurrentPrincipal();
- }
-
- return null;
+ setProducer(new ProviderBasedProxyProducer<Principal>(webBeansContext, Principal.class, new PrincipalProvider(webBeansContext)));
}
@Override
Added: openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalProvider.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalProvider.java?rev=1434919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalProvider.java (added)
+++ openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalProvider.java Thu Jan 17 21:20:09 2013
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.ee.common.beans;
+
+import java.security.Principal;
+
+import javax.inject.Provider;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.SecurityService;
+
+public class PrincipalProvider implements Provider<Principal>
+{
+
+ private WebBeansContext webBeansContext;
+
+ public PrincipalProvider(WebBeansContext webBeansContext)
+ {
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public Principal get()
+ {
+ SecurityService securityService = webBeansContext.getService(SecurityService.class);
+ if(securityService == null)
+ {
+ return null;
+ }
+ else
+ {
+ return securityService.getCurrentPrincipal();
+ }
+ }
+}
Modified: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java (original)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java Thu Jan 17 21:20:09 2013
@@ -18,13 +18,12 @@
*/
package org.apache.webbeans.ee.beans;
-import javax.enterprise.context.spi.CreationalContext;
import javax.transaction.UserTransaction;
import org.apache.webbeans.component.BuildInOwbBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.spi.TransactionService;
+import org.apache.webbeans.portable.ProviderBasedProxyProducer;
public class UserTransactionBean extends BuildInOwbBean<UserTransaction>
{
@@ -32,37 +31,12 @@ public class UserTransactionBean extends
public UserTransactionBean(WebBeansContext webBeansContext)
{
super(webBeansContext, WebBeansType.USERTRANSACTION, UserTransaction.class);
- }
-
- @Override
- protected UserTransaction createActualInstance(CreationalContext<UserTransaction> creationalContext)
- {
- TransactionService transactionService = getWebBeansContext().getService(TransactionService.class);
- if(transactionService != null)
- {
- return transactionService.getUserTransaction();
- }
-
- return null;
- }
-
- @Override
- protected UserTransaction createInstance(CreationalContext<UserTransaction> creationalContext)
- {
- TransactionService transactionService = getWebBeansContext().getService(TransactionService.class);
- if(transactionService != null)
- {
- UserTransaction t = transactionService.getUserTransaction();
- return createProxyWrapper(t, creationalContext);
- }
-
- return null;
+ setProducer(new ProviderBasedProxyProducer<UserTransaction>(webBeansContext, UserTransaction.class, new UserTransactionProvider(webBeansContext)));
}
@Override
public boolean isPassivationCapable()
{
return true;
- }
-
+ }
}
Added: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionProvider.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionProvider.java?rev=1434919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionProvider.java (added)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionProvider.java Thu Jan 17 21:20:09 2013
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.ee.beans;
+
+import javax.inject.Provider;
+import javax.transaction.UserTransaction;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.TransactionService;
+
+public class UserTransactionProvider implements Provider<UserTransaction>
+{
+
+ private WebBeansContext webBeansContext;
+
+ public UserTransactionProvider(WebBeansContext webBeansContext)
+ {
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public UserTransaction get()
+ {
+ TransactionService transactionService = webBeansContext.getService(TransactionService.class);
+ if(transactionService != null)
+ {
+ return transactionService.getUserTransaction();
+ }
+ return null;
+ }
+}
Modified: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java (original)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java Thu Jan 17 21:20:09 2013
@@ -18,13 +18,12 @@
*/
package org.apache.webbeans.ee.beans;
-import javax.enterprise.context.spi.CreationalContext;
import javax.validation.Validator;
import org.apache.webbeans.component.BuildInOwbBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.spi.ValidatorService;
+import org.apache.webbeans.portable.ProviderBasedProxyProducer;
public class ValidatorBean extends BuildInOwbBean<Validator>
{
@@ -32,30 +31,7 @@ public class ValidatorBean extends Build
public ValidatorBean(WebBeansContext webBeansContext)
{
super(webBeansContext, WebBeansType.VALIDATION, Validator.class);
- }
-
- @Override
- protected Validator createInstance(CreationalContext<Validator> creationalContext)
- {
- ValidatorService validatorService = getWebBeansContext().getService(ValidatorService.class);
- if(validatorService != null)
- {
- Validator t = validatorService.getDefaultValidator();
- return createProxyWrapper(t, creationalContext);
- }
-
- return null;
- }
-
- @Override
- protected Validator createActualInstance(CreationalContext<Validator> creationalContext)
- {
- ValidatorService validatorService = getWebBeansContext().getService(ValidatorService.class);
- if(validatorService != null)
- {
- return validatorService.getDefaultValidator();
- }
- return null;
+ setProducer(new ProviderBasedProxyProducer<Validator>(webBeansContext, Validator.class, new ValidatorProvider(webBeansContext)));
}
@Override
Modified: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java (original)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java Thu Jan 17 21:20:09 2013
@@ -21,9 +21,11 @@ package org.apache.webbeans.ee.beans;
import javax.enterprise.context.spi.CreationalContext;
import javax.validation.ValidatorFactory;
+import org.apache.webbeans.component.AbstractOwbBean;
import org.apache.webbeans.component.BuildInOwbBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.ProviderBasedProxyProducer;
import org.apache.webbeans.spi.ValidatorService;
public class ValidatorFactoryBean extends BuildInOwbBean<ValidatorFactory>
@@ -32,36 +34,12 @@ public class ValidatorFactoryBean extend
public ValidatorFactoryBean(WebBeansContext webBeansContext)
{
super(webBeansContext, WebBeansType.VALIDATIONFACT, ValidatorFactory.class);
- }
-
- @Override
- protected ValidatorFactory createInstance(CreationalContext<ValidatorFactory> creationalContext)
- {
- ValidatorService validatorService = getWebBeansContext().getService(ValidatorService.class);
- if(validatorService != null)
- {
- ValidatorFactory t = validatorService.getDefaultValidatorFactory();
- return createProxyWrapper(t, creationalContext);
- }
-
- return null;
- }
-
- @Override
- protected ValidatorFactory createActualInstance(CreationalContext<ValidatorFactory> creationalContext)
- {
- ValidatorService validatorService = getWebBeansContext().getService(ValidatorService.class);
- if(validatorService != null)
- {
- return validatorService.getDefaultValidatorFactory();
- }
- return null;
+ setProducer(new ProviderBasedProxyProducer<ValidatorFactory>(webBeansContext, ValidatorFactory.class, new ValidatorFactoryProvider(webBeansContext)));
}
@Override
public boolean isPassivationCapable()
{
return true;
- }
-
+ }
}
Added: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryProvider.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryProvider.java?rev=1434919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryProvider.java (added)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryProvider.java Thu Jan 17 21:20:09 2013
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.ee.beans;
+
+import javax.inject.Provider;
+import javax.validation.ValidatorFactory;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.ValidatorService;
+
+public class ValidatorFactoryProvider implements Provider<ValidatorFactory>
+{
+
+ private WebBeansContext webBeansContext;
+
+ public ValidatorFactoryProvider(WebBeansContext webBeansContext)
+ {
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public ValidatorFactory get()
+ {
+ ValidatorService validatorService = webBeansContext.getService(ValidatorService.class);
+ if(validatorService != null)
+ {
+ return validatorService.getDefaultValidatorFactory();
+ }
+ return null;
+ }
+}
Added: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorProvider.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorProvider.java?rev=1434919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorProvider.java (added)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorProvider.java Thu Jan 17 21:20:09 2013
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.ee.beans;
+
+import javax.inject.Provider;
+import javax.validation.Validator;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.ValidatorService;
+
+public class ValidatorProvider implements Provider<Validator>
+{
+
+ private WebBeansContext webBeansContext;
+
+ public ValidatorProvider(WebBeansContext webBeansContext)
+ {
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public Validator get()
+ {
+ ValidatorService validatorService = webBeansContext.getService(ValidatorService.class);
+ if(validatorService != null)
+ {
+ return validatorService.getDefaultValidator();
+ }
+ return null;
+ }
+}
Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java Thu Jan 17 21:20:09 2013
@@ -118,7 +118,7 @@ public final class EjbUtility
webBeansContext.getWebBeansUtil().inspectErrorStack(
"There are errors that are added by ProcessInjectionTarget event observers. Look at logs for further details");
//Put final InjectionTarget instance
- ejbBean.setInjectionTarget(processInjectionTargetEvent.getInjectionTarget());
+ ejbBean.setProducer(processInjectionTargetEvent.getInjectionTarget());
Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods = new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
for(ProducerMethodBean<?> producerMethod : producerMethodBeans)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java Thu Jan 17 21:20:09 2013
@@ -138,6 +138,10 @@ public abstract class AbstractOwbBean<T>
return webBeansContext.getBeanManagerImpl();
}
+ public Producer<T> getProducer()
+ {
+ return producer;
+ }
/**
* {@inheritDoc}
@@ -145,7 +149,6 @@ public abstract class AbstractOwbBean<T>
@SuppressWarnings("unchecked")
public T create(CreationalContext<T> creationalContext)
{
- T instance;
try
{
if(!(creationalContext instanceof CreationalContextImpl))
@@ -154,32 +157,14 @@ public abstract class AbstractOwbBean<T>
creationalContext, this);
}
- if (this instanceof InjectionTargetBean)
- {
- //X TODO this is a workaround until the producer solution is finally fixed
- InjectionTargetBean<T> it = ((InjectionTargetBean<T>) this);
- instance = it.getInjectionTarget().produce(creationalContext);
- it.getInjectionTarget().inject(instance, creationalContext);
- it.getInjectionTarget().postConstruct(instance);
-
- return instance;
- }
-
- //If wrapper not null
- if(producer != null)
- {
- instance = producer.produce(creationalContext);
- if (producer instanceof InjectionTarget)
- {
- ((InjectionTarget)producer).inject(instance, creationalContext);
- ((InjectionTarget)producer).postConstruct(instance);
- }
- }
- else
+ T instance = producer.produce(creationalContext);
+ if (producer instanceof InjectionTarget)
{
- //X TODO review if this is still needed!
- instance = createInstance(creationalContext);
+ InjectionTarget<T> injectionTarget = (InjectionTarget<T>)producer;
+ injectionTarget.inject(instance, creationalContext);
+ injectionTarget.postConstruct(instance);
}
+ return instance;
}
catch (Exception re)
{
@@ -192,7 +177,6 @@ public abstract class AbstractOwbBean<T>
throw (RuntimeException) throwable;
}
- return instance;
}
private Throwable getRootException(Throwable throwable)
@@ -207,23 +191,6 @@ public abstract class AbstractOwbBean<T>
}
}
- /**
- * Creates the instance of the bean that has a specific implementation
- * type. Each subclass must define its own create mechanism.
- *
- * @param creationalContext the contextual instance shall be created in
- * @return instance of the bean
- */
- protected abstract T createInstance(CreationalContext<T> creationalContext);
-
- /**
- * {@inheritDoc}
- */
- public T createNewInstance(CreationalContext<T> creationalContext)
- {
- return createInstance(creationalContext);
- }
-
/*
* (non-Javadoc)
* @param creationalContext the contextual instance has been created in
@@ -232,22 +199,12 @@ public abstract class AbstractOwbBean<T>
{
try
{
- Producer<T> wrapper = producer;
- if(wrapper != null)
+ if (producer instanceof InjectionTarget)
{
- // instance might be null if we only created a proxy
- // but no actual contextual instance for this bean!
- if (instance != null)
- {
- wrapper.dispose(instance);
- }
- }
- else
- {
- //Destroy instance, call @PreDestroy
- destroyInstance(instance,creationalContext);
+ InjectionTarget<T> injectionTarget = (InjectionTarget<T>)producer;
+ injectionTarget.preDestroy(instance);
}
-
+ producer.dispose(instance);
//Destory dependent instances
creationalContext.release();
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java Thu Jan 17 21:20:09 2013
@@ -86,15 +86,6 @@ public abstract class AbstractProducerBe
}
/**
- * {@inheritDoc}
- */
- @Override
- protected T createInstance(CreationalContext<T> creationalContext)
- {
- return null;
- }
-
- /**
* Destroys bean.
*
* @param <K> bean type info
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java Thu Jan 17 21:20:09 2013
@@ -28,6 +28,7 @@ import javax.enterprise.inject.spi.BeanM
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.InjectableBeanManager;
+import org.apache.webbeans.portable.BeanManagerProducer;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
@@ -44,17 +45,7 @@ public class BeanManagerBean extends Abs
Dependent.class,
BeanManager.class,
Collections.<Class<? extends Annotation>>emptySet());
- }
-
- @Override
- protected BeanManager createInstance(CreationalContext<BeanManager> creationalContext)
- {
- if (manager == null)
- {
- manager = new InjectableBeanManager(getWebBeansContext().getBeanManagerImpl());
- }
-
- return manager;
+ setProducer(new BeanManagerProducer(webBeansContext));
}
@Override
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java Thu Jan 17 21:20:09 2013
@@ -18,81 +18,19 @@
*/
package org.apache.webbeans.component;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.logging.Level;
import javax.enterprise.context.Dependent;
-import javax.enterprise.context.spi.CreationalContext;
-import org.apache.webbeans.proxy.MethodHandler;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
import org.apache.webbeans.config.WebBeansContext;
-/**
- * Following 3 options are provided for vendor's built-in beans implementation:
- *
- * 1. "none", means the built-in bean does not need a proxy wrapper.
- * 2. "default", means the built-in bean needs OWB-provided default proxy wrapper.
- * 3. A class name, which implements MethodHandler. This will allow vendor to
- * customize the serialization behavior.
- *
- * The default values for 4 built-in beans are "default". Following property could
- * be used to change the default behavior:
- *
- * Property Name: org.apache.webbeans.component.BuiltInOwbBean.property
- * Sample values: UserTransation:none;Principal:default;Validation:com.mycompany.ValidationProxyHandler;ValidationFactory:default
- *
- * @author yingwang
- *
- * @param <T>
- */
public abstract class BuildInOwbBean<T> extends AbstractOwbBean<T>
{
- private final HashMap<WebBeansType, String> proxyHandlerMap = new HashMap<WebBeansType, String>();
-
-
- public static final String BUILD_IN_BEAN_PROPERTY = "org.apache.webbeans.component.BuildInOwbBean.property";
-
- /**
- * none means the build-in bean instance does not need proxy wrapper. This is used
- * for the build-in beans from vendors that are already serializable.
- */
- private static final String PROXY_HANDLER_VALUE_NONE="none";
-
- /**
- * default means the build-bin bean instance need a default proxy wrapper. And the
- * default proxy wrapper will get new instance from build in bean providers when
- * it is deserialized.
- */
- private static final String PROXY_HANDLER_VALUE_DEFAULT="default";
-
- /**
- * The handler class name.
- */
- protected String handlerClassName;
-
- /**
- * The handler class.
- */
- protected Class handlerClass;
-
-
- protected Constructor handlerContructor;
-
- @SuppressWarnings("unchecked")
protected BuildInOwbBean(WebBeansContext webBeansContext, WebBeansType webBeansType, Class<T> returnType)
{
super(webBeansContext,
@@ -102,211 +40,5 @@ public abstract class BuildInOwbBean<T>
Dependent.class,
returnType,
Collections.<Class<? extends Annotation>>emptySet());
- initBuildInBeanConfig(getWebBeansContext());
- handlerClassName = proxyHandlerMap.get(getWebBeansType());
- if (handlerClassName.equalsIgnoreCase(PROXY_HANDLER_VALUE_NONE) ||
- handlerClassName.equalsIgnoreCase(PROXY_HANDLER_VALUE_DEFAULT))
- {
- return;
- }
-
- // initialize the custom proxy handler class and its constructor.
- AccessController.doPrivileged(new PrivilegedAction<T>()
- {
- private BuildInOwbBean<T> buildinBean;
-
- public T run()
- {
- try
- {
- buildinBean.handlerClass = Class.forName(getName());
- buildinBean.handlerContructor = buildinBean.handlerClass.getConstructor(BuildInOwbBean.class, Object.class);
- return null;
- }
- catch (ClassNotFoundException e)
- {
- getLogger().log(Level.SEVERE, e.getMessage(), e);
- }
- catch (SecurityException e)
- {
- getLogger().log(Level.SEVERE, e.getMessage(), e);
- }
- catch (NoSuchMethodException e)
- {
- getLogger().log(Level.SEVERE, e.getMessage(), e);
- }
- buildinBean.handlerClass = null;
- buildinBean.handlerContructor = null;
- return null;
- }
-
- protected PrivilegedAction<T> setBuildInBean(BuildInOwbBean<T> b)
- {
- buildinBean = b;
- return this;
- }
-
- }.setBuildInBean(this));
- }
-
- /**
- * Parse the custom property.
- *
- * @return true
- */
- protected boolean initBuildInBeanConfig(WebBeansContext webBeansContext)
- {
- String s = webBeansContext.getOpenWebBeansConfiguration().getProperty(BUILD_IN_BEAN_PROPERTY);
- proxyHandlerMap.put(WebBeansType.USERTRANSACTION, PROXY_HANDLER_VALUE_DEFAULT);
- proxyHandlerMap.put(WebBeansType.PRINCIPAL, PROXY_HANDLER_VALUE_DEFAULT);
- proxyHandlerMap.put(WebBeansType.VALIDATION, PROXY_HANDLER_VALUE_DEFAULT);
- proxyHandlerMap.put(WebBeansType.VALIDATIONFACT, PROXY_HANDLER_VALUE_DEFAULT);
- if (s != null && !s.equalsIgnoreCase("default"))
- {
- int i;
- String name;
- String value;
- String mapStrings[] = s.split(";");
- for(i=0; i<mapStrings.length; i++)
- {
- name = null;
- value = null;
- String pair[] = mapStrings[i].trim().split(":");
- if (pair.length == 2)
- {
- name = pair[0].trim();
- value = pair[1].trim();
- }
- if (name == null || value == null || value.equalsIgnoreCase(PROXY_HANDLER_VALUE_DEFAULT))
- {
- continue;
- }
- if (name.contains("UserTransaction"))
- {
- proxyHandlerMap.put(WebBeansType.USERTRANSACTION, value);
- }
- else if (name.contains("Principal"))
- {
- proxyHandlerMap.put(WebBeansType.PRINCIPAL, value);
- }
- else if (name.contains("Validation"))
- {
- proxyHandlerMap.put(WebBeansType.VALIDATION, value);
- }
- else if (name.contains("ValidationFactory"))
- {
- proxyHandlerMap.put(WebBeansType.VALIDATIONFACT, value);
- }
- }
- }
- return true;
- }
-
-
- /**
- * Create a dependent proxy wrapper around the actual build in bean instance.
- *
- * @param actualInstance
- * @param creationalContext
- * @return
- */
- protected T createProxyWrapper(T actualInstance, CreationalContext<T> creationalContext)
- {
- if (handlerClassName.equals(PROXY_HANDLER_VALUE_NONE))
- {
- return actualInstance;
- }
-
- T proxy = (T) webBeansContext.getProxyFactoryRemove().createBuildInBeanProxyRemove(this);
- if (handlerClassName.equals(PROXY_HANDLER_VALUE_DEFAULT))
- {
- final MethodHandler handler = new BuildInBeanMethodHandler(this, actualInstance);
- webBeansContext.getProxyFactoryRemove().setHandler(proxy, handler);
- return proxy;
- }
- else if (handlerContructor != null)
- {
- try
- {
- webBeansContext.getProxyFactoryRemove().setHandler(proxy,
- (MethodHandler) (handlerContructor.newInstance(this, actualInstance)));
- return proxy;
- }
- catch (Exception e)
- {
- getLogger().log(Level.SEVERE, e.getMessage(), e);
- //X TODO don't we rethrow this Exception?
- }
- }
- return null;
- }
-
-
- protected abstract T createActualInstance(CreationalContext<T> creationalContext);
-
-
- /**
- * The default build in bean handler.
- *
- * @author yingwang
- *
- * @param <T>
- */
- public static class BuildInBeanMethodHandler<T> implements MethodHandler, Serializable
- {
-
- /**
- *
- */
- private static final long serialVersionUID = -2442900183095535369L;
-
- private BuildInOwbBean<T> bean;
-
- private T actualObject = null;
-
- //DO NOT REMOVE, used by failover and passivation.
- public BuildInBeanMethodHandler()
- {
- }
-
- public BuildInBeanMethodHandler(BuildInOwbBean<T> bean, T actualObject)
- {
- this.bean = bean;
- this.actualObject = actualObject;
- }
-
- public Object invoke(Object instance, Method method, Method proceed, Object[] arguments) throws Throwable
- {
- return invoke(instance, method, arguments);
- }
-
- public Object invoke(Object instance, Method method, Object[] arguments) throws Throwable
- {
- //interface method.
- return method.invoke(actualObject, arguments);
- }
-
- private void writeObject(ObjectOutputStream s) throws IOException
- {
- s.writeLong(serialVersionUID);
- s.writeObject(bean.getId());
- }
-
- private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException
- {
- if(s.readLong() == serialVersionUID)
- {
- String id = (String)s.readObject();
- WebBeansContext webBeansContext = WebBeansContext.currentInstance();
- bean = (BuildInOwbBean<T>)webBeansContext.getBeanManagerImpl().getPassivationCapableBean(id);
- // create new real instance after deserialized.
- actualObject = bean.createActualInstance(null);
- }
- else
- {
- throw new IOException("Serial version uid does not match.");
- }
- }
-
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java Thu Jan 17 21:20:09 2013
@@ -57,50 +57,4 @@ public class ConversationBean extends In
false);
setEnabled(true);
}
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected Conversation createInstance(CreationalContext<Conversation> creationalContext)
- {
- Conversation conversation = null;
- //Gets conversation service
- ConversationService conversationService = getWebBeansContext().getService(ConversationService.class);
- //Gets conversation id
- String conversationId = conversationService.getConversationId();
- //Gets session id that conversation is created
- String sessionId = conversationService.getConversationSessionId();
-
- //If conversation id is not null, this means that
- //conversation is propogated
- if (conversationId != null)
- {
- //Gets propogated conversation
- conversation = getWebBeansContext().getConversationManager().getPropogatedConversation(conversationId,sessionId);
- }
-
- if (conversation == null)
- {
- if(sessionId != null)
- {
- conversation = new ConversationImpl(conversationService.getConversationSessionId(),
- getWebBeansContext());
- }
- else
- {
- //Used in Tests
- conversation = new ConversationImpl(getWebBeansContext());
- }
-
- }
-
- return conversation;
- }
-
- @Override
- protected void destroyInstance(Conversation instance, CreationalContext<Conversation> creationalContext)
- {
- }
-
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java Thu Jan 17 21:20:09 2013
@@ -32,6 +32,7 @@ import javax.enterprise.util.TypeLiteral
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.event.EventImpl;
import org.apache.webbeans.exception.WebBeansException;
+import org.apache.webbeans.portable.EventProducer;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
@@ -43,9 +44,6 @@ import org.apache.webbeans.util.Collecti
public class EventBean<T> extends AbstractOwbBean<Event<T>>
{
- //X TODO refactor. public static variables are utterly ugly
- public static ThreadLocal<InjectionPoint> local = new ThreadLocal<InjectionPoint>();
-
/**
* Creates a new instance of event bean.
* @param webBeansContext
@@ -60,52 +58,7 @@ public class EventBean<T> extends Abstra
Dependent.class,
new TypeLiteral<Event<T>>(){}.getRawType(),
Collections.<Class<? extends Annotation>>emptySet());
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected Event<T> createInstance(CreationalContext<Event<T>> creationalContext)
- {
- Event<T> instance = null;
-
- InjectionPoint injectionPoint = local.get();
- Type eventType;
-
- if(injectionPoint != null)
- {
- Type[] eventActualTypeArgs;
- Type type = injectionPoint.getType();
- ParameterizedType pt = (ParameterizedType) type;
- eventActualTypeArgs = pt.getActualTypeArguments();
-
- //First argument and sole argument is actual Event type
- //Example : Event<MyEvent>
- eventType = eventActualTypeArgs[0];
-
- //Event qualifiers
- Annotation[] qualifiers = new Annotation[injectionPoint.getQualifiers().size()];
- qualifiers = injectionPoint.getQualifiers().toArray(qualifiers);
-
- try
- {
- instance = new EventImpl<T>(qualifiers, eventType, injectionPoint, getWebBeansContext());
- }
- catch (Exception e)
- {
- throw new WebBeansException("Exception in creating Event implicit component for event type : "
- + eventType);
- }
- finally
- {
- local.set(null);
- local.remove();
- }
-
- }
-
- return instance;
+ setProducer(new EventProducer<T>(webBeansContext));
}
/* (non-Javadoc)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java Thu Jan 17 21:20:09 2013
@@ -28,13 +28,12 @@ import javax.enterprise.context.spi.Crea
import javax.enterprise.inject.spi.InjectionPoint;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.InjectionPointProducer;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
public class InjectionPointBean extends AbstractOwbBean<InjectionPoint>
{
- private static ThreadLocal<Stack<InjectionPoint>> localThreadlocalStack = new ThreadLocal<Stack<InjectionPoint>>();
-
public InjectionPointBean(WebBeansContext webBeansContext)
{
super(webBeansContext,
@@ -44,60 +43,9 @@ public class InjectionPointBean extends
Dependent.class,
InjectionPoint.class,
Collections.<Class<? extends Annotation>>emptySet());
+ setProducer(new InjectionPointProducer());
}
-
- private static Stack<InjectionPoint> getStackOfInjectionPoints()
- {
- Stack<InjectionPoint> stackIP = localThreadlocalStack.get();
- if (null == stackIP)
- {
- stackIP = new Stack<InjectionPoint>();
- }
- return stackIP;
- }
-
- public static boolean setThreadLocal(InjectionPoint ip)
- {
- Stack<InjectionPoint> stackIP = getStackOfInjectionPoints();
- stackIP.push(ip);
- localThreadlocalStack.set(stackIP);
- return true;
- }
-
- public static void unsetThreadLocal()
- {
- Stack<InjectionPoint> stackIP = getStackOfInjectionPoints();
- stackIP.pop();
- }
-
- /**
- * Removes the ThreadLocal from the ThreadMap to prevent memory leaks.
- */
- public static void removeThreadLocal()
- {
- getStackOfInjectionPoints().clear();
- localThreadlocalStack.remove();
- }
-
- public static boolean isStackEmpty()
- {
- return getStackOfInjectionPoints().isEmpty();
- }
-
- @Override
- protected InjectionPoint createInstance(CreationalContext<InjectionPoint> creationalContext)
- {
- InjectionPoint ip = getStackOfInjectionPoints().peek();
- return ip;
- }
-
- @Override
- protected void destroyInstance(InjectionPoint instance, CreationalContext<InjectionPoint> creationalContext)
- {
- removeThreadLocal();
- }
-
/* (non-Javadoc)
* @see org.apache.webbeans.component.AbstractOwbBean#isPassivationCapable()
*/
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java Thu Jan 17 21:20:09 2013
@@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import javax.enterprise.context.Dependent;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Decorator;
@@ -41,7 +40,6 @@ import javax.enterprise.inject.spi.Injec
import org.apache.webbeans.intercept.webbeans.WebBeansInterceptorBeanPleaseRemove;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
-import org.apache.webbeans.proxy.ProxyFactory;
import org.apache.webbeans.util.Asserts;
@@ -63,8 +61,6 @@ public abstract class InjectionTargetBea
*/
protected List<InterceptorData> interceptorStack = new ArrayList<InterceptorData>();
- private InjectionTarget<T> injectionTarget = null;
-
/**
* Decorators
* @deprecated will be replaced by InterceptorResolution logic
@@ -105,52 +101,7 @@ public abstract class InjectionTargetBea
public InjectionTarget<T> getInjectionTarget()
{
- return injectionTarget;
- }
-
- public void setInjectionTarget(InjectionTarget<T> injectionTarget)
- {
- this.injectionTarget = injectionTarget;
- }
-
- /**
- * {@inheritDoc}
- */
- protected T createInstance(CreationalContext<T> creationalContext)
- {
- //Create actual bean instance
- T instance = getInjectionTarget().produce(creationalContext);
-
- //X TODO this should not be needed finally!
- //For dependent instance checks
- if(getScope() == Dependent.class && !(this instanceof EnterpriseBeanMarker))
- {
- final ProxyFactory proxyFactory = getWebBeansContext().getProxyFactoryRemove();
- T result = (T) proxyFactory.createDependentScopedBeanProxyRemove(this, instance, creationalContext);
- //Means that Dependent Bean has interceptor/decorator
- if(proxyFactory.isProxyInstanceRemove(result))
- {
- //This is a dependent scoped bean instance,
- //Therefore we inject dependencies of this instance
- //Otherwise we loose injection
- getInjectionTarget().inject(instance, creationalContext);
-
- //Dependent proxy
- return result;
- }
- }
-
- getInjectionTarget().inject(instance, creationalContext);
-
- //Post construct
- if(getWebBeansType().equals(WebBeansType.MANAGED))
- {
- // Call Post Construct
- //X TODO
- }
-
-
- return instance;
+ return (InjectionTarget<T>) getProducer();
}
/**
@@ -158,7 +109,7 @@ public abstract class InjectionTargetBea
*/
protected void destroyInstance(T instance, CreationalContext<T> creationalContext)
{
- injectionTarget.preDestroy(instance);
+ getInjectionTarget().preDestroy(instance);
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java Thu Jan 17 21:20:09 2013
@@ -25,22 +25,17 @@ import java.util.Collections;
import java.util.Set;
import javax.enterprise.context.Dependent;
-import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.Instance;
-import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.util.TypeLiteral;
import javax.inject.Provider;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.inject.AbstractInjectable;
-import org.apache.webbeans.inject.instance.InstanceFactory;
+import org.apache.webbeans.portable.InstanceProducer;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
public class InstanceBean<T> extends AbstractOwbBean<Instance<T>>
{
- // TODO refactor. public static variables are uterly ugly
- public static ThreadLocal<InjectionPoint> local = new ThreadLocal<InjectionPoint>();
@SuppressWarnings("serial")
public InstanceBean(WebBeansContext webBeansContext)
@@ -52,43 +47,7 @@ public class InstanceBean<T> extends Abs
Dependent.class,
new TypeLiteral<Instance<T>>(){}.getRawType(),
Collections.<Class<? extends Annotation>>emptySet());
- }
-
-
- @Override
- protected Instance<T> createInstance(CreationalContext<Instance<T>> creationalContext)
- {
- try
- {
- InjectionPoint injectionPoint = local.get();
- Set<Annotation> qualifiers;
- Type type;
-
- if (injectionPoint != null)
- {
- ParameterizedType injectedType = (ParameterizedType)injectionPoint.getType();
- qualifiers = injectionPoint.getQualifiers();
- type = injectedType.getActualTypeArguments()[0];
- }
- else
- {
- qualifiers = getQualifiers();
- type = getReturnType();
- }
-
- Object ownerInstance = AbstractInjectable.instanceUnderInjection.get();
-
- Instance<T> instance = InstanceFactory.getInstance(type, injectionPoint, getWebBeansContext(),
- creationalContext, ownerInstance,
- qualifiers.toArray(new Annotation[qualifiers.size()]));
-
- return instance;
- }
- finally
- {
- local.set(null);
- local.remove();
- }
+ setProducer(new InstanceProducer<T>(getReturnType(), AnnotationUtil.DEFAULT_AND_ANY_ANNOTATION, webBeansContext));
}
/* (non-Javadoc)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java Thu Jan 17 21:20:09 2013
@@ -49,13 +49,6 @@ public interface OwbBean<T> extends Bean
* @see WebBeansType
*/
public WebBeansType getWebBeansType();
-
- /**
- * Create an instance.
- * @param creationalContext creaitonal context
- * @return instance
- */
- public T createNewInstance(CreationalContext<T> creationalContext);
/**
* Destroys instance.
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java Thu Jan 17 21:20:09 2013
@@ -65,11 +65,11 @@ public class ProducerFieldBean<T> extend
* {@inheritDoc}
*/
@Override
- protected T createInstance(CreationalContext<T> creationalContext)
+ public T create(CreationalContext<T> creationalContext)
{
T instance = null;
- instance = createDefaultInstance(creationalContext);
+ instance = super.create(creationalContext);
checkNullInstance(instance);
checkScopeType();
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java Thu Jan 17 21:20:09 2013
@@ -42,6 +42,7 @@ import org.apache.webbeans.context.creat
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.inject.AbstractInjectable;
import org.apache.webbeans.inject.InjectableMethod;
+import org.apache.webbeans.portable.ProducerMethodProducer;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
@@ -70,7 +71,7 @@ public class ProducerMethodBean<T> exten
* @param ownerComponent parent bean
* @param returnType producer method return type
*/
- public ProducerMethodBean(InjectionTargetBean<?> ownerComponent,
+ public <P> ProducerMethodBean(InjectionTargetBean<P> ownerComponent,
Set<Type> types,
Set<Annotation> qualifiers,
Class<? extends Annotation> scope,
@@ -130,171 +131,19 @@ public class ProducerMethodBean<T> exten
}
return passivatingId;
}
-
- /**
- * {@inheritDoc}
- */
+
@Override
- protected T createInstance(CreationalContext<T> creationalContext)
- {
- T instance = createDefaultInstance(creationalContext);
+ public T create(CreationalContext<T> creationalContext) {
+ T instance = super.create(creationalContext);
// Check null instance
checkNullInstance(instance);
// Check scope type
checkScopeType();
-
return instance;
}
/**
- * Default producer method creation.
- *
- * @param creationalContext creational context
- * @return producer method instance
- */
- protected T createDefaultInstance(CreationalContext<T> creationalContext)
- {
- T instance = null;
- Object parentInstance = null;
- CreationalContext<?> parentCreational = null;
- InjectableMethod<T> m;
- List<DependentCreationalContext<Object>> oldDependents =
- dependentInstanceOfProducerMethods.get();
-
- try
- {
- //X TODO dependentInstanceOfProducerMethods MUST NOT be public!
- dependentInstanceOfProducerMethods.set(new ArrayList<DependentCreationalContext<Object>>());
- parentCreational = getManager().createCreationalContext(ownerComponent);
-
- if (!Modifier.isStatic(creatorMethod.getModifiers()))
- {
- parentInstance = getParentInstance(parentCreational);
- }
-
- //X TODO get the InjectionTargetImpl from the parent bean
- InjectionTarget ownerBeanInjectionTarget = getParent().getInjectionTarget();
- m = new InjectableMethod<T>(creatorMethod, parentInstance, new Producer<T>()
- {
-
- @Override
- public T produce(CreationalContext<T> creationalContext)
- {
- return null;
- }
-
- @Override
- public void dispose(T instance)
- {
- }
-
- @Override
- public Set<InjectionPoint> getInjectionPoints()
- {
- return ProducerMethodBean.this.getInjectionPoints();
- }
- }, (CreationalContextImpl<T>) creationalContext);
- //Injection of parameters
- instance = m.doInjection();
-
- boolean isInjectionToAnotherBean = false;
- Contextual<?> contextual = null;
- if(creationalContext instanceof CreationalContextImpl)
- {
- contextual = ((CreationalContextImpl)creationalContext).getBean();
- isInjectionToAnotherBean = contextual == this ? false : true;
- }
-
- ThreadLocal<Object> injectionTargetInstance = AbstractInjectable.instanceUnderInjection;
- if(isInjectionToAnotherBean)
- {
- if(oldDependents != null)
- {
- DependentCreationalContext<Object> dependentCreational =
- new DependentCreationalContext<Object>((Contextual<Object>)this);
- dependentCreational.setInstance(instance);
- dependentCreational.setDependentType(DependentType.BEAN);
-
- oldDependents.add(dependentCreational);
- }
- }
- else
- {
- List<DependentCreationalContext<Object>> dependents =
- dependentInstanceOfProducerMethods.get();
- if(dependents != null)
- {
- for(int i = 0, size = dependents.size(); i < size; i++)
- {
- DependentCreationalContext<Object> dependent = dependents.get(i);
- ((CreationalContextImpl)creationalContext).
- addDependent(instance, dependent.getContextual(), dependent.getInstance());
- }
- }
- }
-
- //Adding dependents of producers
- Map<Bean<?>, Object> dependents = m.getDependentBeanParameters();
- if(dependents != null)
- {
- Set<Bean<?>> beans = dependents.keySet();
- for(Bean<?> bean : beans)
- {
- if(creationalContext instanceof CreationalContextImpl)
- {
- if(isInjectionToAnotherBean)
- {
- if(oldDependents == null)
- {
- if (injectionTargetInstance != null && injectionTargetInstance.get() != null)
- {
- ((CreationalContextImpl)creationalContext)
- .addDependent(injectionTargetInstance.get(), this , instance);
- }
- }
- else
- {
- DependentCreationalContext<Object> dependentCreational =
- new DependentCreationalContext<Object>((Contextual<Object>)bean);
- dependentCreational.setInstance(dependents.get(bean));
- dependentCreational.setDependentType(DependentType.BEAN);
- oldDependents.add(dependentCreational);
- }
- }
- else
- {
- ((CreationalContextImpl)creationalContext).addDependent(instance, bean ,
- dependents.get(bean));
- }
- }
- }
- }
- }
- finally
- {
- if (getParent().getScope().equals(Dependent.class))
- {
- // this handles dependent scoped producer methods and fields
- destroyBean(getParent(), parentInstance, parentCreational);
- }
-
- if(oldDependents != null)
- {
- dependentInstanceOfProducerMethods.set(oldDependents);
- }
- else
- {
- dependentInstanceOfProducerMethods.set(null);
- dependentInstanceOfProducerMethods.remove();
- }
- }
-
- return instance;
-
- }
-
- /**
* {@inheritDoc}
*/
@Override
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java Thu Jan 17 21:20:09 2013
@@ -25,6 +25,7 @@ import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import org.apache.webbeans.exception.WebBeansException;
+import org.apache.webbeans.portable.ProviderBasedProxyProducer;
import org.apache.webbeans.proxy.ResourceProxyHandler;
import org.apache.webbeans.spi.ResourceInjectionService;
import org.apache.webbeans.spi.api.ResourceReference;
@@ -49,31 +50,11 @@ public class ResourceBean<X, T extends A
this.resourceReference = resourceReference;
}
- @Override
- @SuppressWarnings("unchecked")
- protected X createInstance(CreationalContext<X> creationalContext)
+ public ResourceReference<X, T> getReference()
{
- try
- {
- ResourceInjectionService resourceService = getWebBeansContext().getService(ResourceInjectionService.class);
- X instance = resourceService.getResourceReference(resourceReference);
-
- if (instance == null || Modifier.isFinal(instance.getClass().getModifiers()))
- {
- return instance;
- }
-
- X proxyInstance = (X) getWebBeansContext().getProxyFactoryRemove().getResourceBeanProxyClass(this).newInstance();
- webBeansContext.getProxyFactoryRemove().setHandler(proxyInstance, new ResourceProxyHandler(this,instance));
- return proxyInstance;
- }
- catch (Exception e)
- {
- throw new WebBeansException(e);
- }
-
+ return resourceReference;
}
-
+
/**
* Called after deserialization to get a new instance for some type of resource bean instance that are
* not serializable.
Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java?rev=1434919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java Thu Jan 17 21:20:09 2013
@@ -0,0 +1,34 @@
+package org.apache.webbeans.component;
+
+import java.lang.reflect.Modifier;
+
+import javax.inject.Provider;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.exception.WebBeansException;
+import org.apache.webbeans.spi.ResourceInjectionService;
+import org.apache.webbeans.spi.api.ResourceReference;
+
+public class ResourceProvider<T> implements Provider<T> {
+
+ private ResourceReference<T, ?> resourceReference = null;
+ private WebBeansContext webBeansContext;
+
+ public ResourceProvider(ResourceReference<T, ?> resourceReference, WebBeansContext webBeansContext) {
+ this.resourceReference = resourceReference;
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public T get() {
+ try
+ {
+ ResourceInjectionService resourceService = webBeansContext.getService(ResourceInjectionService.class);
+ return resourceService.getResourceReference(resourceReference);
+ }
+ catch (Exception e)
+ {
+ throw new WebBeansException(e);
+ }
+ }
+}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java Thu Jan 17 21:20:09 2013
@@ -46,6 +46,7 @@ import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.Producer;
import javax.inject.Inject;
import javax.inject.Named;
@@ -54,11 +55,15 @@ import org.apache.webbeans.component.Inj
import org.apache.webbeans.component.ProducerFieldBean;
import org.apache.webbeans.component.ProducerMethodBean;
import org.apache.webbeans.component.ResourceBean;
+import org.apache.webbeans.component.ResourceProvider;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.inject.DefinitionException;
import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.portable.ProducerFieldProducer;
+import org.apache.webbeans.portable.ProducerMethodProducer;
+import org.apache.webbeans.portable.ProviderBasedProxyProducer;
import org.apache.webbeans.spi.api.ResourceReference;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
@@ -262,6 +267,11 @@ public abstract class AbstractInjectionT
}
pr.setDisposalMethod(declaredMethod);
+ Producer<?> producer = pr.getProducer();
+ if (producer instanceof ProducerMethodProducer)
+ {
+ ((ProducerMethodProducer)producer).setDisposalMethod(annotatedMethod);
+ }
}
}
}
@@ -564,7 +574,9 @@ public abstract class AbstractInjectionT
= new ResourceBeanBuilder<T, Annotation>(bean, resourceRef, annotatedField);
resourceBeanCreator.defineQualifiers();
ResourceBean<T, Annotation> resourceBean = resourceBeanCreator.getBean();
-
+ resourceBean.setProducer(new ProviderBasedProxyProducer(webBeansContext, resourceBean.getReturnType(), new ResourceProvider(resourceBean.getReference(), webBeansContext)));
+
+
resourceBean.setProducerField(field);
producerBeans.add(resourceBean);
@@ -580,6 +592,7 @@ public abstract class AbstractInjectionT
producerFieldBeanCreator.defineQualifiers();
producerFieldBeanCreator.defineName();
ProducerFieldBean<T> producerFieldBean = producerFieldBeanCreator.getBean();
+ producerFieldBean.setProducer(new ProducerFieldProducer(bean, annotatedField, producerFieldBean.getInjectionPoints()));
producerFieldBean.setProducerField(field);
if (producerFieldBean.getReturnType().isPrimitive())
@@ -639,6 +652,8 @@ public abstract class AbstractInjectionT
producerMethodBeanCreator.defineApiType();
producerMethodBeanCreator.defineName();
ProducerMethodBean<T> producerMethodBean = producerMethodBeanCreator.getBean();
+ ProducerMethodProducerBuilder producerBuilder = new ProducerMethodProducerBuilder(producerMethodBean);
+ producerMethodBean.setProducer(producerBuilder.build(annotatedMethod));
producerMethodBean.setCreatorMethod(annotatedMethod.getJavaMember());
if (ClassUtil.getClass(annotatedMethod.getBaseType()).isPrimitive())
{
@@ -700,7 +715,7 @@ public abstract class AbstractInjectionT
boolean enabled);
@Override
- protected I createBean(Set<Type> types,
+ protected final I createBean(Set<Type> types,
Set<Annotation> qualifiers,
Class<? extends Annotation> scope,
String name,
@@ -714,7 +729,7 @@ public abstract class AbstractInjectionT
//X TODO hack to set the InjectionTarget
InjectionTarget<T> injectionTarget
= buildInjectionTarget(types, qualifiers, bean.getAnnotatedType(), bean.getInjectionPoints(), webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
- bean.setInjectionTarget(injectionTarget);
+ bean.setProducer(injectionTarget);
return bean;
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java Thu Jan 17 21:20:09 2013
@@ -198,7 +198,7 @@ public class ManagedBeanBuilder<T, M ext
//X TODO move proxy instance creation into JavassistProxyFactory!
- bean.setInjectionTarget(new AbstractDecoratorInjectionTarget<T>(bean));
+ bean.setProducer(new AbstractDecoratorInjectionTarget<T>(bean));
return bean;
}
Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java?rev=1434919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java Thu Jan 17 21:20:09 2013
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.component.creation;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+import org.apache.webbeans.component.OwbBean;
+import org.apache.webbeans.component.ProducerMethodBean;
+import org.apache.webbeans.portable.ProducerMethodProducer;
+import org.apache.webbeans.util.Asserts;
+
+public class ProducerMethodProducerBuilder<T, P> {
+
+ private ProducerMethodBean<T> bean;
+ private AnnotatedMethod<P> producerMethod;
+ private AnnotatedMethod<P> disposalMethod;
+ private Set<InjectionPoint> injectionPoints;
+
+ public ProducerMethodProducerBuilder(ProducerMethodBean<T> producerMethodBean) {
+ Asserts.assertNotNull(producerMethodBean);
+ this.bean = producerMethodBean;
+ }
+
+ public ProducerMethodProducer<T, P> build(AnnotatedMethod<P> method) {
+ producerMethod = method;
+ defineDisposalMethod();
+ defineInjectionPoints();
+ return new ProducerMethodProducer<T, P>((OwbBean<P>) bean.getParent(), producerMethod, disposalMethod, injectionPoints);
+ }
+
+ private void defineDisposalMethod() {
+ Set<AnnotatedMethod<? super P>> annotatedMethods = producerMethod.getDeclaringType().getMethods();
+ for (AnnotatedMethod<? super P> annotatedMethod : annotatedMethods)
+ {
+ if (annotatedMethod.getDeclaringType().equals(producerMethod.getDeclaringType()))
+ {
+ for (AnnotatedParameter<? super P> annotatedParameter : annotatedMethod.getParameters())
+ {
+ if (annotatedParameter.isAnnotationPresent(Disposes.class))
+ {
+ disposalMethod = (AnnotatedMethod<P>)annotatedMethod;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ private void defineInjectionPoints() {
+ injectionPoints = new HashSet<InjectionPoint>(bean.getWebBeansContext().getInjectionPointFactory().getMethodInjectionPointData(bean, producerMethod));
+ if (disposalMethod != null)
+ {
+ injectionPoints.addAll(bean.getWebBeansContext().getInjectionPointFactory().getMethodInjectionPointData(bean, disposalMethod));
+ }
+ }
+}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java Thu Jan 17 21:20:09 2013
@@ -132,14 +132,6 @@ public class ThirdpartyBeanImpl<T> exten
}
@Override
- protected T createInstance(CreationalContext<T> creationalContext)
- {
- throw new UnsupportedOperationException();
- }
-
-
-
- @Override
protected void destroyInstance(T instance,CreationalContext<T> creationalContext)
{
throw new UnsupportedOperationException();
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Thu Jan 17 21:20:09 2013
@@ -907,7 +907,6 @@ public class BeansDeployer
}
Set<ObserverMethod<?>> observerMethods = new HashSet<ObserverMethod<?>>();
- //X TODO WTF??? ((InjectionTargetProducerRemove)processInjectionTargetEvent.getInjectionTarget()).setBean(bean);
if(managedBeanCreator.isEnabled())
{
observerMethods = managedBeanCreator.defineObserverMethods(bean);
@@ -916,7 +915,7 @@ public class BeansDeployer
Set<ProducerFieldBean<?>> producerFields = managedBeanCreator.defineProducerFields(bean);
//Put final InjectionTarget instance
- bean.setInjectionTarget(processInjectionTargetEvent.getInjectionTarget());
+ bean.setProducer(processInjectionTargetEvent.getInjectionTarget());
ManagedBean<T> managedBean = (ManagedBean<T>)bean;
Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
@@ -1008,7 +1007,7 @@ public class BeansDeployer
.fireProcessInjectionTargetEvent(bean).getInjectionTarget();
if (updatedInjectionTarget != originalInjectionTarget && bean != null)
{
- bean.setInjectionTarget(updatedInjectionTarget);
+ bean.setProducer(updatedInjectionTarget);
}
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Thu Jan 17 21:20:09 2013
@@ -80,6 +80,7 @@ import org.apache.webbeans.exception.def
import org.apache.webbeans.exception.inject.DefinitionException;
import org.apache.webbeans.plugins.OpenWebBeansJmsPlugin;
import org.apache.webbeans.portable.AnnotatedElementFactory;
+import org.apache.webbeans.portable.InjectionPointProducer;
import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.portable.events.discovery.ErrorStack;
import org.apache.webbeans.spi.ScannerService;
@@ -590,10 +591,10 @@ public class BeanManagerImpl implements
}
boolean ijbSet = false;
- if (InjectionPointBean.isStackEmpty())
+ if (InjectionPointProducer.isStackEmpty())
{
ijbSet = true;
- InjectionPointBean.setThreadLocal(injectionPoint);
+ InjectionPointProducer.setThreadLocal(injectionPoint);
}
try
@@ -615,7 +616,7 @@ public class BeanManagerImpl implements
{
if (ijbSet)
{
- InjectionPointBean.unsetThreadLocal();
+ InjectionPointProducer.unsetThreadLocal();
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java?rev=1434919&r1=1434918&r2=1434919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java Thu Jan 17 21:20:09 2013
@@ -33,6 +33,7 @@ import javax.enterprise.util.TypeLiteral
import org.apache.webbeans.component.InjectionPointBean;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.InjectionPointProducer;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.OwbCustomObjectInputStream;
import org.apache.webbeans.util.WebBeansUtil;
@@ -78,14 +79,14 @@ public class EventImpl<T> implements Eve
*/
public void fire(T event)
{
- InjectionPointBean.setThreadLocal(injectionPoint);
+ InjectionPointProducer.setThreadLocal(injectionPoint);
try
{
webBeansContext.getBeanManagerImpl().fireEvent(event, injectedBindings);
}
finally
{
- InjectionPointBean.setThreadLocal(injectionPoint);
+ InjectionPointProducer.setThreadLocal(injectionPoint);
}
}