[openwebbeans] branch master updated: adding comments and cosmetic changes

2020-06-03 Thread gerdogdu
This is an automated email from the ASF dual-hosted git repository.

gerdogdu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git


The following commit(s) were added to refs/heads/master by this push:
 new 91dcbf2  adding comments and cosmetic changes
 new b6c1310  Merge branch 'master' of 
https://github.com/apache/openwebbeans
91dcbf2 is described below

commit 91dcbf2484c7da9aeba9a90712a4a16f8438c84f
Author: Gurkan Erdogdu 
AuthorDate: Thu Jun 4 01:25:55 2020 +0300

adding comments and cosmetic changes
---
 .../src/main/java/org/apache/webbeans/component/OwbBean.java | 5 +
 .../main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java| 2 +-
 .../java/org/apache/webbeans/spi/ApplicationBoundaryService.java | 2 +-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java 
b/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
index 83173c7..2e859ca 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
@@ -96,5 +96,10 @@ public interface OwbBean extends Bean
  */
 boolean isDependent();
 
+
+/**
+ * Gets the context instance in which this bean belongs to.
+ * @return the {@link WebBeansContext} instance
+ */
 WebBeansContext getWebBeansContext();
 }
diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
 
b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
index 2ec4daa..8934c59 100644
--- 
a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
+++ 
b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
@@ -146,7 +146,7 @@ public abstract class AbstractProxyFactory
 /**
  * @return the marker interface which should be used for this proxy.
  */
-protected abstract Class getMarkerInterface();
+protected abstract Class getMarkerInterface();
 
 /**
  * generate the bytecode for creating the instance variables of the class
diff --git 
a/webbeans-spi/src/main/java/org/apache/webbeans/spi/ApplicationBoundaryService.java
 
b/webbeans-spi/src/main/java/org/apache/webbeans/spi/ApplicationBoundaryService.java
index 592d9f2..ac81045 100644
--- 
a/webbeans-spi/src/main/java/org/apache/webbeans/spi/ApplicationBoundaryService.java
+++ 
b/webbeans-spi/src/main/java/org/apache/webbeans/spi/ApplicationBoundaryService.java
@@ -38,6 +38,6 @@ public interface ApplicationBoundaryService
 /**
  * @return the ClassLoader which shall get used to e.g. proxy that very 
class.
  */
-ClassLoader getBoundaryClassLoader(Class classToProxy);
+ClassLoader getBoundaryClassLoader(Class classToProxy);
 
 }



[openwebbeans] branch master updated: [OWB-1325] adding ClassLoaderProxyService.LoadFirst, companion of Spy flavor which behaves exactly as ClassLoaderProxyService but trying first to load the class i

2020-06-03 Thread rmannibucau
This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git


The following commit(s) were added to refs/heads/master by this push:
 new 1f83552  [OWB-1325] adding ClassLoaderProxyService.LoadFirst, 
companion of Spy flavor which behaves exactly as ClassLoaderProxyService but 
trying first to load the class in the proxied class or TCCL
1f83552 is described below

commit 1f83552e74c7966fc1009a3a7417900e7ce42b32
Author: Romain Manni-Bucau 
AuthorDate: Wed Jun 3 18:47:21 2020 +0200

[OWB-1325] adding ClassLoaderProxyService.LoadFirst, companion of Spy 
flavor which behaves exactly as ClassLoaderProxyService but trying first to 
load the class in the proxied class or TCCL
---
 .../webbeans/proxy/AbstractProxyFactory.java   |  8 ++
 .../webbeans/service/ClassLoaderProxyService.java  | 29 ++
 2 files changed, 37 insertions(+)

diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
 
b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
index 2ec4daa..42ccb69 100644
--- 
a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
+++ 
b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
@@ -58,6 +58,8 @@ public abstract class AbstractProxyFactory
 
 private final DefiningClassService definingService;
 
+private final boolean useStaticNames;
+
 protected WebBeansContext webBeansContext;
 
 private final int javaVersion;
@@ -76,6 +78,8 @@ public abstract class AbstractProxyFactory
 this.webBeansContext = webBeansContext;
 javaVersion = determineDefaultJavaVersion();
 definingService = 
webBeansContext.getService(DefiningClassService.class);
+useStaticNames = 
Boolean.parseBoolean(webBeansContext.getOpenWebBeansConfiguration()
+.getProperty("org.apache.webbeans.proxy.useStaticNames"));
 unsafe = definingService == null ? new Unsafe() : null;
 }
 
