Hi

Nothing escape your eyes :)  Yep that indeed is a prob... I didn't
read into details of that code block as it was there before...

I'll raise a jira for it.

Lin

On Wed, Jul 7, 2010 at 2:20 PM, Alasdair Nottingham <[email protected]> wrote:
> Hi,
>
> The first set of additions seems wrong to me. I don't think the 
> ebaFile.getName can return null or an empty string so the following if clause 
> won't do anything. I think the code should be defaulting the app name if it 
> isn't in the application manifest, but it doesn't do that where it is. I just 
> have is diff to go by, so I might be wrong, but could you take a look?
>
> Alasdair Nottingham
>
> On 7 Jul 2010, at 18:53, [email protected] wrote:
>
>> Author: linsun
>> Date: Wed Jul  7 17:53:58 2010
>> New Revision: 961444
>>
>> URL: http://svn.apache.org/viewvc?rev=961444&view=rev
>> Log:
>> ARIES-351 - If an EBA contains a deployment.mf, we should not convert any 
>> invalid bunldes but we don't want to throw an exception either - patch from 
>> Emily Jiang
>>
>> Modified:
>>    
>> incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
>>    
>> incubator/aries/trunk/application/application-management/src/main/resources/org/apache/aries/application/messages/AppManagementMessages.properties
>>
>> 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=961444&r1=961443&r2=961444&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 Jul  7 17:53:58 2010
>> @@ -112,69 +112,63 @@ public class AriesApplicationManagerImpl
>>     DeploymentMetadata deploymentMetadata = null;
>>     Map<String, BundleConversion> modifiedBundles = new HashMap<String, 
>> BundleConversion>();
>>     AriesApplicationImpl application = null;
>> -
>> +    String appName = ebaFile.getName();
>> +    //If the application name is null, we will try to get the file name.
>> +    if ((appName == null) || (appName.isEmpty())) {
>> +        String fullPath = ebaFile.toString();
>> +        if (fullPath.endsWith("/"))
>> +            fullPath = fullPath.substring(0, fullPath.length() -1);
>> +        int last_slash = fullPath.lastIndexOf("/");
>> +        appName = fullPath.substring(last_slash + 1, fullPath.length());
>> +    }
>>     try {
>> -
>> -        /* 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
>> -         */
>> -
>> -        Set<BundleInfo> extraBundlesInfo = new HashSet<BundleInfo>();
>> -        for (IFile f : ebaFile) {
>> -          if (f.isDirectory()) {
>> -            continue;
>> -          }
>> -
>> -          BundleManifest bm = getBundleManifest (f);
>> -          if (bm != null) {
>> -            if (bm.isValid()) {
>> -              extraBundlesInfo.add(new 
>> SimpleBundleInfo(_applicationMetadataFactory, bm, 
>> f.toURL().toExternalForm()));
>> -            } else if (deploymentMetadata != null) {
>> -              throw new ManagementException 
>> (MessageUtil.getMessage("APPMANAGEMENT0003E", f.getName(), 
>> ebaFile.getName()));
>> -            } else {
>> -              // We have a jar that needs converting to a bundle, or a war 
>> to migrate to a WAB
>> -               BundleConversion convertedBinary = null;
>> -              Iterator<BundleConverter> converters = 
>> _bundleConverters.iterator();
>> -              List<ConversionException> conversionExceptions = 
>> Collections.emptyList();
>> -              while (converters.hasNext() && convertedBinary == null) {
>> -                try {
>> -                  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("APPMANAGEMENT0004E", new 
>> Object[]{f.getName(), ebaFile.getName(), cx});
>> -                }
>> -                throw new ManagementException 
>> (MessageUtil.getMessage("APPMANAGEMENT0005E", ebaFile.getName()));
>> +      IFile deploymentManifest = 
>> ebaFile.getFile(AppConstants.DEPLOYMENT_MF);
>> +      /* 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
>> +       */
>> +      Set<BundleInfo> extraBundlesInfo = new HashSet<BundleInfo>();
>> +      for (IFile f : ebaFile) {
>> +        if (f.isDirectory()) {
>> +          continue;
>> +        }
>> +        BundleManifest bm = getBundleManifest (f);
>> +        if (bm != null) {
>> +          if (bm.isValid()) {
>> +            extraBundlesInfo.add(new 
>> SimpleBundleInfo(_applicationMetadataFactory, bm, 
>> f.toURL().toExternalForm()));
>> +          } else if (deploymentManifest == null){
>> +            // We have a jar that needs converting to a bundle, or a war to 
>> migrate to a WAB
>> +            // We only do this if a DEPLOYMENT.MF does not exist.
>> +            BundleConversion convertedBinary = null;
>> +            Iterator<BundleConverter> converters = 
>> _bundleConverters.iterator();
>> +            List<ConversionException> conversionExceptions = 
>> Collections.emptyList();
>> +            while (converters.hasNext() && convertedBinary == null) {
>> +              try {
>> +                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 (convertedBinary != null) {
>> -                modifiedBundles.put (f.getName(), convertedBinary);
>> -                bm = BundleManifest.fromBundle(f);
>> -                extraBundlesInfo.add(new 
>> SimpleBundleInfo(_applicationMetadataFactory, bm, f.getName()));
>> +            }
>> +            if (conversionExceptions.size() > 0) {
>> +              for (ConversionException cx : conversionExceptions) {
>> +                _logger.error("APPMANAGEMENT0004E", new 
>> Object[]{f.getName(), appName, cx});
>>               }
>> +              throw new ManagementException 
>> (MessageUtil.getMessage("APPMANAGEMENT0005E", appName));
>>             }
>> -          }
>> -        }
>> -      Manifest applicationManifest = parseApplicationManifest (ebaFile);
>> -      String appName = ebaFile.getName();
>> -      //If the application name is null, we will try to get the file name.
>> -      if ((appName == null) || (appName.isEmpty())) {
>> -       String fullPath = ebaFile.toString();
>> -       if (fullPath.endsWith("/"))
>> -               fullPath = fullPath.substring(0, fullPath.length() -1);
>> -          int last_slash = fullPath.lastIndexOf("/");
>> -          appName = fullPath.substring(last_slash + 1, fullPath.length());
>> +            if (convertedBinary != null) {
>> +              modifiedBundles.put (f.getName(), convertedBinary);
>> +              bm = BundleManifest.fromBundle(f);
>> +              extraBundlesInfo.add(new 
>> SimpleBundleInfo(_applicationMetadataFactory, bm, f.getName()));
>> +            }
>> +          }
>> +        }
>>       }
>> -
>> -
>> +      Manifest applicationManifest = parseApplicationManifest (ebaFile);
>>       ManifestDefaultsInjector.updateManifest(applicationManifest, appName, 
>> ebaFile);
>>       applicationMetadata = 
>> _applicationMetadataFactory.createApplicationMetadata(applicationManifest);
>> -      IFile deploymentManifest = 
>> ebaFile.getFile(AppConstants.DEPLOYMENT_MF);
>> +
>>       if (deploymentManifest != null) {
>>         deploymentMetadata = 
>> _deploymentMetadataFactory.createDeploymentMetadata(deploymentManifest);
>>
>> @@ -182,18 +176,16 @@ public class AriesApplicationManagerImpl
>>         String appSymbolicName = 
>> applicationMetadata.getApplicationSymbolicName();
>>         String depSymbolicName = 
>> deploymentMetadata.getApplicationSymbolicName();
>>         if (!appSymbolicName.equals(depSymbolicName)) {
>> -          throw new ManagementException 
>> (MessageUtil.getMessage("APPMANAGEMENT0002E", ebaFile.getName(), 
>> appSymbolicName, depSymbolicName));
>> +          throw new ManagementException 
>> (MessageUtil.getMessage("APPMANAGEMENT0002E", appName, appSymbolicName, 
>> depSymbolicName));
>>         }
>>       }
>> -
>> -
>>
>>       application = new AriesApplicationImpl (applicationMetadata, 
>> extraBundlesInfo, _localPlatform);
>>       application.setDeploymentMetadata(deploymentMetadata);
>>       // Store a reference to any modified bundles
>>       application.setModifiedBundles (modifiedBundles);
>>     } catch (IOException iox) {
>> -      _logger.error ("APPMANAGEMENT0006E", new Object []{ebaFile.getName(), 
>> iox});
>> +      _logger.error ("APPMANAGEMENT0006E", new Object []{appName, iox});
>>       throw new ManagementException(iox);
>>     }
>>     return application;
>>
>> Modified: 
>> incubator/aries/trunk/application/application-management/src/main/resources/org/apache/aries/application/messages/AppManagementMessages.properties
>> URL: 
>> http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/resources/org/apache/aries/application/messages/AppManagementMessages.properties?rev=961444&r1=961443&r2=961444&view=diff
>> ==============================================================================
>> --- 
>> incubator/aries/trunk/application/application-management/src/main/resources/org/apache/aries/application/messages/AppManagementMessages.properties
>>  (original)
>> +++ 
>> incubator/aries/trunk/application/application-management/src/main/resources/org/apache/aries/application/messages/AppManagementMessages.properties
>>  Wed Jul  7 17:53:58 2010
>> @@ -18,7 +18,6 @@
>> #
>> APPMANAGEMENT0001E=APPMANAGEMENT0001E: Unable to fully delete directory {0}.
>> APPMANAGEMENT0002E=APPMANAGEMENT0002E: Unable to create Aries application 
>> from {0} since APPLICATION.MF symbolic name {1} does not equals 
>> DEPLOYMENT.MF symbolic name {2}.
>> -APPMANAGEMENT0003E=APPMANAGEMENT0003E: Invalid bundle {0} found when 
>> DEPLOYMENT.MF present in {1}.
>> APPMANAGEMENT0004E=APPMANAGEMENT0004E: Exception caught when converting 
>> artifact {0} in {1}: {2}.
>> APPMANAGEMENT0005E=APPMANAGEMENT0005E: Failed to create application from {0} 
>> due to conversion errors: see log for details.
>> APPMANAGEMENT0006E=APPMANAGEMENT0006E: IOException encountered while 
>> constructing Aries application from {0}: {1}.
>>
>>
>

Reply via email to