You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2010/04/01 18:10:36 UTC
svn commit: r930026 -
/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
Author: rickhall
Date: Thu Apr 1 16:10:36 2010
New Revision: 930026
URL: http://svn.apache.org/viewvc?rev=930026&view=rev
Log:
Edit some tasks and add method call counting. (FELIX-2035)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java?rev=930026&r1=930025&r2=930026&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java Thu Apr 1 16:10:36 2010
@@ -135,6 +135,14 @@ public class ResolverImpl implements Res
public Map<Module, List<Wire>> resolve(ResolverState state, Module module, String pkgName)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
Capability candidate = null;
// We can only create a dynamic import if the following
@@ -205,6 +213,14 @@ public class ResolverImpl implements Res
public static Map<Requirement, Set<Capability>> getDynamicImportCandidates(
ResolverState state, Module module, String pkgName)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
// Unresolved modules cannot dynamically import, nor can the default
// package be dynamically imported.
if (!module.isResolved() || pkgName.length() == 0)
@@ -700,11 +716,7 @@ System.out.println("RE: Candidate not re
{
//System.out.println("RE: " + ex);
//ex.printStackTrace();
-
-// TODO: FELIX3 - Is it ok to remove the failed candidate? By removing
-// it we keep the candidateMap up to date with the selected candidate, but
-// theoretically this eliminates some potential combinations. Are those
-// combinations guaranteed to be failures so eliminating them is ok?
+ // Remove the current candidate since it failed to resolve.
it.remove();
if (!it.hasNext() && !req.isOptional())
{
@@ -791,10 +803,7 @@ System.out.println("RE: Candidate not re
{
System.out.println("RE: " + ex);
ex.printStackTrace();
-// TODO: FELIX3 - Is it ok to remove the failed candidate? By removing
-// it we keep the candidateMap up to date with the selected candidate, but
-// theoretically this eliminates some potential combinations. Are those
-// combinations guaranteed to be failures so eliminating them is ok?
+ // Remove the current candidate since it failed to resolve.
it.remove();
if (!it.hasNext() && !req.isOptional())
{
@@ -1050,6 +1059,14 @@ ex.printStackTrace();
Blame candBlame, Map<Module, Packages> modulePkgMap,
Map<Requirement, Set<Capability>> candidateMap)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
for (int i = 0; (currentUsedBlames != null) && (i < currentUsedBlames.size()); i++)
{
//System.out.println("+++ CHECK " + candBlame + " IN EXISTING " + currentUsedBlames.get(i));
@@ -1177,6 +1194,14 @@ ex.printStackTrace();
Map<Requirement, Set<Capability>> candidateMap)
throws ResolveException
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
// TODO: FELIX3 - I think permutation is not as efficient as it could be, since
// the check for subsets is costly.
@@ -1245,6 +1270,14 @@ ex.printStackTrace();
private static boolean isSubsetPermutation(
Map<Requirement, Set<Capability>> orig, Map<Requirement, Set<Capability>> copy)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
for (Entry<Requirement, Set<Capability>> entry : orig.entrySet())
{
Set<Capability> copyCands = copy.get(entry.getKey());
@@ -1263,6 +1296,14 @@ ex.printStackTrace();
private static boolean isCompatible(
Capability currentCap, Capability candCap, Map<Module, Packages> modulePkgMap)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
if ((currentCap != null) && (candCap != null))
{
List<Capability> currentSources =
@@ -1287,6 +1328,14 @@ ex.printStackTrace();
Capability cap, Map<Module, Packages> modulePkgMap, List<Capability> sources,
Set<Capability> cycleMap)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
if (cap.getNamespace().equals(Capability.PACKAGE_NAMESPACE))
{
if (cycleMap.contains(cap))
@@ -1328,6 +1377,14 @@ ex.printStackTrace();
private static Map<Requirement, Set<Capability>> copyCandidateMap(
Map<Requirement, Set<Capability>> candidateMap)
{
+ if (m_isInvokeCount)
+ {
+ String methodName = new Exception().fillInStackTrace().getStackTrace()[0].getMethodName();
+ Long count = m_invokeCounts.get(methodName);
+ count = (count == null) ? new Long(1) : new Long(count.longValue() + 1);
+ m_invokeCounts.put(methodName, count);
+ }
+
Map<Requirement, Set<Capability>> copy =
new HashMap<Requirement, Set<Capability>>();
for (Entry<Requirement, Set<Capability>> entry : candidateMap.entrySet())