Author: gawor
Date: Tue Aug 23 19:04:55 2011
New Revision: 1160853
URL: http://svn.apache.org/viewvc?rev=1160853&view=rev
Log:
ARIES-734: Back port improvements made to resolution error messages in OBR
application resolver
Added:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
(with props)
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
(with props)
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
(with props)
Modified:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/pom.xml
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java
Modified:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/pom.xml
URL:
http://svn.apache.org/viewvc/aries/branches/0.2-incubating-RCx/application/application-obr-resolver/pom.xml?rev=1160853&r1=1160852&r2=1160853&view=diff
==============================================================================
---
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/pom.xml
(original)
+++
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/pom.xml
Tue Aug 23 19:04:55 2011
@@ -28,6 +28,18 @@
Implementation of the AriesApplicationResolver using OBR
</description>
+ <properties>
+ <!-- Export package versions are maintained in packageinfo files -->
+ <aries.osgi.export.pkg>
+ org.apache.aries.application.resolver.obr;
+ org.apache.aries.application.resolver.obr.generator;
+ </aries.osgi.export.pkg>
+ <aries.osgi.private.pkg>
+ org.apache.aries.application.resolver.obr.impl;
+ org.apache.aries.application.resolver.internal;
+ </aries.osgi.private.pkg>
+ </properties>
+
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
Added:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
URL:
http://svn.apache.org/viewvc/aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java?rev=1160853&view=auto
==============================================================================
---
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
(added)
+++
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
Tue Aug 23 19:04:55 2011
@@ -0,0 +1,46 @@
+/*
+ * 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.resolver.internal;
+
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+
+public class MessageUtil
+{
+ /** The resource bundle for blueprint messages */
+ private final static ResourceBundle messages =
ResourceBundle.getBundle("org.apache.aries.application.resolver.messages.ResolverMessages");
+
+ /**
+ * Resolve a message from the bundle, including any necessary formatting.
+ *
+ * @param key the message key.
+ * @param inserts any required message inserts.
+ * @return the message translated into the server local.
+ */
+ public static final String getMessage(String key, Object ... inserts)
+ {
+ String msg = messages.getString(key);
+
+ if (inserts.length > 0)
+ msg = MessageFormat.format(msg, inserts);
+
+ return msg;
+ }
+}
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/MessageUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
URL:
http://svn.apache.org/viewvc/aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java?rev=1160853&view=auto
==============================================================================
---
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
(added)
+++
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
Tue Aug 23 19:04:55 2011
@@ -0,0 +1,34 @@
+/*
+ * 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.resolver.internal;
+
+import org.osgi.framework.Constants;
+
+public class ModellingConstants
+{
+ public static final String OBR_SYMBOLIC_NAME = "symbolicname";
+ public static final String OBR_PRESENTATION_NAME = "presentationname";
+ public static final String OBR_MANIFEST_VERSION = "manifestversion";
+ public static final String OBR_BUNDLE = "bundle";
+ public static final String OBR_PACKAGE = "package";
+ public static final String OBR_SERVICE = "service";
+ public static final String OBR_COMPOSITE_BUNDLE = "composite-bundle";
+ public static final String OBR_UNKNOWN = "unknown";
+ public static final String OPTIONAL_KEY = Constants.RESOLUTION_DIRECTIVE +
":";
+}
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/internal/ModellingConstants.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java
URL:
http://svn.apache.org/viewvc/aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java?rev=1160853&r1=1160852&r2=1160853&view=diff
==============================================================================
---
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java
(original)
+++
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/java/org/apache/aries/application/resolver/obr/OBRAriesResolver.java
Tue Aug 23 19:04:55 2011
@@ -23,8 +23,11 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -41,15 +44,19 @@ import org.apache.aries.application.mana
import org.apache.aries.application.management.BundleInfo;
import org.apache.aries.application.management.ResolveConstraint;
import org.apache.aries.application.management.ResolverException;
+import org.apache.aries.application.resolver.internal.MessageUtil;
+import org.apache.aries.application.resolver.internal.ModellingConstants;
import
org.apache.aries.application.resolver.obr.generator.RepositoryDescriptorGenerator;
import org.apache.aries.application.resolver.obr.impl.ApplicationResourceImpl;
import org.apache.aries.application.resolver.obr.impl.OBRBundleInfo;
import org.apache.aries.application.resolver.obr.impl.ResourceWrapper;
import org.apache.aries.application.utils.manifest.ManifestHeaderProcessor;
+import org.apache.felix.bundlerepository.Capability;
import org.apache.felix.bundlerepository.DataModelHelper;
import org.apache.felix.bundlerepository.Reason;
import org.apache.felix.bundlerepository.Repository;
import org.apache.felix.bundlerepository.RepositoryAdmin;
+import org.apache.felix.bundlerepository.Requirement;
import org.apache.felix.bundlerepository.Resolver;
import org.apache.felix.bundlerepository.Resource;
import org.osgi.framework.Constants;
@@ -66,6 +73,9 @@ public class OBRAriesResolver implements
{
private static Logger log = LoggerFactory.getLogger(OBRAriesResolver.class);
+ private final static String LOG_ENTRY = "Method entry: {}, args {}";
+ private final static String LOG_EXIT = "Method exit: {}, returning {}";
+
private final RepositoryAdmin repositoryAdmin;
private boolean returnOptionalResources = true;
@@ -143,7 +153,25 @@ public class OBRAriesResolver implements
}
return result;
} else {
- throw new ResolverException("Could not resolve requirements: " +
getUnsatisfiedRequirements(obrResolver));
+ Reason[] reasons = obrResolver.getUnsatisfiedRequirements();
+ // let's refine the list by removing the indirect unsatisfied
+ // bundles that are caused by unsatisfied packages or other bundles
+ Map<String, Set<String>> refinedReqs =
refineUnsatisfiedRequirements(obrResolver, reasons);
+
+ StringBuffer reqList = new StringBuffer();
+ Map<String, String> unsatisfiedRequirements =
extractConsumableMessageInfo(refinedReqs);
+ for (String reason : unsatisfiedRequirements.keySet()) {
+ reqList.append('\n');
+ reqList.append(reason);
+ }
+
+ ResolverException re = new
ResolverException(MessageUtil.getMessage("RESOLVER_UNABLE_TO_RESOLVE",
+ new Object[] { appName, reqList }));
+ List<String> list = new ArrayList<String>();
+ list.addAll(unsatisfiedRequirements.keySet());
+ re.setUnsatisfiedRequirements(list);
+
+ throw re;
}
}
@@ -188,21 +216,6 @@ public class OBRAriesResolver implements
}
}
- private String getUnsatisfiedRequirements(Resolver resolver)
- {
- Reason[] reqs = resolver.getUnsatisfiedRequirements();
- if (reqs != null) {
- StringBuilder sb = new StringBuilder();
- for (int reqIdx = 0; reqIdx < reqs.length; reqIdx++) {
- sb.append(" " +
reqs[reqIdx].getRequirement().getFilter()).append("\n");
- Resource resource = reqs[reqIdx].getResource();
- sb.append(" " + resource.getPresentationName()).append("\n");
- }
- return sb.toString();
- }
- return null;
- }
-
private BundleInfo toBundleInfo(Resource resource, boolean optional)
{
Map<String, String> directives = null;
@@ -223,4 +236,179 @@ public class OBRAriesResolver implements
directives,
null);
}
+
+ /**
+ * Refine the unsatisfied requirements ready for later human comsumption
+ *
+ * @param resolver
+ * The resolver to be used to refine the requirements
+ * @param reasons
+ * The reasons
+ * @return A map of the unsatifiedRequirement to the set of bundles that
+ * have that requirement unsatisfied (values associated with the
+ * keys can be null)
+ */
+ private Map<String, Set<String>> refineUnsatisfiedRequirements(Resolver
resolver, Reason[] reasons) {
+ log.debug(LOG_ENTRY, "refineUnsatisfiedRequirements", new Object[] {
resolver, Arrays.toString(reasons) });
+
+ Map<Requirement, Set<String>> req_resources = new HashMap<Requirement,
Set<String>>();
+ // add the reasons to the map, use the requirement as the key, the
+ // resources required the requirement as the values
+ Set<Resource> resources = new HashSet<Resource>();
+ for (Reason reason : reasons) {
+ resources.add(reason.getResource());
+ Requirement key = reason.getRequirement();
+ String value = reason.getResource().getSymbolicName() + "_" +
reason.getResource().getVersion().toString();
+ Set<String> values = req_resources.get(key);
+ if (values == null) {
+ values = new HashSet<String>();
+ }
+ values.add(value);
+ req_resources.put(key, values);
+ }
+
+ // remove the requirements that can be satisifed by the resources. It
is
+ // listed because the resources are not satisfied by other
requirements.
+ // For an instance, the unsatisfied reasons are [package a, required by
+ // bundle aa], [package b, required by bundle bb] and [package c,
+ // required by bundle cc],
+ // If the bundle aa exports the package a and c. In our error message,
+ // we only want to display package a is needed by bundle aa.
+ // Go through each requirement and find out whether the requirement can
+ // be satisfied by the reasons.
+ Set<Capability> caps = new HashSet<Capability>();
+ for (Resource res : resources) {
+ if ((res != null) && (res.getCapabilities() != null)) {
+ List<Capability> capList =
Arrays.asList(res.getCapabilities());
+ if (capList != null) {
+ caps.addAll(capList);
+ }
+ }
+ }
+
+ Iterator<Map.Entry<Requirement, Set<String>>> iterator =
req_resources.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry<Requirement, Set<String>> entry = iterator.next();
+ Requirement req = entry.getKey();
+ for (Capability cap : caps) {
+ if (req.isSatisfied(cap)) { // remove the key from the map
+ iterator.remove();
+ break;
+ }
+ }
+ }
+ // Now the map only contains the necessary missing requirements
+
+ Map<String, Set<String>> result = new HashMap<String, Set<String>>();
+ for (Map.Entry<Requirement, Set<String>> req_res :
req_resources.entrySet()) {
+ result.put(req_res.getKey().getFilter(), req_res.getValue());
+ }
+
+ log.debug(LOG_EXIT, "refineUnsatisfiedRequirements", new Object[] {
result });
+
+ return result;
+ }
+
+ private static final Set<String> SPECIAL_FILTER_ATTRS =
Collections.unmodifiableSet(new HashSet<String>(Arrays
+ .asList(ModellingConstants.OBR_PACKAGE,
ModellingConstants.OBR_SYMBOLIC_NAME,
+ ModellingConstants.OBR_SERVICE,
Constants.VERSION_ATTRIBUTE)));
+
+ /**
+ * Turn a requirement into a human readable String for debug.
+ *
+ * @param filter
+ * The filter that is failing
+ * @param bundlesFailing
+ * For problems with a bundle, the set of bundles that have a
+ * problem
+ * @return human readable form
+ */
+ private Map<String, String> extractConsumableMessageInfo(Map<String,
Set<String>> refinedReqs) {
+ log.debug(LOG_ENTRY, "extractConsumableMessageInfo", refinedReqs);
+
+ Map<String, String> unsatisfiedRequirements = new HashMap<String,
String>();
+
+ for (Map.Entry<String, Set<String>> filterEntry :
refinedReqs.entrySet()) {
+
+ String filter = filterEntry.getKey();
+ Set<String> bundlesFailing = filterEntry.getValue();
+
+ log.debug("unable to satisfy the filter , filter = " + filter +
"required by "
+ + Arrays.toString(bundlesFailing.toArray()));
+
+ Map<String, String> attrs =
ManifestHeaderProcessor.parseFilter(filter);
+ Map<String, String> customAttrs = new HashMap<String, String>();
+ for (Map.Entry<String, String> e : attrs.entrySet()) {
+ if (!SPECIAL_FILTER_ATTRS.contains(e.getKey())) {
+ customAttrs.put(e.getKey(), e.getValue());
+ }
+ }
+
+ StringBuilder msgKey = new StringBuilder();
+ List<Object> inserts = new ArrayList<Object>();
+
+ final String type;
+ boolean unknownType = false;
+ if (attrs.containsKey(ModellingConstants.OBR_PACKAGE)) {
+ type = ModellingConstants.OBR_PACKAGE;
+ msgKey.append("RESOLVER_UNABLE_TO_RESOLVE_PACKAGE");
+ inserts.add(attrs.get(ModellingConstants.OBR_PACKAGE));
+ } else if
(attrs.containsKey(ModellingConstants.OBR_SYMBOLIC_NAME)) {
+ type = ModellingConstants.OBR_SYMBOLIC_NAME;
+ msgKey.append("RESOLVER_UNABLE_TO_RESOLVE_BUNDLE");
+ inserts.add(attrs.get(ModellingConstants.OBR_SYMBOLIC_NAME));
+ } else if (attrs.containsKey(ModellingConstants.OBR_SERVICE)) {
+ type = ModellingConstants.OBR_SERVICE;
+ msgKey.append("RESOLVER_UNABLE_TO_RESOLVE_SERVICE");
+ // No insert for service name as the name must be "*" to match
+ // any
+ // Service capability
+ } else {
+ type = ModellingConstants.OBR_UNKNOWN;
+ unknownType = true;
+ msgKey.append("RESOLVER_UNABLE_TO_RESOLVE_FILTER");
+ inserts.add(filter);
+ }
+
+ if (bundlesFailing != null && bundlesFailing.size() != 0) {
+ msgKey.append("_REQUIRED_BY_BUNDLE");
+ if (bundlesFailing.size() == 1)
+ inserts.add(bundlesFailing.iterator().next()); // Just take
+ // the string
+ // if there's only one
+ // of them
+ else
+ inserts.add(bundlesFailing.toString()); // Add the whole
set
+ // if there
+ // isn't exactly one
+ }
+ if (!unknownType && !customAttrs.isEmpty()) {
+ msgKey.append("_WITH_ATTRS");
+ inserts.add(customAttrs);
+ }
+
+ if (!unknownType &&
attrs.containsKey(Constants.VERSION_ATTRIBUTE)) {
+ msgKey.append("_WITH_VERSION");
+ VersionRange vr =
ManifestHeaderProcessor.parseVersionRange(attrs.get(Constants.VERSION_ATTRIBUTE));
+ inserts.add(vr.getMinimumVersion());
+
+ if (!!!vr.isExactVersion()) {
+ msgKey.append(vr.isMinimumExclusive() ? "_LOWEX" : "_LOW");
+ if (vr.getMaximumVersion() != null) {
+ msgKey.append(vr.isMaximumExclusive() ? "_UPEX" :
"_UP");
+ inserts.add(vr.getMaximumVersion());
+ }
+ }
+ }
+
+ String msgKeyStr = msgKey.toString();
+
+ String msg = MessageUtil.getMessage(msgKeyStr, inserts.toArray());
+ unsatisfiedRequirements.put(msg, type);
+ }
+
+ log.debug(LOG_EXIT, "extractConsumableMessageInfo",
unsatisfiedRequirements);
+
+ return unsatisfiedRequirements;
+ }
}
Added:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
URL:
http://svn.apache.org/viewvc/aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties?rev=1160853&view=auto
==============================================================================
---
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
(added)
+++
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
Tue Aug 23 19:04:55 2011
@@ -0,0 +1,127 @@
+#
+# 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.
+#
+RESOLVER_UNABLE_TO_READ_REPOSITORY_EXCEPTION=An internal error occurred. When
provisioning the EBA archive {0}, cannot read the repository {1}.
+
+RESOLVER_UNABLE_TO_RESOLVE=The system cannot provision the EBA {0} because the
following problems in the dependency chain were detected: {1}
+#
+# The following sentences will be added as separate lines following the
message above. They are NOT used as independent messages.
+#
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE=The package dependency {0} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS=The package dependency {0} with
attributes {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION=The package dependency {0}
with the version {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION_LOW=The package dependency {0}
with the version greater than or equal to {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION_LOW_UP=The package dependency
{0} with the version greater than or equal to {1} and less than or equal to {2}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION_LOW_UPEX=The package
dependency {0} with the version greater than or equal to {1} and less than {2}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION_LOWEX=The package dependency
{0} with the version greater than {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION_LOWEX_UP=The package
dependency {0} with the version greater than {1} and less than or equal to {2}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_VERSION_LOWEX_UPEX=The package
dependency {0} with the version greater than {1} and less than {2} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION=The package
dependency {0} with attributes {1} and the version {2} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION_LOW=The package
dependency {0} with attributes {1} and the version greater than or equal to {2}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION_LOW_UP=The package
dependency {0} with attributes {1} and the version greater than or equal to {2}
and less than or equal to {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION_LOW_UPEX=The
package dependency {0} with attributes {1} and the version greater than or
equal to {2} and less than {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION_LOWEX=The package
dependency {0} with attributes {1} and the version greater than {2} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION_LOWEX_UP=The
package dependency {0} with attributes {1} and the version greater than {2} and
below than or equal to {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_WITH_ATTRS_WITH_VERSION_LOWEX_UPEX=The
package dependency {0} with attributes {1} and the version greater than {2} and
less than {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE=The package dependency
{0} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS=The package
dependency {0} with attributes {2} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION=The package
dependency {0} with the version {2} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW=The
package dependency {0} with the version greater than or equal to {2} required
by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW_UP=The
package dependency {0} with the version greater than or equal to {2} and less
than or equal to {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW_UPEX=The
package dependency {0} with the version greater than or equal to {2} and less
than {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX=The
package dependency {0} with the version greater than {2} required by bundle {1}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX_UP=The
package dependency {0} with the version greater than {2} and less than or
equal to {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX_UPEX=The
package dependency {0} with the version greater than {2} and less than {3}
required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION=The
package dependency {0} with attributes {2} and the version {3} required by
bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW=The
package dependency {0} with attributes {2} and the version greater than or
equal to {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UP=The
package dependency {0} with attributes {2} and the version greater than or
equal to {3} and less than or equal to {4} required by bundle {1} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UPEX=The
package dependency {0} with attributes {2} and the version greater than or
equal to {3} and less than {4} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX=The
package dependency {0} with attributes {2} and the version greater than {3}
required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UP=The
package dependency {0} with attributes {2} and the version greater than {3}
and below than or equal to {4} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_PACKAGE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UPEX=The
package dependency {0} with attributes {2} and the version greater than {3}
and less than {4} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE=The bundle dependency {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS=The bundle dependency {0} with
attributes {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION=The bundle dependency {0} with
the version {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION_LOW=The bundle dependency {0}
with the version greater than or equal to {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION_LOW_UP=The bundle dependency
{0} with the version greater than or equal to {1} and less than or equal to {2}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION_LOW_UPEX=The bundle dependency
{0} with the version greater than or equal to {1} and less than {2} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION_LOWEX=The bundle dependency {0}
with the version greater than {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION_LOWEX_UP=The bundle dependency
{0} with the version greater than {1} and less than or equal to {2} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_VERSION_LOWEX_UPEX=The bundle
dependency {0} with the version greater than {1} and less than {2} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION=The bundle
dependency {0} with attributes {1} and the version {2} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW=The bundle
dependency {0} with attributes {1} and the version greater than or equal to {2}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UP=The bundle
dependency {0} with attributes {1} and the version greater than or equal to {2}
and less than or equal to {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UPEX=The bundle
dependency {0} with attributes {1} and the version greater than or equal to {2}
and less than {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX=The bundle
dependency {0} with attributes {1} and the version greater than {2} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UP=The bundle
dependency {0} with attributes {1} and the version greater than {2} and less
than or equal to {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UPEX=The
bundle dependency {0} with attributes {1} and the version greater than {2} and
less than {3} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE=The bundle dependency {0}
required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS=The bundle
dependency {0} with attributes {2} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION=The bundle
dependency {0} with the version {2} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW=The
bundle dependency {0} with the version greater than or equal to {2} required by
bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW_UP=The
bundle dependency {0} with the version greater than or equal to {2} and less
than or equal to {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW_UPEX=The
bundle dependency {0} with the version greater than or equal to {2} and less
than {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX=The
bundle dependency {0} with the version greater than {2} required by bundle {1}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX_UP=The
bundle dependency {0} with the version greater than {2} and less than or equal
to {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX_UPEX=The
bundle dependency {0} with the version greater than {2} and less than {3}
required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION=The
bundle dependency {0} with attributes {2} and the version {3} required by
bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW=The
bundle dependency {0} with attributes {2} and the version greater than or
equal to {3} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UP=The
bundle dependency {0} with attributes {2} and the version greater than or
equal to {3} and less than or equal to {4} required by bundle {1} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UPEX=The
bundle dependency {0} with attributes {2} and the version greater than or
equal to {3} and less than {4} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX=The
bundle dependency {0} with attributes {2} and the version greater than {3}
required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UP=The
bundle dependency {0} with attributes {2} and the version greater than {3} and
less than or equal to {4} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_BUNDLE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UPEX=The
bundle dependency {0} with attributes {2} and the version greater than {3} and
less than {4} required by bundle {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE=The service dependency cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS=The service dependency with
attributes {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION=The service dependency with
the version {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION_LOW=The service dependency
with the version greater than or equal to {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION_LOW_UP=The service dependency
with the version greater than or equal to {0} and less than or equal to {1}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION_LOW_UPEX=The service
dependency with the version greater than or equal to {0} and less than {1}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION_LOWEX=The service dependency
with the version greater than {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION_LOWEX_UP=The service
dependency with the version greater than {0} and less than or equal to {1}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_VERSION_LOWEX_UPEX=The service
dependency with the version greater than {0} and less than {1} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION=The service
dependency with attributes {0} and the version {1} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION_LOW=The service
dependency with attributes {0} and the version greater than or equal to {1}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION_LOW_UP=The service
dependency with attributes {0} and the version greater than or equal to {1} and
less than or equal to {2} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION_LOW_UPEX=The
service dependency with attributes {0} and the version greater than or equal to
{1} and less than {2} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION_LOWEX=The service
dependency with attributes {0} and the version greater than {1} cannot be
resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION_LOWEX_UP=The
service dependency with attributes {0} and the version greater than {1} and
less than or equal to {2} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_WITH_ATTRS_WITH_VERSION_LOWEX_UPEX=The
service dependency with attributes {0} and the version greater than {1} and
less than {2} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE=The service dependency
required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS=The service
dependency with attributes {1} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION=The service
dependency with the version {1} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW=The
service dependency with the version greater than or equal to {1} required by
bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW_UP=The
service dependency with the version greater than or equal to {2} and less than
or equal to {1} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOW_UPEX=The
service dependency with the version greater than or equal to {2} and less than
{1} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX=The
service dependency with the version greater than {1} required by bundle {0}
cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX_UP=The
service dependency with the version greater than {2} and less than or equal to
{1} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_VERSION_LOWEX_UPEX=The
service dependency with the version greater than {2} and less than {1}
required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION=The
service dependency with attributes {1} and the version {2} required by bundle
{0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW=The
service dependency with attributes {1} and the version greater than or equal
to {2} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UP=The
service dependency with attributes {1} and the version greater than or equal
to {3} and less than or equal to {2} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOW_UPEX=The
service dependency with attributes {1} and the version greater than or equal
to {3} and less than {2} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX=The
service dependency with attributes {1} and the version greater than {2}
required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UP=The
service dependency with attributes {1} and the version greater than {3} and
less than or equal to {2} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_SERVICE_REQUIRED_BY_BUNDLE_WITH_ATTRS_WITH_VERSION_LOWEX_UPEX=The
service dependency with attributes {1} and the version greater than {3} and
less than {2} required by bundle {0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_FILTER=A dependency of unspecified type with filter
{0} cannot be resolved.
+RESOLVER_UNABLE_TO_RESOLVE_FILTER_REQUIRED_BY_BUNDLE=A dependency of
unspecified type with filter {0} required by bundle {1} cannot be resolved.
+#
+# End of sentences added
+NO_EXPORTED_BUNDLE=An internal error occurred. The runtime was unable to model
the provisioned resource as a bundle.
+TOO_MANY_EXPORTED_BUNDLES=An internal error occurred. The runtime was unable
to model the provisioned resource as a bundle.
+
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange:
aries/branches/0.2-incubating-RCx/application/application-obr-resolver/src/main/resources/org/apache/aries/application/resolver/messages/ResolverMessages.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain