You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ob...@apache.org on 2004/03/29 20:29:34 UTC

cvs commit: avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource Test.java EclipseResource.java ClassResourceManager.java JavaDocResource.java

oberhack    2004/03/29 10:29:34

  Modified:    ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource
                        Test.java EclipseResource.java
                        ClassResourceManager.java JavaDocResource.java
  Added:       ide/org.apache.avalon.ide.eclipse.core/lib commons-lang.jar
                        commons-logging.jar commons-collections-2.0.jar
  Log:
  
  
  Revision  Changes    Path
  1.1                  avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/lib/commons-lang.jar
  
  	<<Binary file>>
  
  
  1.1                  avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/lib/commons-logging.jar
  
  	<<Binary file>>
  
  
  1.1                  avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/lib/commons-collections-2.0.jar
  
  	<<Binary file>>
  
  
  1.3       +2 -2      avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/Test.java
  
  Index: Test.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/Test.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Test.java	2 Mar 2004 12:07:44 -0000	1.2
  +++ Test.java	29 Mar 2004 18:29:34 -0000	1.3
  @@ -27,7 +27,7 @@
   
       public static void main(String[] args)
       {
  -        String str = SystemResource.replaceAll("hallo %test% gg %test% o", "%test%", "neu");
  -        Object obj = str;
  +        SystemResource.replaceAll("hallo %test% gg %test% o", "%test%", "neu");
  +
       }
   }
  
  
  
  1.3       +79 -28    avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/EclipseResource.java
  
  Index: EclipseResource.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/EclipseResource.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EclipseResource.java	2 Mar 2004 12:07:44 -0000	1.2
  +++ EclipseResource.java	29 Mar 2004 18:29:34 -0000	1.3
  @@ -48,22 +48,22 @@
   {
   
       /**
  -	 * @uml property=project associationEnd={multiplicity={(0 -1)}
  -	 * elementType=java.lang.String}
  -	 *  
  -	 */
  +     * @uml property=project associationEnd={multiplicity={(0 -1)}
  +     * elementType=java.lang.String}
  +     *  
  +     */
       private IProject project;
   
       /**
  -	 * @uml property=classpathEntries associationEnd={multiplicity={(0 -1)}
  -	 * elementType=org.eclipse.jdt.core.IClasspathEntry}
  -	 *  
  -	 */
  +     * @uml property=classpathEntries associationEnd={multiplicity={(0 -1)}
  +     * elementType=org.eclipse.jdt.core.IClasspathEntry}
  +     *  
  +     */
       private Vector classpathEntries = new Vector();
   
       /**
  -	 *  
  -	 */
  +     *  
  +     */
       public EclipseResource(IProject project)
       {
           super();
  @@ -71,9 +71,63 @@
       }
   
       /**
  -	 * @param element
  -	 * @return
  -	 */
  +     * extracts the fully qualified class name from a given filePathName
  +     * 
  +     * @param pProject
  +     * @param pFilePathName
  +     * @return the fully qualified className
  +     */
  +    public static String getQualifiedClassName(IResource pResource)
  +    {
  +
  +        String qualifiedClassName = null;
  +        IProject project = pResource.getProject();
  +
  +        try
  +        {
  +            IJavaProject proj = JavaCore.create(project);
  +            String filePathName = pResource.getLocation().toString();
  +
  +            if (pResource.getFileExtension().toLowerCase().equals("class"))
  +            {
  +                String outputPath = proj.getOutputLocation().toString();
  +                String projectPath = project.getLocation().toString();
  +                outputPath = projectPath + outputPath.substring(project.getName().length());
  +                qualifiedClassName =
  +                    filePathName.substring(outputPath.length(), filePathName.length() - 6);
  +                return qualifiedClassName = qualifiedClassName.replace('/', '.');
  +            }
  +
  +            IPackageFragmentRoot roots[] = proj.getPackageFragmentRoots();
  +            String projectPath = project.getLocation().toString();
  +            String sourcePath = null;
  +
  +            for (int i = 0; roots.length > i; i++)
  +            {
  +                if (roots[i].isArchive())
  +                    continue;
  +                sourcePath = projectPath + "/" + roots[i].getElementName();
  +                if (sourcePath.equals(filePathName.substring(0, sourcePath.length())))
  +                {
  +                    break;
  +                }
  +            }
  +            qualifiedClassName =
  +                filePathName.substring(sourcePath.length() + 1, filePathName.length() - 5);
  +            qualifiedClassName = qualifiedClassName.replace('/', '.');
  +
  +        } catch (JavaModelException e)
  +        {
  +            e.printStackTrace();
  +        }
  +
  +        return qualifiedClassName;
  +    }
  +
  +    /**
  +     * @param element
  +     * @return
  +     */
       public String[] getSourcePaths() throws Exception
       {
   
  @@ -113,8 +167,8 @@
           }
       }
       /**
  -	 * @param b
  -	 */
  +     * @param b
  +     */
       private void addUuidAccessor(IType type, boolean b) throws Exception
       {
   
  @@ -169,8 +223,8 @@
           return buf.toString();
       }
       /**
  -	 * @param b
  -	 */
  +     * @param b
  +     */
       private void addUuidField(IType type, boolean b) throws Exception
       {
   
  @@ -196,9 +250,9 @@
       }
   
       /**
  -	 * @param file
  -	 * @return
  -	 */
  +     * @param file
  +     * @return
  +     */
       public static URLClassLoader getProjectClassLoader(IResource file)
       {
   
  @@ -219,11 +273,11 @@
       }
   
       /**
  -	 * Create a new Project with a given name and nature
  -	 * 
  -	 * @param pFile
  -	 * @return
  -	 */
  +     * Create a new Project with a given name and nature
  +     * 
  +     * @param pFile
  +     * @return
  +     */
       public static IProject createMerlinProject(String projectName, String nature)
           throws InvocationTargetException, InterruptedException
       {
  @@ -253,9 +307,6 @@
                   description.setLocation(null);
                   description.setNatureIds(natureIds);
                   project.setDescription(description, null);
  -
  -                //project.refreshLocal(IProject.DEPTH_INFINITE, new
  -                // SubProgressMonitor(monitor, 1));
   
               } catch (CoreException e)
               {
  
  
  
  1.3       +1 -1      avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/ClassResourceManager.java
  
  Index: ClassResourceManager.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/ClassResourceManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ClassResourceManager.java	2 Mar 2004 12:07:44 -0000	1.2
  +++ ClassResourceManager.java	29 Mar 2004 18:29:34 -0000	1.3
  @@ -41,7 +41,7 @@
       public String getFullyQualifiedName()
       {
   
  -        return getJavaDocResource().getFullQualifiedName();
  +        return getJavaDocResource().getQualifiedName();
       }
   
       /**
  
  
  
  1.3       +146 -27   avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/JavaDocResource.java
  
  Index: JavaDocResource.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/JavaDocResource.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JavaDocResource.java	2 Mar 2004 12:07:44 -0000	1.2
  +++ JavaDocResource.java	29 Mar 2004 18:29:34 -0000	1.3
  @@ -19,9 +19,11 @@
   
   import java.io.File;
   import java.io.IOException;
  +import java.io.StringBufferInputStream;
   import java.util.ArrayList;
   import java.util.Iterator;
   import java.util.List;
  +import java.util.Properties;
   
   import org.eclipse.core.resources.IProject;
   
  @@ -30,6 +32,7 @@
   import xjavadoc.XJavaDoc;
   import xjavadoc.XTag;
   import xjavadoc.filesystem.FileSourceSet;
  +import xjavadoc.filesystem.XJavadocFile;
   
   /**
    * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
  @@ -39,13 +42,23 @@
   {
   
       /**
  -	 * @uml property=xClass associationEnd={multiplicity={(1 1)}}
  -	 */
  +     * @uml property=xClass associationEnd={multiplicity={(1 1)}}
  +     */
       private XClass xClass;
  +    private static JavaDocResource[] docCache;
   
  +    public JavaDocResource(String qualifiedClassName, String filePathName)
  +    {
  +        XJavaDoc xDoc;
  +        xDoc = new XJavaDoc();
  +        xDoc.setUseNodeParser(true);
  +        xDoc.addAbstractFile(qualifiedClassName, new XJavadocFile(new File(filePathName)));
  +
  +        xClass = xDoc.getXClass(qualifiedClassName);
  +    }
       /**
  -	 *  
  -	 */
  +     *  
  +     */
       public JavaDocResource(XClass clazz)
       {
   
  @@ -53,13 +66,13 @@
       }
   
       /**
  -	 * Collects all java source files of a project. If it is not possible to
  -	 * retrieve the corresponding project of 'element' throw an exception.
  -	 * @TODO Change, so that no ref to EclipseResource
  -	 * 
  -	 * @param IProject
  -	 *            project
  -	 */
  +     * Collects all java source files of a project. If it is not possible to
  +     * retrieve the corresponding project of 'element' throw an exception.
  +     * @TODO Change, so that no ref to EclipseResource
  +     * 
  +     * @param IProject
  +     *            project
  +     */
       public static JavaDocResource[] getJavaDocResources(IProject project)
       {
           XJavaDoc xDoc;
  @@ -89,9 +102,24 @@
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
  -        return (JavaDocResource[]) infoList.toArray(new JavaDocResource[infoList.size()]);
  +        docCache = (JavaDocResource[]) infoList.toArray(new JavaDocResource[infoList.size()]);
  +        return docCache;
       }
  -
  +    
  +    public static JavaDocResource getJavaDocResource(String qualifiedClassName)
  +    {
  +        if (docCache==null) return null;
  +        
  +        for(int i=0; docCache.length>i; i++){
  +            if(docCache[i].getQualifiedName().equals(qualifiedClassName))
  +            {
  +                return docCache[i];
  +            }
  +        }
  +        return null;
  +    }
  +    
  +    
       public void setPersistent(boolean b)
       {
           XTag tag = xClass.getDoc().getTag("persistent");
  @@ -106,25 +134,114 @@
       }
   
       /**
  -	 * @return
  -	 */
  +     * @param string
  +     * @return
  +     */
       public boolean isPersistent()
       {
  -        return (xClass.getDoc().getTag("persistent") != null);
  +
  +        XClass sClass;
  +        XClass clazz = xClass;
  +        
  +        if(isClassPersistent(clazz)) return true;
  +
  +        while (!(sClass = clazz.getSuperclass()).getName().equals("Object"))
  +           {
  +            if (isClassPersistent(sClass))
  +               {
  +                return isClassPersistent(sClass);
  +            }
  +            clazz = sClass;
  +        }
  +        return isClassPersistent(clazz);
  +    }
  +    
  +    /**
  +     * @return
  +     */
  +    public boolean isClassPersistent(XClass xClazz)
  +    {
  +        XTag tag;
  +
  +        if (xClazz.getDoc().getTag("persistent") != null)
  +            return true;
  +
  +        try
  +        {
  +            if ((tag = xClazz.getDoc().getTag("uml")) != null)
  +            {
  +                String stereotype = tag.getValue();
  +                Properties prop = new Properties();
  +                prop.load(new StringBufferInputStream(stereotype));
  +                if ((stereotype = (String) prop.get("stereotypes")) == null)
  +                    return false;
  +                String array[] = stringToArray(stereotype);
  +                for (int j = 0; array.length > j; j++)
  +                {
  +                    if (array[j].equals("persistent"))
  +                        return true;
  +                }
  +            }
  +
  +        } catch (IOException e)
  +        {
  +            e.printStackTrace();
  +        }
  +        return false;
       }
   
       /**
  -	 * @return
  -	 */
  -    public String getFullQualifiedName()
  +     * @param pStereotype
  +     * @return
  +     */
  +    private String[] stringToArray(String pStereotype)
  +    {
  +        List result = new ArrayList();
  +        StringBuffer buf = new StringBuffer(pStereotype);
  +        char ch;
  +        boolean open = false;
  +        StringBuffer out = new StringBuffer();
  +
  +        for (int i = 0; buf.length() > i; i++)
  +        {
  +            ch = buf.charAt(i);
  +            if (ch == '{')
  +                continue;
  +            if (ch == '}')
  +                continue;
  +            if (ch == '"' && !open)
  +            {
  +                open = true;
  +                out = new StringBuffer();
  +                continue;
  +            }
  +            if (ch == '"' && open)
  +            {
  +                open = false;
  +                result.add(out.toString());
  +                continue;
  +            }
  +
  +            if (open)
  +                out.append(ch);
  +
  +        }
  +
  +        return (String[]) result.toArray(new String[result.size()]);
  +    }
  +
  +    /**
  +     * @return
  +     */
  +    public String getQualifiedName()
       {
   
           return xClass.getQualifiedName();
       }
   
       /**
  -	 *  
  -	 */
  +     *  
  +     */
       public void save()
       {
   
  @@ -139,22 +256,24 @@
       }
   
       /**
  -	 * @param string
  -	 * @return
  -	 */
  +     * @param string
  +     * @return
  +     */
       public Object getAttribute(String string)
       {
   
           XClass sClass;
  -        sClass = xClass;
  -        while (!(sClass = sClass.getSuperclass()).getName().equals("Object"))
  +        XClass clazz = xClass;
  +
  +        while (!(sClass = clazz.getSuperclass()).getName().equals("Object"))
           {
               if (sClass.getField(string) != null)
               {
                   return sClass.getField(string);
               }
  +            clazz = sClass;
           }
  -        return null;
  +        return clazz.getField(string);
       }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org