You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2010/01/13 15:40:46 UTC
svn commit: r898776 - in /incubator/aries/trunk/application:
application-api/src/main/java/org/apache/aries/application/management/
application-management/src/main/java/org/apache/aries/application/management/impl/
Author: mnuttall
Date: Wed Jan 13 14:40:45 2010
New Revision: 898776
URL: http://svn.apache.org/viewvc?rev=898776&view=rev
Log:
ARIES-89: Implement application support: make createApplication() throw an exception if one or more bundle conversions were attempted but failed.
Added:
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ConversionException.java
Modified:
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java
incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java?rev=898776&r1=898775&r2=898776&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/BundleConverter.java Wed Jan 13 14:40:45 2010
@@ -31,15 +31,13 @@
*/
public interface BundleConverter {
/**
- *
- * @param inputBundle Stream to the input bundle
* @param parentEba The root of the eba containing the artifact being converted -
- * currently a .zip file. In time we may come to support this
- * being an exploded directory.
- * @param pathToArtifact Path to the artifact to be converted
- *
- * @return valid input stream or null if the bundle could not be converted.
+ * a zip format file with .eba suffix, or an exploded directory.
+ * @param fileInEba The object within the eba to convert
+ * @throws ConversionException if conversion was attempted but failed
+ * @return valid input stream or null if this converter does not support conversion of
+ * this artifact type.
*/
- public InputStream convert (IDirectory parentEba, IFile fileInEba);
+ public InputStream convert (IDirectory parentEba, IFile fileInEba) throws ConversionException;
}
Added: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ConversionException.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ConversionException.java?rev=898776&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ConversionException.java (added)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ConversionException.java Wed Jan 13 14:40:45 2010
@@ -0,0 +1,33 @@
+/*
+ * 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 WARRANTIESOR 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.aries.application.management;
+
+public class ConversionException extends Exception {
+
+ private static final long serialVersionUID = -5921912484821992252L;
+
+ public ConversionException (Exception e) {
+ super(e);
+ }
+
+ public ConversionException (String s) {
+ super(s);
+ }
+}
Modified: incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java?rev=898776&r1=898775&r2=898776&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java Wed Jan 13 14:40:45 2010
@@ -25,6 +25,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -46,6 +47,7 @@
import org.apache.aries.application.management.AriesApplicationResolver;
import org.apache.aries.application.management.BundleConverter;
import org.apache.aries.application.management.BundleInfo;
+import org.apache.aries.application.management.ConversionException;
import org.apache.aries.application.management.LocalPlatform;
import org.apache.aries.application.management.ManagementException;
import org.apache.aries.application.management.ResolveConstraint;
@@ -56,6 +58,8 @@
import org.apache.aries.application.utils.manifest.ManifestDefaultsInjector;
import org.apache.aries.application.utils.manifest.ManifestProcessor;
import org.osgi.framework.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class AriesApplicationManagerImpl implements AriesApplicationManager {
@@ -65,6 +69,8 @@
private AriesApplicationResolver _resolver;
private LocalPlatform _localPlatform;
+ private static final Logger _logger = LoggerFactory.getLogger("org.apache.aries.application.management.impl");
+
public void setApplicationMetadataManager (ApplicationMetadataManager amm) {
_applicationMetadataManager = amm;
}
@@ -105,6 +111,9 @@
if (deploymentManifest != null) {
deploymentMetadata = _deploymentMetadataFactory.createDeploymentMetadata(deploymentManifest);
}
+
+ // TODO: validate
+
/* We require that all other .jar and .war files included by-value be valid bundles
* because a DEPLOYMENT.MF has been provided. If no DEPLOYMENT.MF, migrate
* wars to wabs, plain jars to bundles
@@ -126,14 +135,21 @@
// We have a jar that needs converting to a bundle, or a war to migrate to a WAB
InputStream convertedBinary = null;
Iterator<BundleConverter> converters = _bundleConverters.iterator();
+ List<ConversionException> conversionExceptions = Collections.emptyList();
while (converters.hasNext() && convertedBinary == null) {
try {
- // WarToWabConverter can extract application.xml via
- // eba.getFile(AppConstants.APPLICATION_XML);
convertedBinary = converters.next().convert(ebaFile, f);
} catch (ServiceException sx) {
// We'll get this if our optional BundleConverter has not been injected.
+ } catch (ConversionException cx) {
+ conversionExceptions.add(cx);
+ }
+ }
+ if (conversionExceptions.size() > 0) {
+ for (ConversionException cx : conversionExceptions) {
+ _logger.error("Conversion failure", cx);
}
+ throw new ManagementException ("createApplication failed due to conversion failures: see log for details");
}
if (convertedBinary != null) {
modifiedBundles.put (f.getName(), convertedBinary);
@@ -156,7 +172,7 @@
}
} catch (IOException iox) {
- // Log an error
+ _logger.error ("createApplication failed", iox);
throw new ManagementException(iox);
}