You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/01/09 23:42:16 UTC

svn commit: r610601 - in /incubator/tuscany/java/sca/modules: contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/

Author: jsdelfino
Date: Wed Jan  9 14:40:59 2008
New Revision: 610601

URL: http://svn.apache.org/viewvc?rev=610601&view=rev
Log:
Allow Java imports to specify package name filters as supported in the Java language.

Modified:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionClassLoader.java
    incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionClassLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionClassLoader.java?rev=610601&r1=610600&r2=610601&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionClassLoader.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionClassLoader.java Wed Jan  9 14:40:59 2008
@@ -302,15 +302,25 @@
      * @return true if this is a matching import
      */
     private boolean matchesImport(String name, Import import_, boolean matchJavaClass) {
-       
+        
+        //FIXME this whole method needs serious cleanup
         if (matchJavaClass) {
             if (import_ instanceof JavaImport && name != null && name.lastIndexOf('.') > 0) {
                 JavaImport javaImport = (JavaImport) import_;
-                String packageName = name.substring(0, name.lastIndexOf('.'));
-                if (javaImport.getPackage() == null)
+                if (javaImport.getPackage() == null) {
+                    //FIXME we shouldn't get there at all
                     return false;
-                else
-                    return packageName.equals(javaImport.getPackage());
+                } else {
+                    String packageName = name.substring(0, name.lastIndexOf('.'));
+                    if (javaImport.getPackage().endsWith(".*")) {
+                        String prefix = javaImport.getPackage().substring(0, javaImport.getPackage().length() -1);
+                        if (packageName.startsWith(prefix)) {
+                            return true;
+                        }
+                    } else {
+                        return packageName.equals(javaImport.getPackage());
+                    }
+                }
             }
             
         } else {
@@ -318,12 +328,26 @@
                 return false;
             else if (import_ instanceof JavaImport) {
                 JavaImport javaImport = (JavaImport) import_;
-                String packageName = name.substring(0, name.lastIndexOf('/'));
-                if (javaImport.getPackage() == null)
+                if (javaImport.getPackage() == null) {
+                    //FIXME we shouldn't get there at all
                     return false;
-                else
-                    return packageName.equals(javaImport.getPackage().replaceAll("\\.", "/"));
+                }
+                else {
+                    if (javaImport.getPackage().endsWith(".*")) {
+                        String packageName = name.substring(0, name.lastIndexOf('/')).replace('/', '.');
+                        String prefix = javaImport.getPackage().substring(0, javaImport.getPackage().length() -1);
+                        if (packageName.startsWith(prefix)) {
+                            return true;
+                        }
+                    } else {
+                        //FIXME a package name does not contain "/", should be replaced by "."
+                        String packageName = name.substring(0, name.lastIndexOf('/'));
+                        //FIXME Why the "\\" in the replace string?? 
+                        return packageName.equals(javaImport.getPackage().replaceAll("\\.", "/"));
+                    }
+                }
             } else if (import_ instanceof NamespaceImport) {
+                //FIXME This is weird, what are we doing with NamespaceImports here??
                 NamespaceImport namespaceImport = (NamespaceImport) import_;
                 String namespace = name.substring(0, name.lastIndexOf('/'));
                 if (namespaceImport.getNamespace() == null)

Modified: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java?rev=610601&r1=610600&r2=610601&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java Wed Jan  9 14:40:59 2008
@@ -86,9 +86,18 @@
      */
     public boolean match(Export export) {
         if(export instanceof JavaExport) {
-            if(this.getLocation() == null || this.getLocation().length() == 0) {
-                if (this.getPackage().equals(((JavaExport)export).getPackage())) {
+            JavaExport javaExport = (JavaExport)export;
+            if (location == null || location.length() == 0) {
+                String exportedPackage = javaExport.getPackage();
+                if (packageName.equals(exportedPackage)) {
                     return true;
+                } else {
+                    if (packageName.endsWith(".*")) {
+                        String prefix = packageName.substring(0, packageName.length() - 1);
+                        if (exportedPackage.startsWith(prefix)) {
+                            return true;
+                        }
+                    }
                 }
             }
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org