You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/09/09 04:43:43 UTC
svn commit: r1166971 - in /geronimo/server/trunk/framework/modules:
geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/
geronimo-system/src/main/java/org/apache/geronimo/system/configuration/
Author: xuhaihong
Date: Fri Sep 9 02:43:42 2011
New Revision: 1166971
URL: http://svn.apache.org/viewvc?rev=1166971&view=rev
Log:
GERONIMO-6157 Generate fixed version number for the import packages
Modified:
geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java
geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java
geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java
Modified: geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java?rev=1166971&r1=1166970&r2=1166971&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java Fri Sep 9 02:43:42 2011
@@ -106,7 +106,7 @@ public class OSGiBuildContext {
Set<ExportPackage> exportPackages = new HashSet<ExportPackage>(dependencyManager.getExportedPackages(bundleId));
for (Iterator<ExportPackage> it = exportPackages.iterator(); it.hasNext();) {
ExportPackage exportPackage = it.next();
- if (isHiddenExportPackage(exportPackage)) {
+ if (isHiddenExportPackage(exportPackage) || exportPackage.getDirectives().get("mandatory") != null) {
it.remove();
}
}
Modified: geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java?rev=1166971&r1=1166970&r2=1166971&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java Fri Sep 9 02:43:42 2011
@@ -46,6 +46,8 @@ public class OSGiMetaDataBuilder {
private static final Logger logger = LoggerFactory.getLogger(OSGiMetaDataBuilder.class);
+ private static final boolean USE_FIXED_IMPORT_PACKAGE_VERSION = Boolean.parseBoolean(System.getProperty("org.apache.geronimo.deployment.import_package.fixed_version", "true"));
+
private static final Version ZERO_VERSION = new Version(0, 0, 0);
private BundleContext bundleContext;
@@ -156,7 +158,7 @@ public class OSGiMetaDataBuilder {
continue;
}
if (dynamicImportPackageName.startsWith("!")) {
- throw new IllegalConfigurationException("DynamicImport-Package " + dynamicImportPackageName + " could not configured with ! prefix");
+ throw new IllegalConfigurationException("DynamicImport-Package " + dynamicImportPackageName + " could not be configured with ! prefix");
} else {
List<HeaderElement> elements = HeaderParser.parseHeader(dynamicImportPackageName);
for (HeaderElement headerElement : elements) {
@@ -182,11 +184,17 @@ public class OSGiMetaDataBuilder {
if (context.isInverseClassLoading()) {
for (ExportPackage exportPackage : entry.getValue()) {
String importPackageName = toImportPackageName(exportPackage);
+ if (importPackageName == null) {
+ continue;
+ }
environment.addDynamicImportPackage(importPackageName);
}
} else {
for (ExportPackage exportPackage : entry.getValue()) {
String importPackageName = toImportPackageName(exportPackage);
+ if (importPackageName == null) {
+ continue;
+ }
environment.addImportPackage(importPackageName);
}
}
@@ -195,8 +203,16 @@ public class OSGiMetaDataBuilder {
}
protected String toImportPackageName(ExportPackage exportPackage) {
- //TODO If mandatory attribute exists, do we need to handle it ?
- return exportPackage.getVersion().equals(ZERO_VERSION) ? exportPackage.getName() : exportPackage.getName() + ";version=" + exportPackage.getVersion();
+ /* If mandatory attribute exists, do we need to handle it ?
+ if (exportPackage.getAttributes().get("mandatory") != null) {
+ logger.info("Export package " + exportPackage.getName() + " has mandatory attribute, it will not be considered, if it is required, please add in the deployment plan");
+ return null;
+ }*/
+ if (USE_FIXED_IMPORT_PACKAGE_VERSION) {
+ return exportPackage.getName() + ";version=" + "\"[" + exportPackage.getVersion() + "," + exportPackage.getVersion() + "]\"";
+ } else {
+ return exportPackage.getVersion().equals(ZERO_VERSION) ? exportPackage.getName() : exportPackage.getName() + ";version=" + exportPackage.getVersion();
+ }
}
private ArtifactResolver getClientArtifactResolver() {
Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java?rev=1166971&r1=1166970&r2=1166971&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java Fri Sep 9 02:43:42 2011
@@ -56,6 +56,8 @@ import org.apache.geronimo.system.plugin
import org.apache.geronimo.system.plugin.model.PluginXmlUtil;
import org.apache.xbean.osgi.bundle.util.BundleDescription.ExportPackage;
import org.apache.xbean.osgi.bundle.util.BundleUtils;
+import org.apache.xbean.osgi.bundle.util.HeaderParser;
+import org.apache.xbean.osgi.bundle.util.HeaderParser.HeaderElement;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleEvent;
@@ -63,6 +65,7 @@ import org.osgi.framework.BundleExceptio
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.SynchronousBundleListener;
+import org.osgi.framework.Version;
import org.osgi.service.packageadmin.ExportedPackage;
import org.osgi.service.packageadmin.PackageAdmin;
import org.slf4j.Logger;
@@ -311,18 +314,33 @@ public class DependencyManager implement
ServiceReference reference = null;
try {
reference = bundleContext.getServiceReference(PackageAdmin.class.getName());
- if(reference == null) {
+ if (reference == null) {
log.warn("No PackageAdmin service is found, fail to get export packages of " + bundle.getLocation());
- return Collections.<ExportPackage>emptySet();
+ return Collections.<ExportPackage> emptySet();
+ }
+ String exportPackageHeader = (String)bundle.getHeaders().get(Constants.EXPORT_PACKAGE);
+ Map<String, HeaderElement> nameVersionExportPackageMap = new HashMap<String, HeaderElement>();
+ if (exportPackageHeader != null) {
+ List<HeaderElement> headerElements = HeaderParser.parseHeader(exportPackageHeader);
+ for (HeaderElement headerElement : headerElements) {
+ String version = headerElement.getAttribute(Constants.VERSION_ATTRIBUTE);
+ if (version == null) {
+ headerElement.addAttribute(Constants.VERSION_ATTRIBUTE, "0.0.0");
+ nameVersionExportPackageMap.put(headerElement.getName() + "0.0.0", headerElement);
+ } else {
+ nameVersionExportPackageMap.put(headerElement.getName() + new Version(version).toString(), headerElement);
+ }
+ }
}
PackageAdmin packageAdmin = (PackageAdmin) bundleContext.getService(reference);
ExportedPackage[] exportedPackages = packageAdmin.getExportedPackages(bundle);
if (exportedPackages != null) {
Set<ExportPackage> exportPackageNames = new HashSet<ExportPackage>();
for (ExportedPackage exportedPackage : exportedPackages) {
- Map<String, String> attributes = new HashMap<String, String>();
- attributes.put(Constants.VERSION_ATTRIBUTE, exportedPackage.getVersion().toString());
- exportPackageNames.add(new ExportPackage(exportedPackage.getName(), attributes, Collections.<String, String> emptyMap()));
+ HeaderElement headerElement = nameVersionExportPackageMap.get(exportedPackage.getName() + exportedPackage.getVersion());
+ if (headerElement != null) {
+ exportPackageNames.add(new ExportPackage(headerElement.getName(), headerElement.getAttributes(), headerElement.getDirectives()));
+ }
}
return exportPackageNames;
}