You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2012/06/13 00:06:06 UTC
git commit: DELTASPIKE-191 additional hints
Updated Branches:
refs/heads/master 6d7f4c936 -> c0f45e4ba
DELTASPIKE-191 additional hints
Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/c0f45e4b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/c0f45e4b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/c0f45e4b
Branch: refs/heads/master
Commit: c0f45e4ba2c89cb4318f43bbf3d21ef66eed4261
Parents: 6d7f4c9
Author: gpetracek <gp...@apache.org>
Authored: Wed Jun 13 00:04:27 2012 +0200
Committer: gpetracek <gp...@apache.org>
Committed: Wed Jun 13 00:04:27 2012 +0200
----------------------------------------------------------------------
.../core/api/provider/BeanManagerProvider.java | 77 ++++++++-------
1 files changed, 40 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/c0f45e4b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
index 023b25a..089260a 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
@@ -51,16 +51,15 @@ import org.apache.deltaspike.core.util.ClassUtils;
* <p><b>Attention:</b> This method is intended for being used in user code at runtime.
* If this method gets used during Container boot (in an Extension), non-portable
* behaviour results. During bootstrapping an Extension shall @Inject BeanManager to get
- * access to the underlying BeanManager (see e.g. {@link #cleanFinalBeanManagerMap(AfterDeploymentValidation)} ).
+ * access to the underlying BeanManager (see e.g. {@link #cleanupFinalBeanManagers} ).
* This is the only way to guarantee to get the right
* BeanManager in more complex Container scenarios.</p>
*/
public class BeanManagerProvider implements Extension
{
- private static BeanManagerProvider bmpSingleton = null;
-
private static Logger logger = Logger.getLogger(BeanManagerProvider.class.getName());
+ private static BeanManagerProvider bmpSingleton = null;
/**
* This data container is used for storing the BeanManager for each
@@ -95,8 +94,6 @@ public class BeanManagerProvider implements Extension
*/
private volatile Map<ClassLoader, BeanManagerInfo> bmInfos = new ConcurrentHashMap<ClassLoader, BeanManagerInfo>();
-
-
/**
* Returns if the {@link BeanManagerProvider} has been initialized.
* Usually it isn't needed to call this method in application code.
@@ -128,6 +125,7 @@ public class BeanManagerProvider implements Extension
// CodiStartupBroadcaster.broadcastStartup();
// here bmp might not be null (depends on the broadcasters)
}
+
if (bmpSingleton == null)
{
throw new IllegalStateException("No " + BeanManagerProvider.class.getName() + " in place! " +
@@ -149,34 +147,11 @@ public class BeanManagerProvider implements Extension
{
setBeanManagerProvider(this);
- ClassLoader cl = ClassUtils.getClassLoader(null);
- BeanManagerInfo bmi = getBeanManagerInfo(cl);
+ BeanManagerInfo bmi = getBeanManagerInfo(ClassUtils.getClassLoader(null));
bmi.loadTimeBm = beanManager;
}
/**
- * Get or create the BeanManagerInfo for the given ClassLoader
- */
- private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
- {
- BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
- if (bmi == null)
- {
- synchronized (this)
- {
- bmi = bmpSingleton.bmInfos.get(cl);
- if (bmi == null)
- {
- bmi = new BeanManagerInfo();
- bmpSingleton.bmInfos.put(cl, bmi);
- }
- }
- }
-
- return bmi;
- }
-
- /**
* The active {@link BeanManager} for the current application (/{@link ClassLoader}). This method will throw an
* {@link IllegalStateException} if the BeanManager cannot be found.
*
@@ -185,11 +160,9 @@ public class BeanManagerProvider implements Extension
*/
public BeanManager getBeanManager()
{
- ClassLoader classLoader = ClassUtils.getClassLoader(null);
+ BeanManagerInfo bmi = getBeanManagerInfo(ClassUtils.getClassLoader(null));
- BeanManagerInfo bmi = getBeanManagerInfo(classLoader);
-
- // warn the user if he tries to use the BeanManager before container starupt
+ // warn the user if he tries to use the BeanManager before container startup
if (!bmi.booted)
{
logger.warning("When using the BeanManager to retrieve Beans before the Container is started," +
@@ -207,18 +180,21 @@ public class BeanManagerProvider implements Extension
{
// first we look for a BeanManager from JNDI
result = resolveBeanManagerViaJndi();
+
if (result == null)
{
// if none found, we take the one we got from the Extension loading
result = bmi.loadTimeBm;
}
+
if (result == null)
{
throw new IllegalStateException("Unable to find BeanManager. " +
"Please ensure that you configured the CDI implementation of your choice properly.");
}
- // finally store the resolved BeanManager in the result cache
+ // store the resolved BeanManager in the result cache until #cleanupFinalBeanManagers gets called
+ // -> afterwards the next call of #getBeanManager will trigger the final lookup
bmi.finalBm = result;
}
}
@@ -227,7 +203,6 @@ public class BeanManagerProvider implements Extension
return result;
}
-
/**
* By cleaning the final BeanManager map after the Deployment got Validated,
* we prevent premature loading of information from JNDI in cases where the
@@ -236,12 +211,17 @@ public class BeanManagerProvider implements Extension
* This might happen if someone uses the BeanManagerProvider during Extension
* startup.
*/
- public void cleanFinalBeanManagerMap(@Observes AfterDeploymentValidation adv)
+ public void cleanupFinalBeanManagers(@Observes AfterDeploymentValidation adv)
{
for (BeanManagerInfo bmi : bmpSingleton.bmInfos.values())
{
bmi.finalBm = null;
bmi.booted = true;
+
+ /*possible issue with >weld< based servers:
+ if #getBeanManager gets called in a custom AfterDeploymentValidation observer >after< this observer,
+ the wrong bean-manager might get stored (not deterministic due to the unspecified order of observers).
+ finally a bean-manager for a single bda will be stored and returned (which isn't the bm exposed via jndi).*/
}
}
@@ -264,7 +244,7 @@ public class BeanManagerProvider implements Extension
*
* @return current {@link BeanManager} which is provided via JNDI
*/
- BeanManager resolveBeanManagerViaJndi()
+ private BeanManager resolveBeanManagerViaJndi()
{
try
{
@@ -280,6 +260,29 @@ public class BeanManagerProvider implements Extension
}
/**
+ * Get or create the BeanManagerInfo for the given ClassLoader
+ */
+ private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
+ {
+ BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
+
+ if (bmi == null)
+ {
+ synchronized (this)
+ {
+ bmi = bmpSingleton.bmInfos.get(cl);
+ if (bmi == null)
+ {
+ bmi = new BeanManagerInfo();
+ bmpSingleton.bmInfos.put(cl, bmi);
+ }
+ }
+ }
+
+ return bmi;
+ }
+
+ /**
* This function exists to prevent findbugs to complain about
* setting a static member from a non-static function.
*
Re: git commit: DELTASPIKE-191 additional hints
Posted by Mark Struberg <st...@yahoo.de>.
Maybe a unix vs windows problem, hmm
Anyway, just curious.
LieGrue,
strub
----- Original Message -----
> From: Gerhard Petracek <ge...@gmail.com>
> To: deltaspike-dev@incubator.apache.org
> Cc:
> Sent: Wednesday, June 13, 2012 9:57 AM
> Subject: Re: git commit: DELTASPIKE-191 additional hints
>
> nothing special - maybe different settings...
> here it depends on the tool if 'blame' works in an useful manner (in
> case
> of moved parts).
>
> regards,
> gerhard
>
>
>
> 2012/6/13 Mark Struberg <st...@yahoo.de>
>
>> btw, what git client do you use?
>>
>> When moving methods you create 100% inserts. Normally (with the git cmd
>> line client) moving a method preserves the history.
>> Will try with mine quickly.
>>
>>
>> LieGrue,
>> strub
>>
>>
>>
>> ----- Original Message -----
>> > From: "gpetracek@apache.org" <gp...@apache.org>
>> > To: deltaspike-commits@incubator.apache.org
>> > Cc:
>> > Sent: Wednesday, June 13, 2012 12:06 AM
>> > Subject: git commit: DELTASPIKE-191 additional hints
>> >
>> > Updated Branches:
>> > refs/heads/master 6d7f4c936 -> c0f45e4ba
>> >
>> >
>> > DELTASPIKE-191 additional hints
>> >
>> >
>> > Project:
>> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
>> > Commit:
>> >
>> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/c0f45e4b
>> > Tree:
>> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/c0f45e4b
>> > Diff:
>> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/c0f45e4b
>> >
>> > Branch: refs/heads/master
>> > Commit: c0f45e4ba2c89cb4318f43bbf3d21ef66eed4261
>> > Parents: 6d7f4c9
>> > Author: gpetracek <gp...@apache.org>
>> > Authored: Wed Jun 13 00:04:27 2012 +0200
>> > Committer: gpetracek <gp...@apache.org>
>> > Committed: Wed Jun 13 00:04:27 2012 +0200
>> >
>> > ----------------------------------------------------------------------
>> > .../core/api/provider/BeanManagerProvider.java | 77
> ++++++++-------
>> > 1 files changed, 40 insertions(+), 37 deletions(-)
>> > ----------------------------------------------------------------------
>> >
>> >
>> >
>>
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/c0f45e4b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> >
>>
> a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
>> >
>>
> b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
>> > index 023b25a..089260a 100644
>> > ---
>> >
>>
> a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
>> > +++
>> >
>>
> b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
>> > @@ -51,16 +51,15 @@ import org.apache.deltaspike.core.util.ClassUtils;
>> > * <p><b>Attention:</b> This method is intended for
> being
>> > used in user code at runtime.
>> > * If this method gets used during Container boot (in an Extension),
>> > non-portable
>> > * behaviour results. During bootstrapping an Extension shall @Inject
>> > BeanManager to get
>> > - * access to the underlying BeanManager (see e.g. {@link
>> > #cleanFinalBeanManagerMap(AfterDeploymentValidation)} ).
>> > + * access to the underlying BeanManager (see e.g. {@link
>> > #cleanupFinalBeanManagers} ).
>> > * This is the only way to guarantee to get the right
>> > * BeanManager in more complex Container scenarios.</p>
>> > */
>> > public class BeanManagerProvider implements Extension
>> > {
>> > - private static BeanManagerProvider bmpSingleton = null;
>> > -
>> > private static Logger logger =
>> > Logger.getLogger(BeanManagerProvider.class.getName());
>> >
>> > + private static BeanManagerProvider bmpSingleton = null;
>> >
>> > /**
>> > * This data container is used for storing the BeanManager for
> each
>> > @@ -95,8 +94,6 @@ public class BeanManagerProvider implements
> Extension
>> > */
>> > private volatile Map<ClassLoader, BeanManagerInfo> bmInfos
> = new
>> > ConcurrentHashMap<ClassLoader, BeanManagerInfo>();
>> >
>> > -
>> > -
>> > /**
>> > * Returns if the {@link BeanManagerProvider} has been
> initialized.
>> > * Usually it isn't needed to call this method in application
> code.
>> > @@ -128,6 +125,7 @@ public class BeanManagerProvider implements
> Extension
>> > // CodiStartupBroadcaster.broadcastStartup();
>> > // here bmp might not be null (depends on the
> broadcasters)
>> > }
>> > +
>> > if (bmpSingleton == null)
>> > {
>> > throw new IllegalStateException("No " +
>> > BeanManagerProvider.class.getName() + " in place! " +
>> > @@ -149,34 +147,11 @@ public class BeanManagerProvider implements
>> Extension
>> > {
>> > setBeanManagerProvider(this);
>> >
>> > - ClassLoader cl = ClassUtils.getClassLoader(null);
>> > - BeanManagerInfo bmi = getBeanManagerInfo(cl);
>> > + BeanManagerInfo bmi =
>> > getBeanManagerInfo(ClassUtils.getClassLoader(null));
>> > bmi.loadTimeBm = beanManager;
>> > }
>> >
>> > /**
>> > - * Get or create the BeanManagerInfo for the given ClassLoader
>> > - */
>> > - private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
>> > - {
>> > - BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
>> > - if (bmi == null)
>> > - {
>> > - synchronized (this)
>> > - {
>> > - bmi = bmpSingleton.bmInfos.get(cl);
>> > - if (bmi == null)
>> > - {
>> > - bmi = new BeanManagerInfo();
>> > - bmpSingleton.bmInfos.put(cl, bmi);
>> > - }
>> > - }
>> > - }
>> > -
>> > - return bmi;
>> > - }
>> > -
>> > - /**
>> > * The active {@link BeanManager} for the current application
>> (/{@link
>> > ClassLoader}). This method will throw an
>> > * {@link IllegalStateException} if the BeanManager cannot be
> found.
>> > *
>> > @@ -185,11 +160,9 @@ public class BeanManagerProvider implements
>> Extension
>> > */
>> > public BeanManager getBeanManager()
>> > {
>> > - ClassLoader classLoader = ClassUtils.getClassLoader(null);
>> > + BeanManagerInfo bmi =
>> > getBeanManagerInfo(ClassUtils.getClassLoader(null));
>> >
>> > - BeanManagerInfo bmi = getBeanManagerInfo(classLoader);
>> > -
>> > - // warn the user if he tries to use the BeanManager before
>> container
>> > starupt
>> > + // warn the user if he tries to use the BeanManager before
>> container
>> > startup
>> > if (!bmi.booted)
>> > {
>> > logger.warning("When using the BeanManager to
> retrieve Beans
>> > before the Container is started," +
>> > @@ -207,18 +180,21 @@ public class BeanManagerProvider implements
>> Extension
>> > {
>> > // first we look for a BeanManager from JNDI
>> > result = resolveBeanManagerViaJndi();
>> > +
>> > if (result == null)
>> > {
>> > // if none found, we take the one we got from
>> the
>> > Extension loading
>> > result = bmi.loadTimeBm;
>> > }
>> > +
>> > if (result == null)
>> > {
>> > throw new IllegalStateException("Unable
> to find
>> > BeanManager. " +
>> > "Please ensure that you
> configured the
>> CDI
>> > implementation of your choice properly.");
>> > }
>> >
>> > - // finally store the resolved BeanManager in the
>> result
>> > cache
>> > + // store the resolved BeanManager in the result
>> cache until
>> > #cleanupFinalBeanManagers gets called
>> > + // -> afterwards the next call of
> #getBeanManager
>> will
>> > trigger the final lookup
>> > bmi.finalBm = result;
>> > }
>> > }
>> > @@ -227,7 +203,6 @@ public class BeanManagerProvider implements
> Extension
>> > return result;
>> > }
>> >
>> > -
>> > /**
>> > * By cleaning the final BeanManager map after the Deployment got
>> > Validated,
>> > * we prevent premature loading of information from JNDI in cases
>> where the
>> > @@ -236,12 +211,17 @@ public class BeanManagerProvider implements
>> Extension
>> > * This might happen if someone uses the BeanManagerProvider
> during
>> > Extension
>> > * startup.
>> > */
>> > - public void cleanFinalBeanManagerMap(@Observes
>> AfterDeploymentValidation
>> > adv)
>> > + public void cleanupFinalBeanManagers(@Observes
>> AfterDeploymentValidation
>> > adv)
>> > {
>> > for (BeanManagerInfo bmi : bmpSingleton.bmInfos.values())
>> > {
>> > bmi.finalBm = null;
>> > bmi.booted = true;
>> > +
>> > + /*possible issue with >weld< based servers:
>> > + if #getBeanManager gets called in a custom
>> > AfterDeploymentValidation observer >after< this observer,
>> > + the wrong bean-manager might get stored (not
> deterministic
>> due to
>> > the unspecified order of observers).
>> > + finally a bean-manager for a single bda will be stored
> and
>> returned
>> > (which isn't the bm exposed via jndi).*/
>> > }
>> > }
>> >
>> > @@ -264,7 +244,7 @@ public class BeanManagerProvider implements
> Extension
>> > *
>> > * @return current {@link BeanManager} which is provided via JNDI
>> > */
>> > - BeanManager resolveBeanManagerViaJndi()
>> > + private BeanManager resolveBeanManagerViaJndi()
>> > {
>> > try
>> > {
>> > @@ -280,6 +260,29 @@ public class BeanManagerProvider implements
>> Extension
>> > }
>> >
>> > /**
>> > + * Get or create the BeanManagerInfo for the given ClassLoader
>> > + */
>> > + private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
>> > + {
>> > + BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
>> > +
>> > + if (bmi == null)
>> > + {
>> > + synchronized (this)
>> > + {
>> > + bmi = bmpSingleton.bmInfos.get(cl);
>> > + if (bmi == null)
>> > + {
>> > + bmi = new BeanManagerInfo();
>> > + bmpSingleton.bmInfos.put(cl, bmi);
>> > + }
>> > + }
>> > + }
>> > +
>> > + return bmi;
>> > + }
>> > +
>> > + /**
>> > * This function exists to prevent findbugs to complain about
>> > * setting a static member from a non-static function.
>> > *
>> >
>>
>
Re: git commit: DELTASPIKE-191 additional hints
Posted by Gerhard Petracek <ge...@gmail.com>.
nothing special - maybe different settings...
here it depends on the tool if 'blame' works in an useful manner (in case
of moved parts).
regards,
gerhard
2012/6/13 Mark Struberg <st...@yahoo.de>
> btw, what git client do you use?
>
> When moving methods you create 100% inserts. Normally (with the git cmd
> line client) moving a method preserves the history.
> Will try with mine quickly.
>
>
> LieGrue,
> strub
>
>
>
> ----- Original Message -----
> > From: "gpetracek@apache.org" <gp...@apache.org>
> > To: deltaspike-commits@incubator.apache.org
> > Cc:
> > Sent: Wednesday, June 13, 2012 12:06 AM
> > Subject: git commit: DELTASPIKE-191 additional hints
> >
> > Updated Branches:
> > refs/heads/master 6d7f4c936 -> c0f45e4ba
> >
> >
> > DELTASPIKE-191 additional hints
> >
> >
> > Project:
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
> > Commit:
> >
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/c0f45e4b
> > Tree:
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/c0f45e4b
> > Diff:
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/c0f45e4b
> >
> > Branch: refs/heads/master
> > Commit: c0f45e4ba2c89cb4318f43bbf3d21ef66eed4261
> > Parents: 6d7f4c9
> > Author: gpetracek <gp...@apache.org>
> > Authored: Wed Jun 13 00:04:27 2012 +0200
> > Committer: gpetracek <gp...@apache.org>
> > Committed: Wed Jun 13 00:04:27 2012 +0200
> >
> > ----------------------------------------------------------------------
> > .../core/api/provider/BeanManagerProvider.java | 77 ++++++++-------
> > 1 files changed, 40 insertions(+), 37 deletions(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/c0f45e4b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> > ----------------------------------------------------------------------
> > diff --git
> >
> a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> >
> b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> > index 023b25a..089260a 100644
> > ---
> >
> a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> > +++
> >
> b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> > @@ -51,16 +51,15 @@ import org.apache.deltaspike.core.util.ClassUtils;
> > * <p><b>Attention:</b> This method is intended for being
> > used in user code at runtime.
> > * If this method gets used during Container boot (in an Extension),
> > non-portable
> > * behaviour results. During bootstrapping an Extension shall @Inject
> > BeanManager to get
> > - * access to the underlying BeanManager (see e.g. {@link
> > #cleanFinalBeanManagerMap(AfterDeploymentValidation)} ).
> > + * access to the underlying BeanManager (see e.g. {@link
> > #cleanupFinalBeanManagers} ).
> > * This is the only way to guarantee to get the right
> > * BeanManager in more complex Container scenarios.</p>
> > */
> > public class BeanManagerProvider implements Extension
> > {
> > - private static BeanManagerProvider bmpSingleton = null;
> > -
> > private static Logger logger =
> > Logger.getLogger(BeanManagerProvider.class.getName());
> >
> > + private static BeanManagerProvider bmpSingleton = null;
> >
> > /**
> > * This data container is used for storing the BeanManager for each
> > @@ -95,8 +94,6 @@ public class BeanManagerProvider implements Extension
> > */
> > private volatile Map<ClassLoader, BeanManagerInfo> bmInfos = new
> > ConcurrentHashMap<ClassLoader, BeanManagerInfo>();
> >
> > -
> > -
> > /**
> > * Returns if the {@link BeanManagerProvider} has been initialized.
> > * Usually it isn't needed to call this method in application code.
> > @@ -128,6 +125,7 @@ public class BeanManagerProvider implements Extension
> > // CodiStartupBroadcaster.broadcastStartup();
> > // here bmp might not be null (depends on the broadcasters)
> > }
> > +
> > if (bmpSingleton == null)
> > {
> > throw new IllegalStateException("No " +
> > BeanManagerProvider.class.getName() + " in place! " +
> > @@ -149,34 +147,11 @@ public class BeanManagerProvider implements
> Extension
> > {
> > setBeanManagerProvider(this);
> >
> > - ClassLoader cl = ClassUtils.getClassLoader(null);
> > - BeanManagerInfo bmi = getBeanManagerInfo(cl);
> > + BeanManagerInfo bmi =
> > getBeanManagerInfo(ClassUtils.getClassLoader(null));
> > bmi.loadTimeBm = beanManager;
> > }
> >
> > /**
> > - * Get or create the BeanManagerInfo for the given ClassLoader
> > - */
> > - private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
> > - {
> > - BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
> > - if (bmi == null)
> > - {
> > - synchronized (this)
> > - {
> > - bmi = bmpSingleton.bmInfos.get(cl);
> > - if (bmi == null)
> > - {
> > - bmi = new BeanManagerInfo();
> > - bmpSingleton.bmInfos.put(cl, bmi);
> > - }
> > - }
> > - }
> > -
> > - return bmi;
> > - }
> > -
> > - /**
> > * The active {@link BeanManager} for the current application
> (/{@link
> > ClassLoader}). This method will throw an
> > * {@link IllegalStateException} if the BeanManager cannot be found.
> > *
> > @@ -185,11 +160,9 @@ public class BeanManagerProvider implements
> Extension
> > */
> > public BeanManager getBeanManager()
> > {
> > - ClassLoader classLoader = ClassUtils.getClassLoader(null);
> > + BeanManagerInfo bmi =
> > getBeanManagerInfo(ClassUtils.getClassLoader(null));
> >
> > - BeanManagerInfo bmi = getBeanManagerInfo(classLoader);
> > -
> > - // warn the user if he tries to use the BeanManager before
> container
> > starupt
> > + // warn the user if he tries to use the BeanManager before
> container
> > startup
> > if (!bmi.booted)
> > {
> > logger.warning("When using the BeanManager to retrieve Beans
> > before the Container is started," +
> > @@ -207,18 +180,21 @@ public class BeanManagerProvider implements
> Extension
> > {
> > // first we look for a BeanManager from JNDI
> > result = resolveBeanManagerViaJndi();
> > +
> > if (result == null)
> > {
> > // if none found, we take the one we got from
> the
> > Extension loading
> > result = bmi.loadTimeBm;
> > }
> > +
> > if (result == null)
> > {
> > throw new IllegalStateException("Unable to find
> > BeanManager. " +
> > "Please ensure that you configured the
> CDI
> > implementation of your choice properly.");
> > }
> >
> > - // finally store the resolved BeanManager in the
> result
> > cache
> > + // store the resolved BeanManager in the result
> cache until
> > #cleanupFinalBeanManagers gets called
> > + // -> afterwards the next call of #getBeanManager
> will
> > trigger the final lookup
> > bmi.finalBm = result;
> > }
> > }
> > @@ -227,7 +203,6 @@ public class BeanManagerProvider implements Extension
> > return result;
> > }
> >
> > -
> > /**
> > * By cleaning the final BeanManager map after the Deployment got
> > Validated,
> > * we prevent premature loading of information from JNDI in cases
> where the
> > @@ -236,12 +211,17 @@ public class BeanManagerProvider implements
> Extension
> > * This might happen if someone uses the BeanManagerProvider during
> > Extension
> > * startup.
> > */
> > - public void cleanFinalBeanManagerMap(@Observes
> AfterDeploymentValidation
> > adv)
> > + public void cleanupFinalBeanManagers(@Observes
> AfterDeploymentValidation
> > adv)
> > {
> > for (BeanManagerInfo bmi : bmpSingleton.bmInfos.values())
> > {
> > bmi.finalBm = null;
> > bmi.booted = true;
> > +
> > + /*possible issue with >weld< based servers:
> > + if #getBeanManager gets called in a custom
> > AfterDeploymentValidation observer >after< this observer,
> > + the wrong bean-manager might get stored (not deterministic
> due to
> > the unspecified order of observers).
> > + finally a bean-manager for a single bda will be stored and
> returned
> > (which isn't the bm exposed via jndi).*/
> > }
> > }
> >
> > @@ -264,7 +244,7 @@ public class BeanManagerProvider implements Extension
> > *
> > * @return current {@link BeanManager} which is provided via JNDI
> > */
> > - BeanManager resolveBeanManagerViaJndi()
> > + private BeanManager resolveBeanManagerViaJndi()
> > {
> > try
> > {
> > @@ -280,6 +260,29 @@ public class BeanManagerProvider implements
> Extension
> > }
> >
> > /**
> > + * Get or create the BeanManagerInfo for the given ClassLoader
> > + */
> > + private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
> > + {
> > + BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
> > +
> > + if (bmi == null)
> > + {
> > + synchronized (this)
> > + {
> > + bmi = bmpSingleton.bmInfos.get(cl);
> > + if (bmi == null)
> > + {
> > + bmi = new BeanManagerInfo();
> > + bmpSingleton.bmInfos.put(cl, bmi);
> > + }
> > + }
> > + }
> > +
> > + return bmi;
> > + }
> > +
> > + /**
> > * This function exists to prevent findbugs to complain about
> > * setting a static member from a non-static function.
> > *
> >
>
Re: git commit: DELTASPIKE-191 additional hints
Posted by Mark Struberg <st...@yahoo.de>.
btw, what git client do you use?
When moving methods you create 100% inserts. Normally (with the git cmd line client) moving a method preserves the history.
Will try with mine quickly.
LieGrue,
strub
----- Original Message -----
> From: "gpetracek@apache.org" <gp...@apache.org>
> To: deltaspike-commits@incubator.apache.org
> Cc:
> Sent: Wednesday, June 13, 2012 12:06 AM
> Subject: git commit: DELTASPIKE-191 additional hints
>
> Updated Branches:
> refs/heads/master 6d7f4c936 -> c0f45e4ba
>
>
> DELTASPIKE-191 additional hints
>
>
> Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/c0f45e4b
> Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/c0f45e4b
> Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/c0f45e4b
>
> Branch: refs/heads/master
> Commit: c0f45e4ba2c89cb4318f43bbf3d21ef66eed4261
> Parents: 6d7f4c9
> Author: gpetracek <gp...@apache.org>
> Authored: Wed Jun 13 00:04:27 2012 +0200
> Committer: gpetracek <gp...@apache.org>
> Committed: Wed Jun 13 00:04:27 2012 +0200
>
> ----------------------------------------------------------------------
> .../core/api/provider/BeanManagerProvider.java | 77 ++++++++-------
> 1 files changed, 40 insertions(+), 37 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/c0f45e4b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> ----------------------------------------------------------------------
> diff --git
> a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> index 023b25a..089260a 100644
> ---
> a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> +++
> b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
> @@ -51,16 +51,15 @@ import org.apache.deltaspike.core.util.ClassUtils;
> * <p><b>Attention:</b> This method is intended for being
> used in user code at runtime.
> * If this method gets used during Container boot (in an Extension),
> non-portable
> * behaviour results. During bootstrapping an Extension shall @Inject
> BeanManager to get
> - * access to the underlying BeanManager (see e.g. {@link
> #cleanFinalBeanManagerMap(AfterDeploymentValidation)} ).
> + * access to the underlying BeanManager (see e.g. {@link
> #cleanupFinalBeanManagers} ).
> * This is the only way to guarantee to get the right
> * BeanManager in more complex Container scenarios.</p>
> */
> public class BeanManagerProvider implements Extension
> {
> - private static BeanManagerProvider bmpSingleton = null;
> -
> private static Logger logger =
> Logger.getLogger(BeanManagerProvider.class.getName());
>
> + private static BeanManagerProvider bmpSingleton = null;
>
> /**
> * This data container is used for storing the BeanManager for each
> @@ -95,8 +94,6 @@ public class BeanManagerProvider implements Extension
> */
> private volatile Map<ClassLoader, BeanManagerInfo> bmInfos = new
> ConcurrentHashMap<ClassLoader, BeanManagerInfo>();
>
> -
> -
> /**
> * Returns if the {@link BeanManagerProvider} has been initialized.
> * Usually it isn't needed to call this method in application code.
> @@ -128,6 +125,7 @@ public class BeanManagerProvider implements Extension
> // CodiStartupBroadcaster.broadcastStartup();
> // here bmp might not be null (depends on the broadcasters)
> }
> +
> if (bmpSingleton == null)
> {
> throw new IllegalStateException("No " +
> BeanManagerProvider.class.getName() + " in place! " +
> @@ -149,34 +147,11 @@ public class BeanManagerProvider implements Extension
> {
> setBeanManagerProvider(this);
>
> - ClassLoader cl = ClassUtils.getClassLoader(null);
> - BeanManagerInfo bmi = getBeanManagerInfo(cl);
> + BeanManagerInfo bmi =
> getBeanManagerInfo(ClassUtils.getClassLoader(null));
> bmi.loadTimeBm = beanManager;
> }
>
> /**
> - * Get or create the BeanManagerInfo for the given ClassLoader
> - */
> - private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
> - {
> - BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
> - if (bmi == null)
> - {
> - synchronized (this)
> - {
> - bmi = bmpSingleton.bmInfos.get(cl);
> - if (bmi == null)
> - {
> - bmi = new BeanManagerInfo();
> - bmpSingleton.bmInfos.put(cl, bmi);
> - }
> - }
> - }
> -
> - return bmi;
> - }
> -
> - /**
> * The active {@link BeanManager} for the current application (/{@link
> ClassLoader}). This method will throw an
> * {@link IllegalStateException} if the BeanManager cannot be found.
> *
> @@ -185,11 +160,9 @@ public class BeanManagerProvider implements Extension
> */
> public BeanManager getBeanManager()
> {
> - ClassLoader classLoader = ClassUtils.getClassLoader(null);
> + BeanManagerInfo bmi =
> getBeanManagerInfo(ClassUtils.getClassLoader(null));
>
> - BeanManagerInfo bmi = getBeanManagerInfo(classLoader);
> -
> - // warn the user if he tries to use the BeanManager before container
> starupt
> + // warn the user if he tries to use the BeanManager before container
> startup
> if (!bmi.booted)
> {
> logger.warning("When using the BeanManager to retrieve Beans
> before the Container is started," +
> @@ -207,18 +180,21 @@ public class BeanManagerProvider implements Extension
> {
> // first we look for a BeanManager from JNDI
> result = resolveBeanManagerViaJndi();
> +
> if (result == null)
> {
> // if none found, we take the one we got from the
> Extension loading
> result = bmi.loadTimeBm;
> }
> +
> if (result == null)
> {
> throw new IllegalStateException("Unable to find
> BeanManager. " +
> "Please ensure that you configured the CDI
> implementation of your choice properly.");
> }
>
> - // finally store the resolved BeanManager in the result
> cache
> + // store the resolved BeanManager in the result cache until
> #cleanupFinalBeanManagers gets called
> + // -> afterwards the next call of #getBeanManager will
> trigger the final lookup
> bmi.finalBm = result;
> }
> }
> @@ -227,7 +203,6 @@ public class BeanManagerProvider implements Extension
> return result;
> }
>
> -
> /**
> * By cleaning the final BeanManager map after the Deployment got
> Validated,
> * we prevent premature loading of information from JNDI in cases where the
> @@ -236,12 +211,17 @@ public class BeanManagerProvider implements Extension
> * This might happen if someone uses the BeanManagerProvider during
> Extension
> * startup.
> */
> - public void cleanFinalBeanManagerMap(@Observes AfterDeploymentValidation
> adv)
> + public void cleanupFinalBeanManagers(@Observes AfterDeploymentValidation
> adv)
> {
> for (BeanManagerInfo bmi : bmpSingleton.bmInfos.values())
> {
> bmi.finalBm = null;
> bmi.booted = true;
> +
> + /*possible issue with >weld< based servers:
> + if #getBeanManager gets called in a custom
> AfterDeploymentValidation observer >after< this observer,
> + the wrong bean-manager might get stored (not deterministic due to
> the unspecified order of observers).
> + finally a bean-manager for a single bda will be stored and returned
> (which isn't the bm exposed via jndi).*/
> }
> }
>
> @@ -264,7 +244,7 @@ public class BeanManagerProvider implements Extension
> *
> * @return current {@link BeanManager} which is provided via JNDI
> */
> - BeanManager resolveBeanManagerViaJndi()
> + private BeanManager resolveBeanManagerViaJndi()
> {
> try
> {
> @@ -280,6 +260,29 @@ public class BeanManagerProvider implements Extension
> }
>
> /**
> + * Get or create the BeanManagerInfo for the given ClassLoader
> + */
> + private BeanManagerInfo getBeanManagerInfo(ClassLoader cl)
> + {
> + BeanManagerInfo bmi = bmpSingleton.bmInfos.get(cl);
> +
> + if (bmi == null)
> + {
> + synchronized (this)
> + {
> + bmi = bmpSingleton.bmInfos.get(cl);
> + if (bmi == null)
> + {
> + bmi = new BeanManagerInfo();
> + bmpSingleton.bmInfos.put(cl, bmi);
> + }
> + }
> + }
> +
> + return bmi;
> + }
> +
> + /**
> * This function exists to prevent findbugs to complain about
> * setting a static member from a non-static function.
> *
>