@@ -192,6 +196,10 @@ public abstract class AbstractProxyFactory
 proxyClassName = fixPreservedPackages(proxyClassName);
 
 String finalName = proxyClassName;
+if (useStaticNames)  // todo: refine
+{
+return proxyClassName + 0;
+}
 
 for (int i = 0; i < MAX_CLASSLOAD_TRIES; i++)
 {
diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
 
b/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
index 9946850..9a564ec 100644
--- 
a/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
+++ 
b/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
@@ -25,6 +25,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
 import org.apache.webbeans.spi.DefiningClassService;
 
 public class ClassLoaderProxyService implements DefiningClassService
@@ -80,6 +81,34 @@ public class ClassLoaderProxyService implements 
DefiningClassService
 }
 }
 
+// runtim companion of Spy - @Experimental
+public static class LoadFirst extends ClassLoaderProxyService
+{
+public LoadFirst(final WebBeansContext context)
+{
+super(context);
+}
+
+@Override
+public  Class defineAndLoad(final String name, final byte[] 
bytecode, final Class proxiedClass)
+{
+ClassLoader proxyClassLoader = getProxyClassLoader(proxiedClass);
+if (proxyClassLoader == null)
+{
+proxyClassLoader = 
Thread.currentThread().getContextClassLoader();
+}
+try
+{
+return (Class) proxyClassLoader.loadClass(name);
+}
+catch (final ClassNotFoundException e)
+{
+
WebBeansLoggerFacade.getLogger(getClass()).warning(e.getMessage());
+return super.defineAndLoad(name, bytecode, proxiedClass);
+}
+}
+}
+
 private static class ProxiesClassLoader extends ClassLoader
 {
 private final boolean skipPackages;



[openwebbeans] branch master updated: [OWB-1325] adding ClassLoaderProxyService.Spy DefiningClassService for toolings

2020-06-03 Thread rmannibucau
This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git


The following commit(s) were added to refs/heads/master by this push:
 new a6e6e40  [OWB-1325] adding ClassLoaderProxyService.Spy 
DefiningClassService for toolings
a6e6e40 is described below

commit a6e6e40782f082655097d7f84338293e6d7f5fae
Author: Romain Manni-Bucau 
AuthorDate: Wed Jun 3 18:26:17 2020 +0200

[OWB-1325] adding ClassLoaderProxyService.Spy DefiningClassService for 
toolings
---
 .../webbeans/service/ClassLoaderProxyService.java  | 46 --
 1 file changed, 42 insertions(+), 4 deletions(-)

diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
 
b/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
index 618a898..9946850 100644
--- 
a/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
+++ 
b/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java
@@ -19,6 +19,8 @@
 package org.apache.webbeans.service;
 
 import java.security.ProtectionDomain;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -31,7 +33,15 @@ public class ClassLoaderProxyService implements 
DefiningClassService
 
 public ClassLoaderProxyService(final WebBeansContext context)
 {
-this.loader = new 
ProxiesClassLoader(context.getApplicationBoundaryService().getApplicationClassLoader());
+this.loader = new ProxiesClassLoader(
+context,
+Boolean.parseBoolean(context.getOpenWebBeansConfiguration()
+.getProperty(getClass().getName() + ".skipPackages")));
+}
+
+protected ClassLoaderProxyService(final ProxiesClassLoader loader)
+{
+this.loader = loader;
 }
 
 @Override
@@ -47,13 +57,38 @@ public class ClassLoaderProxyService implements 
DefiningClassService
 name, bytecode, proxiedClass.getPackage(), 
proxiedClass.getProtectionDomain());
 }
 
