You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/08/12 10:08:48 UTC
svn commit: r1617431 - in
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb:
assembler/ assembler/classic/ cdi/ config/
Author: rmannibucau
Date: Tue Aug 12 08:08:47 2014
New Revision: 1617431
URL: http://svn.apache.org/r1617431
Log:
fixing info tree
Added:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ExclusionInfo.java
Removed:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/ExclusionInfo.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBBeanInfoService.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java?rev=1617431&r1=1617430&r2=1617431&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java Tue Aug 12 08:08:47 2014
@@ -17,19 +17,16 @@
package org.apache.openejb.assembler.classic;
-import javax.xml.bind.annotation.XmlTransient;
-import java.net.URL;
+import java.net.URI;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
/**
* @version $Rev$ $Date$
*/
public class BeansInfo extends InfoObject {
-
public final List<String> interceptors = new ArrayList<String>();
public final List<String> decorators = new ArrayList<String>();
public final List<String> alternativeClasses = new ArrayList<String>();
@@ -42,16 +39,17 @@ public class BeansInfo extends InfoObjec
public String version = "1.1";
public String discoveryMode;
- public final Map<String, ExclusionInfo> excludes = new HashMap<>();
-
- // TODO: rework these two maps to make then more adapted to info tree
- // Tip: get a real CompositeBeansInfo and each BeansInfo has a List<String> classes and a discovery mode
- // to remove these maps
- // NB: doesn't only need to change it here but also in DeploymentLoader and AnnotationDeployer
-
- @XmlTransient // ClassListInfo instead of transient?
- public final Map<URL, List<String>> managedClasses = new HashMap<>();
+ public final List<ExclusionEntryInfo> excludes = new LinkedList<>();
+ public final List<BDAInfo> bdas = new LinkedList<>();
- @XmlTransient // ClassListInfo wouldn't work since we need a key for this field + this is mainly a built info, not a tree info
- public final Map<URL, String> discoveryModeByUrl = new HashMap<>();
+ public static class ExclusionEntryInfo extends InfoObject {
+ public String name;
+ public ExclusionInfo exclusion;
+ }
+
+ public static class BDAInfo extends InfoObject {
+ public final List<String> managedClasses = new ArrayList<String>();
+ public String discoveryMode;
+ public URI uri;
+ }
}
Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ExclusionInfo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ExclusionInfo.java?rev=1617431&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ExclusionInfo.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ExclusionInfo.java Tue Aug 12 08:08:47 2014
@@ -0,0 +1,29 @@
+/*
+ * 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.openejb.assembler.classic;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+
+public class ExclusionInfo extends InfoObject {
+ public final List<String> availableClasses = new LinkedList<>();
+ public final List<String> notAvailableClasses = new LinkedList<>();
+ public final List<String> systemPropertiesPresence = new LinkedList<>();
+ public final Properties systemProperties = new Properties();
+}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1617431&r1=1617430&r2=1617431&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Tue Aug 12 08:08:47 2014
@@ -42,11 +42,11 @@ import org.apache.webbeans.spi.BeanArchi
import org.apache.webbeans.spi.ScannerService;
import java.lang.annotation.Annotation;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import static java.util.Arrays.asList;
@@ -183,20 +183,23 @@ public class CdiScanner implements Scann
final BeanArchiveService beanArchiveService = webBeansContext.getBeanArchiveService();
final boolean openejb = OpenEJBBeanInfoService.class.isInstance(beanArchiveService);
- final Map<URL, String> discoveryModes = beans.discoveryModeByUrl;
- for (final Map.Entry<URL, List<String>> next : beans.managedClasses.entrySet()) {
- final List<String> value = next.getValue();
-
- final URL key = next.getKey();
+ for (final BeansInfo.BDAInfo next : beans.bdas) {
final BeanArchiveService.BeanArchiveInformation information;
if (openejb) {
final OpenEJBBeanInfoService beanInfoService = OpenEJBBeanInfoService.class.cast(beanArchiveService);
- final String mode = discoveryModes.get(key);
- information = beanInfoService.createBeanArchiveInformation(beans, classLoader, mode == null? "ALL" : mode); // this fallback is 100% for tests, TODO: get rid of it (AppComposer)
+ information = beanInfoService.createBeanArchiveInformation(beans, classLoader, next.discoveryMode == null? "ALL" : next.discoveryMode); // this fallback is 100% for tests, TODO: get rid of it (AppComposer)
// TODO: log a warn is discoveryModes.get(key) == null
- beanInfoService.getBeanArchiveInfo().put(key, information);
+ try {
+ beanInfoService.getBeanArchiveInfo().put(next.uri.toURL(), information);
+ } catch (final MalformedURLException e) {
+ throw new IllegalStateException(e);
+ }
} else {
- information = beanArchiveService.getBeanArchiveInformation(key);
+ try {
+ information = beanArchiveService.getBeanArchiveInformation(next.uri.toURL());
+ } catch (MalformedURLException e) {
+ throw new IllegalStateException(e);
+ }
}
final boolean scanModeAnnotated = BeanArchiveService.BeanDiscoveryMode.ANNOTATED.equals(information.getBeanDiscoveryMode());
@@ -204,7 +207,7 @@ public class CdiScanner implements Scann
final boolean isNotEarWebApp = startupObject.getWebContext() == null;
if (!noScan) {
- for (final String name : value) {
+ for (final String name : next.managedClasses) {
if (information.isClassExcluded(name)) {
continue;
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBBeanInfoService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBBeanInfoService.java?rev=1617431&r1=1617430&r2=1617431&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBBeanInfoService.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBBeanInfoService.java Tue Aug 12 08:08:47 2014
@@ -17,7 +17,6 @@
package org.apache.openejb.cdi;
import org.apache.openejb.assembler.classic.BeansInfo;
-import org.apache.openejb.assembler.classic.ExclusionInfo;
import org.apache.openejb.loader.SystemInstance;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.spi.BeanArchiveService;
@@ -55,17 +54,16 @@ public class OpenEJBBeanInfoService impl
information.getAlternativeClasses().addAll(info.alternativeClasses);
information.getAlternativeStereotypes().addAll(info.alternativeStereotypes);
- for (final Map.Entry<String, ExclusionInfo> exclusionInfo : info.excludes.entrySet()) {
- final ExclusionInfo value = exclusionInfo.getValue();
+ for (final BeansInfo.ExclusionEntryInfo exclusionInfo : info.excludes) {
boolean skip = false;
- for (final String n : value.availableClasses) {
+ for (final String n : exclusionInfo.exclusion.availableClasses) {
if (!isClassAvailable(loader, n)) {
skip = true;
break;
}
}
if (!skip) {
- for (final String n : value.notAvailableClasses) {
+ for (final String n : exclusionInfo.exclusion.notAvailableClasses) {
if (isClassAvailable(loader, n)) {
skip = true;
break;
@@ -73,7 +71,7 @@ public class OpenEJBBeanInfoService impl
}
}
if (!skip) {
- for (final String n : value.systemPropertiesPresence) {
+ for (final String n : exclusionInfo.exclusion.systemPropertiesPresence) {
// our system instance is more powerful here
if (SystemInstance.get().getProperty(n) == null) {
skip = true;
@@ -82,9 +80,9 @@ public class OpenEJBBeanInfoService impl
}
}
if (!skip) {
- for (final String n : value.systemProperties.stringPropertyNames()) {
+ for (final String n : exclusionInfo.exclusion.systemProperties.stringPropertyNames()) {
// our system instance is more powerful here
- if (!value.systemProperties.getProperty(n).equals(SystemInstance.get().getProperty(n))) {
+ if (!exclusionInfo.exclusion.systemProperties.getProperty(n).equals(SystemInstance.get().getProperty(n))) {
skip = true;
break;
}
@@ -94,7 +92,7 @@ public class OpenEJBBeanInfoService impl
continue;
}
- final String name = exclusionInfo.getKey();
+ final String name = exclusionInfo.name;
if (name.endsWith(".*")) {
information.addClassExclude(name.substring(0, name.length() - 2));
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=1617431&r1=1617430&r2=1617431&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java Tue Aug 12 08:08:47 2014
@@ -100,6 +100,8 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.Messages;
+import java.net.URISyntaxException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -116,8 +118,8 @@ public class EjbJarInfoBuilder {
public static Messages messages = new Messages("org.apache.openejb.util.resources");
public static Logger logger = Logger.getInstance(LogCategory.OPENEJB, "org.apache.openejb.util.resources");
- private final List<String> deploymentIds = new ArrayList<String>();
- private final List<String> securityRoles = new ArrayList<String>();
+ private final List<String> deploymentIds = new ArrayList<>();
+ private final List<String> securityRoles = new ArrayList<>();
public EjbJarInfo buildInfo(final EjbModule jar) throws OpenEJBException {
@@ -243,7 +245,11 @@ public class EjbJarInfoBuilder {
throw new IllegalArgumentException("Not supported: " + config);
}
}
- ejbJar.beans.excludes.put(exclude.getName(), exclusionInfo);
+
+ final BeansInfo.ExclusionEntryInfo exclusionEntryInfo = new BeansInfo.ExclusionEntryInfo();
+ exclusionEntryInfo.name = exclude.getName();
+ exclusionEntryInfo.exclusion = exclusionInfo;
+ ejbJar.beans.excludes.add(exclusionEntryInfo);
}
}
@@ -251,17 +257,30 @@ public class EjbJarInfoBuilder {
ejbJar.beans.decorators.addAll(beans.getDecorators());
ejbJar.beans.alternativeClasses.addAll(beans.getAlternativeClasses());
ejbJar.beans.alternativeStereotypes.addAll(beans.getAlternativeStereotypes());
- ejbJar.beans.managedClasses.putAll(beans.getManagedClasses());
ejbJar.beans.duplicatedAlternativeClasses.addAll(beans.getDuplicatedAlternatives().getClasses());
ejbJar.beans.duplicatedAlternativeStereotypes.addAll(beans.getDuplicatedAlternatives().getStereotypes());
ejbJar.beans.duplicatedInterceptors.addAll(beans.getDuplicatedInterceptors());
ejbJar.beans.duplicatedDecorators.addAll(beans.getDuplicatedDecorators());
+ final Map<URL, String> discoveryModeByUrl = new HashMap<>();
if (CompositeBeans.class.isInstance(beans)) {
- ejbJar.beans.discoveryModeByUrl.putAll(CompositeBeans.class.cast(beans).getDiscoveryByUrl());
+ discoveryModeByUrl.putAll(CompositeBeans.class.cast(beans).getDiscoveryByUrl());
} else {
- ejbJar.beans.discoveryModeByUrl.put(null, beans.getBeanDiscoveryMode());
+ discoveryModeByUrl.put(null, beans.getBeanDiscoveryMode());
+ }
+ for (final Map.Entry<URL, List<String>> next : beans.getManagedClasses().entrySet()) {
+ final URL key = next.getKey();
+
+ final BeansInfo.BDAInfo bdaInfo = new BeansInfo.BDAInfo();
+ bdaInfo.managedClasses.addAll(next.getValue());
+ bdaInfo.discoveryMode = discoveryModeByUrl.get(key);
+ try {
+ bdaInfo.uri = key == null ? null : key.toURI();
+ } catch (final URISyntaxException e) {
+ bdaInfo.uri = null;
+ }
+ ejbJar.beans.bdas.add(bdaInfo);
}
}