You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ch...@apache.org on 2008/03/07 10:07:31 UTC
svn commit: r634590 - in /felix/trunk:
deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/
deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/
metatype/src/main/java/org/apache/felix/metatype/
Author: christian
Date: Fri Mar 7 01:07:29 2008
New Revision: 634590
URL: http://svn.apache.org/viewvc?rev=634590&view=rev
Log:
MetaType:
- Changed the name attribute of an AD element from required to optional in metatype reader (as specced by compendium 105.8)
DeploymentAdmin:
- Use correct dir for persistence
- Iterating backwards was missing correct initialisation index in several locations
- Resource processors only used for dropping resources are correctly committed now
- Fixed bug where the processed resources could be read from the incoming deploymentpackage stream while processing bundles
- Stale customizer bundles are not uninstalled immediately
Modified:
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/AbstractDeploymentPackage.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentPackageManifest.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/Command.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/CommitResourceCommand.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DeploymentSessionImpl.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropBundleCommand.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropResourceCommand.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/ProcessResourceCommand.java
felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/UpdateCommand.java
felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/AbstractDeploymentPackage.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/AbstractDeploymentPackage.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/AbstractDeploymentPackage.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/AbstractDeploymentPackage.java Fri Mar 7 01:07:29 2008
@@ -177,9 +177,13 @@
if (processor != null) {
try {
ServiceReference[] services = m_bundleContext.getServiceReferences(ResourceProcessor.class.getName(), "(" + org.osgi.framework.Constants.SERVICE_PID + "=" + processor + ")");
- if (services.length > 0) {
+ if (services != null && services.length > 0) {
return services[0];
}
+ else {
+ return null;
+ }
+
}
catch (InvalidSyntaxException e) {
// TODO: log this
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java Fri Mar 7 01:07:29 2008
@@ -102,7 +102,7 @@
if (packages[i].isDirectory()) {
try {
File index = new File(packages[i], PACKAGEINDEX_FILE);
- File contents = new File(packages[i], PACKAGE_DIR);
+ File contents = new File(packages[i], PACKAGECONTENTS_DIR);
FileDeploymentPackage dp = new FileDeploymentPackage(index, contents, m_context);
m_packages.put(dp.getName(), dp);
}
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentPackageManifest.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentPackageManifest.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentPackageManifest.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentPackageManifest.java Fri Mar 7 01:07:29 2008
@@ -56,7 +56,7 @@
Attributes mainAttributes = m_manifest.getMainAttributes();
- // TODO: verify symbolic name for valid format/chars
+ // TODO: verify symbolic name and entry-names for valid format/chars
m_symbolicName = getNonNullHeader(mainAttributes.getValue(Constants.DEPLOYMENTPACKAGE_SYMBOLICMAME));
String version = getNonNullHeader(mainAttributes.getValue(Constants.DEPLOYMENTPACKAGE_VERSION));
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/Command.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/Command.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/Command.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/Command.java Fri Mar 7 01:07:29 2008
@@ -50,7 +50,7 @@
* command was never executed, a best effort should be made though.
*/
public void rollback() {
- for (ListIterator i = m_rollback.listIterator(); i.hasPrevious();) {
+ for (ListIterator i = m_rollback.listIterator(m_commit.size()); i.hasPrevious();) {
Runnable runnable = (Runnable) i.previous();
runnable.run();
}
@@ -61,7 +61,7 @@
* Commits all changes the command may have defined when it was executed by calling the <code>execute()</code> method.
*/
protected void commit() {
- for (ListIterator i = m_commit.listIterator(); i.hasPrevious();) {
+ for (ListIterator i = m_commit.listIterator(m_commit.size()); i.hasPrevious();) {
Runnable runnable = (Runnable) i.previous();
runnable.run();
}
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/CommitResourceCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/CommitResourceCommand.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/CommitResourceCommand.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/CommitResourceCommand.java Fri Mar 7 01:07:29 2008
@@ -36,8 +36,8 @@
private final List m_processors = new ArrayList();
public void execute(DeploymentSessionImpl session) throws DeploymentException {
- for (ListIterator i = m_processors.listIterator(); i.hasPrevious();) {
- ResourceProcessor processor = (ResourceProcessor) i.previous();
+ for (ListIterator i = m_processors.listIterator(m_processors.size()); i.hasPrevious();) {
+ ResourceProcessor processor = (ResourceProcessor) i.previous();
try {
processor.prepare();
}
@@ -46,7 +46,7 @@
throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Preparing commit for resource processor failed", e);
}
}
- for (ListIterator i = m_processors.listIterator(); i.hasPrevious();) {
+ for (ListIterator i = m_processors.listIterator(m_processors.size()); i.hasPrevious();) {
ResourceProcessor processor = (ResourceProcessor) i.previous();
try {
processor.commit();
@@ -56,10 +56,11 @@
// TODO Throw exception?
}
}
+ m_processors.clear();
}
public void rollback() {
- for (ListIterator i = m_processors.listIterator(); i.hasPrevious();) {
+ for (ListIterator i = m_processors.listIterator(m_processors.size()); i.hasPrevious();) {
ResourceProcessor processor = (ResourceProcessor) i.previous();
try {
processor.rollback();
@@ -75,15 +76,17 @@
* Add a resource processor, all resource processors that are added will be committed when the command is executed.
*
* @param processor The resource processor to add.
+ * @return true if the resource processor was added, false if it was already added.
*/
- public void addResourceProcessor(ResourceProcessor processor) {
+ public boolean addResourceProcessor(ResourceProcessor processor) {
for (Iterator i = m_processors.iterator(); i.hasNext();) {
ResourceProcessor proc = (ResourceProcessor) i.next();
if (proc == processor) {
- return;
+ return false;
}
}
m_processors.add(processor);
+ return true;
}
public void run() {
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DeploymentSessionImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DeploymentSessionImpl.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DeploymentSessionImpl.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DeploymentSessionImpl.java Fri Mar 7 01:07:29 2008
@@ -82,7 +82,7 @@
}
private void rollback(List executedCommands) {
- for (ListIterator i = executedCommands.listIterator(); i.hasPrevious();) {
+ for (ListIterator i = executedCommands.listIterator(executedCommands.size()); i.hasPrevious();) {
Command command = (Command) i.previous();
command.rollback();
}
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropBundleCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropBundleCommand.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropBundleCommand.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropBundleCommand.java Fri Mar 7 01:07:29 2008
@@ -41,7 +41,7 @@
BundleInfoImpl[] orderedTargetBundles = target.getOrderedBundleInfos();
for (int i = orderedTargetBundles.length - 1; i >= 0; i--) {
BundleInfoImpl bundleInfo = orderedTargetBundles[i];
- if (source.getBundleInfoByPath(bundleInfo.getPath()) == null) {
+ if (!bundleInfo.isCustomizer() && source.getBundleInfoByPath(bundleInfo.getPath()) == null) {
// stale bundle, save a copy for rolling back and uninstall it
String symbolicName = bundleInfo.getSymbolicName();
try {
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropResourceCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropResourceCommand.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropResourceCommand.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/DropResourceCommand.java Fri Mar 7 01:07:29 2008
@@ -60,7 +60,9 @@
ResourceProcessor resourceProcessor = (ResourceProcessor) context.getService(ref);
if (resourceProcessor != null) {
try {
- m_commitCommand.addResourceProcessor(resourceProcessor);
+ if (m_commitCommand.addResourceProcessor(resourceProcessor)) {
+ resourceProcessor.begin(session);
+ }
resourceProcessor.dropped(path);
}
catch (ResourceProcessorException e) {
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/ProcessResourceCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/ProcessResourceCommand.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/ProcessResourceCommand.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/ProcessResourceCommand.java Fri Mar 7 01:07:29 2008
@@ -66,30 +66,29 @@
}
try {
- for (AbstractInfo jarEntry = source.getNextEntry(); (jarEntry != null) && (!expectedResources.isEmpty()); jarEntry = source.getNextEntry()) {
- String name = jarEntry.getPath();
-
- if (!expectedResources.containsKey(name)) {
- throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Resource '" + name + "' is not described in the manifest.");
- }
+ while (!expectedResources.isEmpty()) {
+ AbstractInfo jarEntry = source.getNextEntry();
+ if (jarEntry == null) {
+ throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Expected more resources in the stream: " + expectedResources.keySet());
+ }
+
+ String name = jarEntry.getPath();
ResourceInfoImpl resourceInfo = (ResourceInfoImpl) expectedResources.remove(name);
-
- String resourceProcessorPID = resourceInfo.getResourceProcessor();
- if (resourceProcessorPID == null) {
- // no resource processor specified, resource can be ignored
- continue;
+ if (resourceInfo == null) {
+ throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Resource '" + name + "' is not described in the manifest.");
}
- ServiceReference ref = source.getResourceProcessor(resourceProcessorPID);
+ ServiceReference ref = source.getResourceProcessor(name);
if (ref != null) {
String serviceOwnerSymName = ref.getBundle().getSymbolicName();
if (source.getBundleInfoByName(serviceOwnerSymName) != null) {
ResourceProcessor resourceProcessor = (ResourceProcessor) context.getService(ref);
if (resourceProcessor != null) {
- resourceProcessor.begin(session);
try {
- m_commitCommand.addResourceProcessor(resourceProcessor);
+ if (m_commitCommand.addResourceProcessor(resourceProcessor)) {
+ resourceProcessor.begin(session);
+ }
resourceProcessor.process(name, source.getCurrentEntryStream());
}
catch (ResourceProcessorException rpe) {
Modified: felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/UpdateCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/UpdateCommand.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/UpdateCommand.java (original)
+++ felix/trunk/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/UpdateCommand.java Fri Mar 7 01:07:29 2008
@@ -55,13 +55,18 @@
}
try {
- for (AbstractInfo entry = source.getNextEntry(); (entry != null) && (!expectedBundles.isEmpty()); entry = source.getNextEntry()) {
- String name = entry.getPath();
- if (!expectedBundles.containsKey(name)) {
+ while (!expectedBundles.isEmpty()) {
+ AbstractInfo entry = source.getNextEntry();
+ if (entry == null) {
+ throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Expected more bundles in the stream: " + expectedBundles.keySet());
+ }
+
+ String name = entry.getPath();
+ BundleInfoImpl bundleInfo = (BundleInfoImpl) expectedBundles.remove(name);
+ if (bundleInfo == null) {
throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Resource '" + name + "' is not described in the manifest.");
}
- BundleInfoImpl bundleInfo = (BundleInfoImpl) expectedBundles.remove(name);
Bundle bundle = source.getBundle(bundleInfo.getSymbolicName());
try {
if (bundle == null) {
Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java?rev=634590&r1=634589&r2=634590&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java Fri Mar 7 01:07:29 2008
@@ -281,7 +281,7 @@
{
AD ad = this.createAD();
ad.setID( this.getRequiredAttribute( "id" ) );
- ad.setName( this.getRequiredAttribute( "name" ) );
+ ad.setName( this.getOptionalAttribute( "name" ) );
ad.setDescription( this.getOptionalAttribute( "description" ) );
ad.setType( this.getRequiredAttribute( "type" ) );
ad.setCardinality( this.getOptionalAttribute( "cardinality", 0 ) );