+// for build tools - @Experimental
+public static class Spy extends ClassLoaderProxyService
+{
+private final Map proxies = new HashMap<>();
+
+public Spy(final WebBeansContext context)
+{
+super(new ProxiesClassLoader(context, true));
+}
+
+public Map getProxies()
+{
+return proxies;
+}
+
+@Override
+public  Class defineAndLoad(final String name, final byte[] 
bytecode, final Class proxiedClass)
+{
+proxies.put(name, bytecode);
+return super.defineAndLoad(name, bytecode, proxiedClass);
+}
+}
+
 private static class ProxiesClassLoader extends ClassLoader
 {
+private final boolean skipPackages;
 private final ConcurrentMap> classes = new 
ConcurrentHashMap<>();
 
-private ProxiesClassLoader(final ClassLoader applicationClassLoader)
+private ProxiesClassLoader(final WebBeansContext context, boolean 
skipPackages)
 {
-super(applicationClassLoader);
+
super(context.getApplicationBoundaryService().getApplicationClassLoader());
+this.skipPackages = skipPackages;
 }
 
 
@@ -80,7 +115,10 @@ public class ClassLoaderProxyService implements 
DefiningClassService
 existing = classes.get(key);
 if (existing == null)
 {
-definePackageFor(pck, protectionDomain);
+if (!skipPackages)
+{
+definePackageFor(pck, protectionDomain);
+}
 existing = super.defineClass(proxyClassName, 
proxyBytes, 0, proxyBytes.length);
 resolveClass(existing);
 classes.put(key, existing);



svn commit: r1061409 - in /websites: production/openwebbeans/content/index.html staging/openwebbeans/trunk/content/index.html

2020-06-03 Thread buildbot
Author: buildbot
Date: Wed Jun  3 10:35:08 2020
New Revision: 1061409

Log:
Dynamic update by buildbot for openwebbeans

Modified:
websites/production/openwebbeans/content/index.html
websites/staging/openwebbeans/trunk/content/index.html

Modified: websites/production/openwebbeans/content/index.html
==
(empty)

Modified: websites/staging/openwebbeans/trunk/content/index.html
==
(empty)




[openwebbeans] branch master updated: [OWB-1214] fallback on loadClass(package-info) when getPackage is not available in the JVM

2020-06-03 Thread rmannibucau
This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git


The following commit(s) were added to refs/heads/master by this push:
 new 5d00bcc  [OWB-1214] fallback on loadClass(package-info) when 
getPackage is not available in the JVM
5d00bcc is described below

commit 5d00bcc5c9d9a5efc0a9848d46eff91ef5186025
Author: Romain Manni-Bucau 
AuthorDate: Wed Jun 3 10:43:26 2020 +0200

[OWB-1214] fallback on loadClass(package-info) when getPackage is not 
available in the JVM
---
 .../org/apache/webbeans/config/BeansDeployer.java  | 55 ++
 1 file changed, 25 insertions(+), 30 deletions(-)

diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java 
b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
index 99689fa..057db3d 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
@@ -145,30 +145,6 @@ public class BeansDeployer
 private static final Logger logger = 
WebBeansLoggerFacade.getLogger(BeansDeployer.class);
 public static final String JAVAX_ENTERPRISE_PACKAGE = "javax.enterprise.";
 
-private static final Method GET_PACKAGE;
-static
-{
-Method getPackage;
-try
-{
-getPackage = 
ClassLoader.class.getDeclaredMethod("getDefinedPackage", String.class);
-getPackage.setAccessible(true);
-}
-catch (NoSuchMethodException e)
-{
-try
-{
-getPackage = ClassLoader.class.getDeclaredMethod("getPackage", 
String.class);
-getPackage.setAccessible(true);
-}
-catch (NoSuchMethodException ex)
-{
-throw new IllegalStateException(ex);
-}
-}
-GET_PACKAGE = getPackage;
-}
-
 
 /**Deployment is started or not*/
 protected boolean deployed;
@@ -1443,13 +1419,32 @@ public class BeansDeployer
 {
 return result;
 }
-try // this is related to classloader and not to Package 
actually :( so we need reflection
+while (true)
 {
-pckge = Package.class.cast(GET_PACKAGE.invoke(classLoader, 
previousPackage));
-}
-catch (Exception e)
-{
-throw new IllegalStateException(e);
+try // not always existing but enables to go further when 
getPackage is not available (graal)
+{
+pckge = classLoader.loadClass(previousPackage +
+(previousPackage.isEmpty() ? "" :".") + 
"package-info").getPackage();
+break;
+}
+catch (Exception e)
+{
+if (previousPackage.isEmpty())
+{
+pckge = null;
+break;
+}
+packageVetoCache.put(previousPackage, false);
+idx = previousPackage.lastIndexOf('.');
+if (idx > 0)
+{
+previousPackage = previousPackage.substring(0, 
idx);
+}
+else
+{
+previousPackage = "";
+}
+}
 }
 }
 else