You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2009/12/21 17:37:33 UTC

svn commit: r892870 - in /myfaces/extensions/scripting/trunk/core/core/src: main/java/org/apache/myfaces/scripting/core/dependencyScan/ test/java/org/apache/myfaces/extensions/scripting/dependencyScan/ test/java/org/apache/myfaces/extensions/scripting/...

Author: werpu
Date: Mon Dec 21 16:37:32 2009
New Revision: 892870

URL: http://svn.apache.org/viewvc?rev=892870&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-39

works on dependency scanning, added an inheritance scan!

Added:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/ProbeParent.java
      - copied, changed from r892677, myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java
Modified:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java
    myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java
    myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java?rev=892870&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java Mon Dec 21 16:37:32 2009
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+package org.apache.myfaces.scripting.core.dependencyScan;
+
+import org.apache.tools.ant.taskdefs.Classloader;
+import org.objectweb.asm.ClassReader;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          A dependency scanner for
+ *          our classes
+ */
+public class DefaultDependencyScanner implements DependencyScanner {
+
+    static final ClassScanVisitor cp = new ClassScanVisitor();
+
+    /**
+     * @param className
+     * @return
+     */
+    public final Set<String> fetchDependencies(String className) {
+        Set<String> retVal = new HashSet<String>();
+
+        cp.setDependencyTarget(retVal);
+        ClassReader cr = null;
+
+        try {
+            cr = new ClassReader("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe");
+            cr.accept(cp, 0);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        investigateInheritanceHierarchy(retVal);
+
+
+        return retVal;
+    }
+
+    /**
+     * this investigates the classes inheritance hierarchy for
+     * more dependencies, for now annotations and interfaces
+     * are omitted since they are not vital to our jsf dependency checks
+     * (maybe in the long run we will add interfaces and annotations as well
+     * but for now we will leave them away for speed reasons)
+     *
+     * @param retVal
+     */
+    private void investigateInheritanceHierarchy(Set<String> retVal) {
+        //we now have to fetch the parent hierarchy
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        try {
+            Class toCheck = loader.loadClass("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe");
+            Class parent = toCheck.getSuperclass();
+
+            while (parent != null && !ClassLogUtils.isStandard(parent.getName())) {
+                retVal.add(parent.getName());
+                parent = parent.getSuperclass();
+            }
+
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+    }
+
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java?rev=892870&r1=892869&r2=892870&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java Mon Dec 21 16:37:32 2009
@@ -1,59 +1,10 @@
-/*
- * 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.
- */
-
 package org.apache.myfaces.scripting.core.dependencyScan;
 
-import org.objectweb.asm.ClassReader;
-
-import java.io.IOException;
-import java.util.HashSet;
 import java.util.Set;
 
 /**
- * @author Werner Punz (latest modification by $Author$)
- * @version $Revision$ $Date$
- * 
- * A dependency scanner for
- * our classes
- */
-public class DependencyScanner {
-
-    static final ClassScanVisitor cp = new ClassScanVisitor();
-
-    /**
-     * @param className
-     * @return
-     */
-    public static final Set<String> fetchDependencies(String className) {
-        Set<String> retVal = new HashSet<String>();
-
-        cp.setDependencyTarget(retVal);
-        ClassReader cr = null;
-
-        try {
-            cr = new ClassReader("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe");
-            cr.accept(cp, 0);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        return retVal;
-    }
 
+ */
+public interface DependencyScanner {
+    public Set<String> fetchDependencies(String className);
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java?rev=892870&r1=892869&r2=892870&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java Mon Dec 21 16:37:32 2009
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.extensions.scripting.dependencyScan;
 
-import org.apache.myfaces.scripting.core.dependencyScan.DependencyScanner;
+import org.apache.myfaces.scripting.core.dependencyScan.DefaultDependencyScanner;
 import org.junit.Test;
 
 import java.util.Set;
@@ -34,7 +34,7 @@
 
     @Test
     public void testScan() {
-        Set<String> retVal = DependencyScanner.fetchDependencies("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe");
+        Set<String> retVal = (new DefaultDependencyScanner()).fetchDependencies("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe");
         assertTrue(retVal.size() > 0);
 
         assertFalse(retVal.contains("java.lang.String"));
@@ -42,5 +42,7 @@
         assertTrue(retVal.contains("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe2"));
         assertTrue(retVal.contains("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe3"));
         assertTrue(retVal.contains("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe4"));
+        assertTrue(retVal.contains("org.apache.myfaces.extensions.scripting.dependencyScan.probes.ProbeParent"));
+
     }
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java?rev=892870&r1=892869&r2=892870&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java Mon Dec 21 16:37:32 2009
@@ -27,7 +27,7 @@
  *          Probe for class scanning
  */
 @Ignore
-public class Probe {
+public class Probe extends ProbeParent{
     String prop1;
 
     public static int myTest(StringBuilder myBuilder, Object val2) {

Copied: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/ProbeParent.java (from r892677, myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/ProbeParent.java?p2=myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/ProbeParent.java&p1=myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java&r1=892677&r2=892870&rev=892870&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/Probe.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/probes/ProbeParent.java Mon Dec 21 16:37:32 2009
@@ -21,26 +21,10 @@
 import org.junit.Ignore;
 
 /**
+ * Testing probe for inheritance dependency checks
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
- *          <p/>
- *          Probe for class scanning
  */
 @Ignore
-public class Probe {
-    String prop1;
-
-    public static int myTest(StringBuilder myBuilder, Object val2) {
-        return (Integer) 1;
-    }
-
-    public Object myTest2(Object parm) {
-        try {
-            Probe4 [] probes = new Probe4[1];
-            return (Probe2) parm;
-        } catch (RuntimeException ex) {
-            return (Probe3) parm;
-        }
-    }
-
+public class ProbeParent {
 }