You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2010/07/22 15:07:21 UTC
svn commit: r966636 - in
/felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util:
JavaHelper.java ModelHelper.java
Author: dsavage
Date: Thu Jul 22 13:07:21 2010
New Revision: 966636
URL: http://svn.apache.org/viewvc?rev=966636&view=rev
Log:
add helper methods to aid refactoring support (FELIX-1346)
Modified:
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/ModelHelper.java
Modified: felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java?rev=966636&r1=966635&r2=966636&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java (original)
+++ felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java Thu Jul 22 13:07:21 2010
@@ -65,6 +65,7 @@ import org.eclipse.core.runtime.IProgres
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.content.IContentDescription;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
@@ -78,9 +79,11 @@ import org.eclipse.jdt.core.ICompilation
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IImportDeclaration;
import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaModel;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.ILocalVariable;
import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IPackageDeclaration;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IParent;
@@ -1150,14 +1153,8 @@ public class JavaHelper
String packageName = pe.getPackageName();
- IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
- VersionRangeBoundingRule lowerBoundRule = VersionRangeBoundingRule.valueOf( store
- .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
- VersionRangeBoundingRule upperBoundRule = VersionRangeBoundingRule.valueOf( store
- .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
-
Version version = pe.getVersion();
- VersionRange versions = VersionRange.newInstance( version, lowerBoundRule, upperBoundRule );
+ VersionRange versions = ModelHelper.getDefaultRange(version);
IPackageImport pi = ModelElementFactory.getInstance().newModelElement( IPackageImport.class );
pi.setPackageName( packageName );
@@ -1258,4 +1255,55 @@ public class JavaHelper
throw new JavaModelException( new IllegalStateException( "Missing type for " + root ), IStatus.ERROR );
}
+
+
+ public static Set<String> findLocalPackageDependencies(
+ ISigilProjectModel project, String packageName, IProgressMonitor monitor) throws JavaModelException
+ {
+ Set<String> imports = findJavaImports( project, monitor );
+ imports.remove(packageName);
+ return imports;
+ }
+
+
+ public static Set<String> findLocalPackageUsers(
+ ISigilProjectModel project, String packageName, IProgressMonitor monitor) throws JavaModelException
+ {
+ Set<String> imports = new HashSet<String>();
+ Set<String> check = new HashSet<String>();
+ for ( IPackageFragment root : project.getJavaModel().getPackageFragments() )
+ {
+ IPackageFragmentRoot rt = ( IPackageFragmentRoot ) root
+ .getAncestor( IJavaElement.PACKAGE_FRAGMENT_ROOT );
+
+ if ( isInClassPath( project, rt ) )
+ {
+ for ( ICompilationUnit cu : root.getCompilationUnits() )
+ {
+ IPackageFragment pack = (IPackageFragment) cu.getAncestor(IJavaModel.PACKAGE_FRAGMENT);
+ if ( !pack.getElementName().equals(packageName)) {
+ scanImports( cu, check );
+ if (check.contains(packageName)) {
+ imports.add(pack.getElementName());
+ }
+ }
+ check.clear();
+ }
+
+ for ( IClassFile cf : root.getClassFiles() )
+ {
+ IPackageFragment pack = (IPackageFragment) cf.getAncestor(IJavaModel.PACKAGE_FRAGMENT);
+ if ( !pack.getElementName().equals(packageName)) {
+ scanImports( cf, check );
+ if (check.contains(packageName)) {
+ imports.add(pack.getElementName());
+ }
+ }
+ check.clear();
+ }
+ }
+ }
+
+ return imports;
+ }
}
\ No newline at end of file
Modified: felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/ModelHelper.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/ModelHelper.java?rev=966636&r1=966635&r2=966636&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/ModelHelper.java (original)
+++ felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/ModelHelper.java Thu Jul 22 13:07:21 2010
@@ -20,15 +20,24 @@
package org.apache.felix.sigil.eclipse.model.util;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
+import org.apache.felix.sigil.common.osgi.VersionRange;
+import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
import org.apache.felix.sigil.eclipse.SigilCore;
+import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
import org.apache.felix.sigil.model.ICapabilityModelElement;
import org.apache.felix.sigil.model.ICompoundModelElement;
import org.apache.felix.sigil.model.IModelElement;
import org.apache.felix.sigil.model.IModelWalker;
import org.apache.felix.sigil.model.IRequirementModelElement;
+import org.apache.felix.sigil.model.ModelElementFactory;
+import org.apache.felix.sigil.model.osgi.IPackageExport;
+import org.apache.felix.sigil.model.osgi.IPackageImport;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.osgi.framework.Version;
public class ModelHelper
@@ -77,5 +86,35 @@ public class ModelHelper
}
}
}
+
+ public static VersionRange getDefaultRange(Version version) {
+ IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
+
+ VersionRangeBoundingRule lowerBoundRule = VersionRangeBoundingRule.valueOf( store
+ .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
+ VersionRangeBoundingRule upperBoundRule = VersionRangeBoundingRule.valueOf( store
+ .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
+
+ VersionRange selectedVersions = VersionRange.newInstance( version, lowerBoundRule, upperBoundRule );
+ return selectedVersions;
+ }
+
+ public static IPackageExport findExport(ISigilProjectModel sigil, final String packageName) {
+ final ArrayList<IPackageExport> found = new ArrayList<IPackageExport>(1);
+ sigil.visit(new IModelWalker()
+ {
+ public boolean visit(IModelElement element)
+ {
+ if (element instanceof IPackageExport) {
+ IPackageExport pe = (IPackageExport) element;
+ if (pe.getPackageName().equals(packageName)) {
+ found.add(pe);
+ }
+ }
+ return found.isEmpty();
+ }
+ });
+ return found.isEmpty() ? null : found.get(0);
+ }
}