You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2018/05/02 14:03:45 UTC
[sling-org-apache-sling-feature-resolver] branch master updated:
Improve some exception messages and change equals of Bundle and Feature
Resource Impl to be based on their artifact ids.
This is an automated email from the ASF dual-hosted git repository.
pauls pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new 0115a68 Improve some exception messages and change equals of Bundle and Feature Resource Impl to be based on their artifact ids.
0115a68 is described below
commit 0115a687023b409a8a5c5a4889b6515e09ab1146
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Wed May 2 16:03:38 2018 +0200
Improve some exception messages and change equals of Bundle and Feature Resource Impl to be based on their artifact ids.
---
.../resolver/ApplicationResolverAssembler.java | 9 ++-
.../sling/feature/resolver/FrameworkResolver.java | 21 +++---
.../feature/resolver/impl/BundleResourceImpl.java | 76 ++--------------------
.../feature/resolver/impl/FeatureResourceImpl.java | 61 ++---------------
4 files changed, 31 insertions(+), 136 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/resolver/ApplicationResolverAssembler.java b/src/main/java/org/apache/sling/feature/resolver/ApplicationResolverAssembler.java
index 84c1e42..85d1b4f 100644
--- a/src/main/java/org/apache/sling/feature/resolver/ApplicationResolverAssembler.java
+++ b/src/main/java/org/apache/sling/feature/resolver/ApplicationResolverAssembler.java
@@ -46,7 +46,6 @@ public class ApplicationResolverAssembler {
* @param fr
* @return The assembled application
* @throws IOException If a feature can't be read or no feature is found.
- * @see #getFeatureFiles(File, String...)
*/
public static Application assembleApplication(
Application app,
@@ -56,8 +55,12 @@ public class ApplicationResolverAssembler {
throws IOException {
final List<Feature> features = new ArrayList<>();
for(final String initFile : featureFiles) {
- final Feature f = IOUtils.getFeature(initFile, artifactManager, SubstituteVariables.RESOLVE);
- features.add(f);
+ try {
+ final Feature f = IOUtils.getFeature(initFile, artifactManager, SubstituteVariables.RESOLVE);
+ features.add(f);
+ } catch (Exception ex) {
+ throw new IOException("Error reading feature: " + initFile, ex);
+ }
}
return assembleApplication(app, artifactManager, fr, features.toArray(new Feature[0]));
diff --git a/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java b/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java
index da09e69..2478bd5 100644
--- a/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java
+++ b/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java
@@ -144,14 +144,19 @@ public class FrameworkResolver implements FeatureResolver {
Map<Feature, FeatureResource> featureMap = new HashMap<>();
Map<FeatureResource, Feature> resourceMap = new HashMap<>();
for (Feature f : features) {
- FeatureResourceImpl fr = new FeatureResourceImpl(f);
- resourceMap.put(fr, f);
- featureMap.put(f, fr);
-
- for (Artifact b : f.getBundles()) {
- BundleDescriptor bd = getBundleDescriptor(artifactManager, b);
- FeatureResource r = new BundleResourceImpl(bd, f);
- resourceMap.put(r, f);
+ try {
+ FeatureResourceImpl fr = new FeatureResourceImpl(f);
+ resourceMap.put(fr, f);
+ featureMap.put(f, fr);
+
+ for (Artifact b : f.getBundles())
+ {
+ BundleDescriptor bd = getBundleDescriptor(artifactManager, b);
+ FeatureResource r = new BundleResourceImpl(bd, f);
+ resourceMap.put(r, f);
+ }
+ } catch (Exception ex) {
+ throw new IOException("Error processing feature: " + f.getLocation(), ex);
}
}
diff --git a/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java b/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
index e196145..5cde17e 100644
--- a/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
+++ b/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
@@ -146,79 +146,17 @@ public class BundleResourceImpl extends AbstractResourceImpl implements FeatureR
}
@Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((artifact == null) ? 0 : artifact.hashCode());
- result = prime * result + ((bsn == null) ? 0 : bsn.hashCode());
-
- if (capabilities != null) {
- // Don't delegate to the capabilities to compute their hashcode since that results in an endless loop
- for (List<Capability> lc : capabilities.values()) {
- for (Capability c : lc) {
- result = prime * result + c.getNamespace().hashCode();
- result = prime * result + c.getAttributes().hashCode();
- result = prime * result + c.getDirectives().hashCode();
- }
- }
- }
-
- if (requirements != null) {
- // Don't delegate to the requirements to compute their hashcode since that results in an endless loop
- for (List<Requirement> lr : requirements.values()) {
- for (Requirement r : lr) {
- result = prime * result + r.getNamespace().hashCode();
- result = prime * result + r.getAttributes().hashCode();
- result = prime * result + r.getDirectives().hashCode();
- }
- }
+ public boolean equals(Object obj) {
+ if ( obj instanceof BundleResourceImpl ) {
+ return bsn.equals(((BundleResourceImpl)obj).bsn) && version.equals(((BundleResourceImpl)obj).version);
}
-
- result = prime * result + ((feature == null) ? 0 : feature.hashCode());
- result = prime * result + ((version == null) ? 0 : version.hashCode());
- return result;
+ return false;
}
@Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- BundleResourceImpl other = (BundleResourceImpl) obj;
- if (artifact == null) {
- if (other.artifact != null)
- return false;
- } else if (!artifact.equals(other.artifact))
- return false;
- if (bsn == null) {
- if (other.bsn != null)
- return false;
- } else if (!bsn.equals(other.bsn))
- return false;
- if (capabilities == null) {
- if (other.capabilities != null)
- return false;
- } else if (!capabilities.equals(other.capabilities))
- return false;
- if (feature == null) {
- if (other.feature != null)
- return false;
- } else if (!feature.equals(other.feature))
- return false;
- if (requirements == null) {
- if (other.requirements != null)
- return false;
- } else if (!requirements.equals(other.requirements))
- return false;
- if (version == null) {
- if (other.version != null)
- return false;
- } else if (!version.equals(other.version))
- return false;
- return true;
+ public int hashCode() {
+ return (bsn + ':' + version).hashCode();
+
}
@Override
diff --git a/src/main/java/org/apache/sling/feature/resolver/impl/FeatureResourceImpl.java b/src/main/java/org/apache/sling/feature/resolver/impl/FeatureResourceImpl.java
index 4acee42..e13ed49 100644
--- a/src/main/java/org/apache/sling/feature/resolver/impl/FeatureResourceImpl.java
+++ b/src/main/java/org/apache/sling/feature/resolver/impl/FeatureResourceImpl.java
@@ -105,66 +105,15 @@ public class FeatureResourceImpl extends AbstractResourceImpl implements Feature
@Override
public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((artifact == null) ? 0 : artifact.hashCode());
-
- if (capabilities != null) {
- // Don't delegate to the capabilities to compute their hashcode since that results in an endless loop
- for (List<Capability> lc : capabilities.values()) {
- for (Capability c : lc) {
- result = prime * result + c.getNamespace().hashCode();
- result = prime * result + c.getAttributes().hashCode();
- result = prime * result + c.getDirectives().hashCode();
- }
- }
- }
-
- if (requirements != null) {
- // Don't delegate to the requirements to compute their hashcode since that results in an endless loop
- for (List<Requirement> lr : requirements.values()) {
- for (Requirement r : lr) {
- result = prime * result + r.getNamespace().hashCode();
- result = prime * result + r.getAttributes().hashCode();
- result = prime * result + r.getDirectives().hashCode();
- }
- }
- }
-
- result = prime * result + ((feature == null) ? 0 : feature.hashCode());
- return result;
+ return feature.hashCode();
}
@Override
public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- FeatureResourceImpl other = (FeatureResourceImpl) obj;
- if (artifact == null) {
- if (other.artifact != null)
- return false;
- } else if (!artifact.equals(other.artifact))
- return false;
- if (capabilities == null) {
- if (other.capabilities != null)
- return false;
- } else if (!capabilities.equals(other.capabilities))
- return false;
- if (feature == null) {
- if (other.feature != null)
- return false;
- } else if (!feature.equals(other.feature))
- return false;
- if (requirements == null) {
- if (other.requirements != null)
- return false;
- } else if (!requirements.equals(other.requirements))
- return false;
- return true;
+ if (obj instanceof FeatureResourceImpl) {
+ return feature.equals(((FeatureResourceImpl) obj).feature);
+ }
+ return false;
}
@Override
--
To stop receiving notification emails like this one, please contact
pauls@apache.org.