You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2016/11/20 21:33:40 UTC
svn commit: r1770591 - in /openwebbeans/trunk:
webbeans-impl/src/main/java/org/apache/webbeans/config/
webbeans-impl/src/main/java/org/apache/webbeans/xml/
webbeans-spi/src/main/java/org/apache/webbeans/spi/
Author: struberg
Date: Sun Nov 20 21:33:39 2016
New Revision: 1770591
URL: http://svn.apache.org/viewvc?rev=1770591&view=rev
Log:
OWB-1160 improve BDA url matching in DefaultArchiveService
* we probably might have problems with case-insensitive file systems. Needs a closer look.
* added proper toString for BeanArchiveInfo
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java
openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java
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=1770591&r1=1770590&r2=1770591&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 Sun Nov 20 21:33:39 2016
@@ -191,7 +191,7 @@ public class BeansDeployer
String usage = this.webBeansContext.getOpenWebBeansConfiguration().getProperty(OpenWebBeansConfiguration.USE_EJB_DISCOVERY);
discoverEjb = Boolean.parseBoolean(usage);
- defaultBeanArchiveInformation = new DefaultBeanArchiveInformation();
+ defaultBeanArchiveInformation = new DefaultBeanArchiveInformation("default");
defaultBeanArchiveInformation.setBeanDiscoveryMode(BeanDiscoveryMode.ALL);
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java?rev=1770591&r1=1770590&r2=1770591&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java Sun Nov 20 21:33:39 2016
@@ -26,6 +26,7 @@ import org.apache.webbeans.spi.BeanArchi
public class DefaultBeanArchiveInformation implements BeanArchiveService.BeanArchiveInformation
{
+ private final String bdaUrl;
private String version;
private BeanDiscoveryMode beanDiscoveryMode;
private List<String> interceptors = new ArrayList<String>();
@@ -40,6 +41,10 @@ public class DefaultBeanArchiveInformati
private List<String> excludedPackages = null;
private List<String> allowProxyingClasses = new ArrayList<String>();
+ public DefaultBeanArchiveInformation(String bdaUrl)
+ {
+ this.bdaUrl = bdaUrl;
+ }
@Override
public BeanDiscoveryMode getBeanDiscoveryMode()
@@ -48,6 +53,12 @@ public class DefaultBeanArchiveInformati
}
@Override
+ public String getBdaUrl()
+ {
+ return bdaUrl;
+ }
+
+ @Override
public boolean isClassExcluded(String clazz)
{
boolean isExcluded = isPackageExcluded(clazz);
@@ -195,4 +206,12 @@ public class DefaultBeanArchiveInformati
return allowProxyingClasses;
}
+ @Override
+ public String toString()
+ {
+ return "DefaultBeanArchiveInformation{" +
+ "bdaUrl='" + bdaUrl + '\'' +
+ ", beanDiscoveryMode=" + beanDiscoveryMode +
+ '}';
+ }
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java?rev=1770591&r1=1770590&r2=1770591&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java Sun Nov 20 21:33:39 2016
@@ -51,6 +51,7 @@ public class DefaultBeanArchiveService i
{
private static final String WEB_INF_CLASSES = "WEB-INF/classes/";
private static final String WEB_INF_CLASSES_MAVEN = "target/classes/";
+ private static final String META_INF_BEANS_XML = "/META-INF/beans.xml";
private static final Logger logger = WebBeansLoggerFacade.getLogger(BeanArchiveService.class);
@@ -74,10 +75,18 @@ public class DefaultBeanArchiveService i
// in this case we need to look whether we have a corresponding beans.xml already scanned
String strippedBeanArchiveUrl = stripProtocol(beanArchiveLocation);
+ strippedBeanArchiveUrl = stripTrailingSlash(strippedBeanArchiveUrl);
for (Map.Entry<String, BeanArchiveInformation> entry : beanArchiveInformations.entrySet())
{
- if (stripProtocol(entry.getKey()).startsWith(strippedBeanArchiveUrl))
+ // we have to 'normalise' both values and remove the beans.xml string to be compareable
+ String entryUrl = stripProtocol(entry.getKey());
+ if (entryUrl.length() > META_INF_BEANS_XML.length() &&
+ entryUrl.substring(entryUrl.length() - META_INF_BEANS_XML.length()).equalsIgnoreCase(META_INF_BEANS_XML))
+ {
+ entryUrl = entryUrl.substring(0, entryUrl.length() - META_INF_BEANS_XML.length());
+ }
+ if (entryUrl.equals(strippedBeanArchiveUrl))
{
bdaInfo = entry.getValue();
break;
@@ -135,7 +144,7 @@ public class DefaultBeanArchiveService i
}
// means we need to merge them
- DefaultBeanArchiveInformation mergedBdaInfo = new DefaultBeanArchiveInformation();
+ DefaultBeanArchiveInformation mergedBdaInfo = new DefaultBeanArchiveInformation(bdaWebClasses.getBdaUrl());
mergedBdaInfo.setBeanDiscoveryMode(BeanDiscoveryMode.max(bdaWebClasses.getBeanDiscoveryMode(), bdaWebInf.getBeanDiscoveryMode()));
@@ -188,9 +197,9 @@ public class DefaultBeanArchiveService i
/**
* This method exists for extensibility reasons.
*/
- protected DefaultBeanArchiveInformation createBeanArchiveInformation()
+ protected DefaultBeanArchiveInformation createBeanArchiveInformation(String bdaUrl)
{
- return new DefaultBeanArchiveInformation();
+ return new DefaultBeanArchiveInformation(bdaUrl);
}
private BeanArchiveInformation readBeansXml(URL beansXmlUrl, String beansXmlLocation)
@@ -203,7 +212,7 @@ public class DefaultBeanArchiveService i
if (!beansXmlLocation.endsWith(".xml"))
{
// handle jars without beans.xml file
- DefaultBeanArchiveInformation bdaInfo = createBeanArchiveInformation();
+ DefaultBeanArchiveInformation bdaInfo = createBeanArchiveInformation(beansXmlLocation);
bdaInfo.setBeanDiscoveryMode(BeanDiscoveryMode.ANNOTATED);
return bdaInfo;
}
@@ -252,6 +261,17 @@ public class DefaultBeanArchiveService i
return urlPath;
}
+ private String stripTrailingSlash(String urlPath)
+ {
+ if (urlPath.endsWith("/"))
+ {
+ return urlPath.substring(0, urlPath.length()-1);
+ }
+ return urlPath;
+ }
+
+
+
/**
* Read the information from the given beans.xml and fill it into a
@@ -259,7 +279,7 @@ public class DefaultBeanArchiveService i
*/
protected BeanArchiveInformation readBeansXml(InputStream xmlStreamIn, String beansXmlLocation) throws IOException
{
- DefaultBeanArchiveInformation bdaInfo = createBeanArchiveInformation();
+ DefaultBeanArchiveInformation bdaInfo = createBeanArchiveInformation(beansXmlLocation);
if (xmlStreamIn != null)
{
Modified: openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java?rev=1770591&r1=1770590&r2=1770591&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java (original)
+++ openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java Sun Nov 20 21:33:39 2016
@@ -122,6 +122,11 @@ public interface BeanArchiveService
interface BeanArchiveInformation
{
/**
+ * @return The classpath entry this BDA represents.
+ */
+ String getBdaUrl();
+
+ /**
* @return the version string of the beans.xml file (if any), or <code>null</code> if not set
*/
String getVersion();