oberhack    2004/02/02 12:15:29

  Modified:    
ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource
                        XMLResource.java TemplateResource.java
                        SystemResource.java
               
ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/xmlmodel
                        XStream.java AttributeContainerConverter.java
               ide/org.apache.avalon.ide.eclipse.core plugin.xml .classpath
               ide/org.apache.avalon.ide.eclipse.core/docs/eclipse/html/downloads
                        .cvsignore
  Added:       
ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource
                        Test.java
  Log:
  xstream 0.2
  
  Revision  Changes    Path
  1.2       +0 -1      
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/XMLResource.java
  
  Index: XMLResource.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/XMLResource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLResource.java  26 Jan 2004 08:36:48 -0000      1.1
  +++ XMLResource.java  2 Feb 2004 20:15:28 -0000       1.2
  @@ -71,7 +71,6 @@
       {
           super();
           xs = new XStream();
  -        xs.registerConverter(new AttributeContainerConverter(xs.getClassMapper()));
       }
   
       public void alias(String name, Class clazz)
  
  
  
  1.2       +16 -6     
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/TemplateResource.java
  
  Index: TemplateResource.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/TemplateResource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TemplateResource.java     26 Jan 2004 08:36:48 -0000      1.1
  +++ TemplateResource.java     2 Feb 2004 20:15:28 -0000       1.2
  @@ -117,7 +117,12 @@
                       {
                           if ((line.indexOf(key)) != -1)
                           {
  -                            line = line.replaceAll(key, (String) map.get(key));
  +                            /* 
  +                             * to retain 1.3.1 compatibiliy (WSAD) dont use 
"replace"
  +                             * line = line.replaceAll(key, (String) map.get(key));
  +                             */
  +                            line = SystemResource.replaceAll(line, key, (String) 
map.get(key)); 
  +                            
                           }
                       }
                   }
  @@ -132,23 +137,28 @@
               System.out.println(e);
           }
       }
  -    public static String replaceParam(String input, DynProjectParam param)
  +    public static String replaceParam(String line, DynProjectParam map)
       {
   
  -        Iterator it = param.keySet().iterator();
  +        Iterator it = map.keySet().iterator();
           String key;
   
           while (it.hasNext())
           {
               if ((key = (String) it.next()).startsWith("%"))
               {
  -                if ((input.indexOf(key)) != -1)
  +                if ((line.indexOf(key)) != -1)
                   {
  -                    input = input.replaceAll(key, (String) param.get(key));
  +                    /* 
  +                     * to retain 1.3.1 compatibiliy (WSAD) dont use "replace"
  +                     * line = line.replaceAll(key, (String) map.get(key));
  +                     */
  +                    line = SystemResource.replaceAll(line, key, (String) 
map.get(key));
  +               
                   }
               }
           }
  -        return input;
  +        return line;
   
       }
       /**
  
  
  
  1.2       +114 -7    
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/SystemResource.java
  
  Index: SystemResource.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/SystemResource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SystemResource.java       26 Jan 2004 08:36:48 -0000      1.1
  +++ SystemResource.java       2 Feb 2004 20:15:28 -0000       1.2
  @@ -47,8 +47,9 @@
   import java.io.FileNotFoundException;
   import java.io.FileOutputStream;
   import java.io.IOException;
  +import java.io.InputStream;
   import java.io.InputStreamReader;
  -import java.nio.channels.FileChannel;
  +import java.io.OutputStream;
   
   import org.apache.avalon.ide.eclipse.merlin.core.MerlinDeveloperCore;
   
  @@ -66,15 +67,100 @@
       {
           super();
       }
  +    /*
  +      * java 1.4 version to retain 1.3.1 compatibility (WSAD!) dont use it now
  +      * 
  +      * public static void copyFile(File in, File out) throws Exception {
  +      * FileChannel sourceChannel = new FileInputStream(in).getChannel();
  +      * FileChannel destinationChannel = new FileOutputStream(out).getChannel();
  +      * sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);
  +      * sourceChannel.close(); destinationChannel.close(); }
  +      */
  +    /*
  +      * This method makes a copy of a file.
  +      * 
  +      * java CopyFile source.dat copy.dat
  +      * 
  +      * This command will fail if a file named copy.dat already exists. To force
  +      * the command to succede, add the -f command line option:
  +      * 
  +      * java CopyFile -f source.dat copy.dat
  +      * 
  +      * Either command will fail if the source file does not exist.
  +      */
   
       public static void copyFile(File in, File out) throws Exception
       {
  -        FileChannel sourceChannel = new FileInputStream(in).getChannel();
  -        FileChannel destinationChannel = new FileOutputStream(out).getChannel();
  -        sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);
  -        sourceChannel.close();
  -        destinationChannel.close();
  -    }
  +        InputStream source; // Stream for reading from the source file.
  +        OutputStream copy; // Stream for writing the copy.
  +        boolean force = true; // This is set to true if the "-f" option is
  +                                                       // specified.
  +        int byteCount; // The number of bytes copied from the source file.
  +
  +        /* Create the input stream. If an error occurs, end the program. */
  +
  +        try
  +        {
  +            source = new FileInputStream(in);
  +        } catch (FileNotFoundException e)
  +        {
  +            MerlinDeveloperCore.log(e, "Can't find file \"" + in.getName() + "\".");
  +            return;
  +        }
  +
  +        /*
  +              * If the output file alrady exists and the -f option was not
  +              * specified,
  +              */
  +
  +        File file = out;
  +        if (file.exists() && force == false)
  +        {
  +            MerlinDeveloperCore.log(null, "Output file exists.  Use the -f option 
to replace it.");
  +            return;
  +        }
  +
  +        /* Create the output stream. If an error occurs, end the program. */
  +
  +        try
  +        {
  +            copy = new FileOutputStream(out);
  +        } catch (IOException e)
  +        {
  +            System.out.println("Can't open output file \"" + out.getName() + "\".");
  +            return;
  +        }
  +
  +        /*
  +              * Copy one byte at a time from the input stream to the out put stream,
  +              * ending when the read() method returns -1 (which is the signal that
  +              * the end of the stream has been reached. If any error occurs, print
  +              * an error message. Also print a message if the file has bee copied
  +              */
  +
  +        byteCount = 0;
  +
  +        try
  +        {
  +            while (true)
  +            {
  +                int data = source.read();
  +                if (data < 0)
  +                    break;
  +                copy.write(data);
  +                byteCount++;
  +            }
  +            source.close();
  +            copy.close();
  +
  +        } catch (Exception e)
  +        {
  +            MerlinDeveloperCore.log(
  +                e,
  +                "Error occured while copying.  " + byteCount + " bytes copied.");
  +        }
  +
  +    } // end copyFile()
   
       public static String getFileContents(String fileName)
       {
  @@ -100,5 +186,26 @@
               MerlinDeveloperCore.log(e, "");
           }
           return buf.toString();
  +    }
  +    /**
  +     * @param pLine
  +     * @param pKey
  +     * @param pString
  +     * @return
  +     */
  +    public static String replaceAll(String source, String pKey, String pReplacement)
  +    {
  +        int start = 0;
  +        int next;
  +        StringBuffer in = new StringBuffer(source);
  +        StringBuffer out = new StringBuffer();
  +        while((next = in.indexOf(pKey, start)) != -1){
  +            out.append(source.substring(start, next));
  +            out.append(pReplacement);
  +            start = next + pKey.length();
  +        };
  +        out.append(source.substring(start, source.length()));
  +        
  +        return out.toString();
       }
   }
  
  
  
  1.1                  
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/resource/Test.java
  
  Index: Test.java
  ===================================================================
  /*
   * Created on 30.01.2004
   *
   * To change the template for this generated file go to
   * Window - Preferences - Java - Code Generation - Code and Comments
   */
  package org.apache.avalon.ide.eclipse.core.resource;
  
  /**
   * @author Andreas Develop
   *
   * To change the template for this generated type comment go to
   * Window - Preferences - Java - Code Generation - Code and Comments
   */
  public class Test
  {
  
      public static void main(String[] args)
      {
          String str = SystemResource.replaceAll("hallo %test% gg %test% o", "%test%", 
"neu");
          Object obj = str;
      }
  }
  
  
  
  1.2       +25 -45    
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/xmlmodel/XStream.java
  
  Index: XStream.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/xmlmodel/XStream.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XStream.java      26 Jan 2004 08:36:49 -0000      1.1
  +++ XStream.java      2 Feb 2004 20:15:28 -0000       1.2
  @@ -41,8 +41,10 @@
    * Apache Software Foundation, please see <http://www.apache.org/> .
    */
   package org.apache.avalon.ide.eclipse.core.xmlmodel;
  -
   import com.thoughtworks.xstream.alias.DefaultClassMapper;
  +import com.thoughtworks.xstream.alias.ClassMapper;
  +import com.thoughtworks.xstream.alias.DefaultElementMapper;
  +import com.thoughtworks.xstream.alias.ElementMapper;
   import com.thoughtworks.xstream.converters.Converter;
   import com.thoughtworks.xstream.converters.ConverterLookup;
   import com.thoughtworks.xstream.converters.basic.*;
  @@ -65,29 +67,21 @@
   import java.io.Writer;
   import java.util.*;
   
  -/**
  - * @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development Team</a>*
  - */
  -public class XStream
  -{
  -
  -    /**
  -      * @uml property=classMapper associationEnd={multiplicity={(1 1)}}
  -      */
  -    private DefaultClassMapper classMapper = new DefaultClassMapper();
  -
  -    /**
  -      * @uml property=converterLookup associationEnd={multiplicity={(1 1)}}
  -      */
  -    private ConverterLookup converterLookup = new DefaultConverterLookup();
  +public class XStream {
   
  -    /**
  -      * @uml property=xmlReaderDriver associationEnd={multiplicity={(1 1)}}
  -      */
  +    private ConverterLookup converterLookup = new DefaultConverterLookup();
       private XMLReaderDriver xmlReaderDriver = new DomXMLReaderDriver();
  +    private ClassMapper classMapper;
  +    private ObjectFactory objectFactory;
  +
  +    public XStream() {
  +        this(new SunReflectionObjectFactory(), new DefaultClassMapper(), new 
DefaultElementMapper());
  +    }
  +
  +    public XStream(ObjectFactory objectFactory, ClassMapper classMapper, 
ElementMapper elementMapper) {
  +        this.classMapper = classMapper;
  +        this.objectFactory = objectFactory;
   
  -    public XStream()
  -    {
           alias("int", Integer.class);
           alias("float", Float.class);
           alias("double", Double.class);
  @@ -112,7 +106,9 @@
           alias("tree-map", TreeMap.class);
           alias("tree-set", TreeSet.class);
   
  -        registerConverter(new ObjectWithFieldsConverter(classMapper));
  +        registerConverter(new ObjectWithFieldsConverter(classMapper,elementMapper));
  +        // added to work with attributes. MerlinDeveloper
  +        registerConverter(new 
AttributeContainerConverter(classMapper,elementMapper));        
   
           registerConverter(new IntConverter());
           registerConverter(new FloatConverter());
  @@ -134,27 +130,22 @@
   
       }
   
  -    public void alias(String elementName, Class type, Class defaultImplementation)
  -    {
  +    public void alias(String elementName, Class type, Class defaultImplementation) {
           classMapper.alias(elementName, type, defaultImplementation);
       }
   
  -    public void alias(String elementName, Class type)
  -    {
  +    public void alias(String elementName, Class type) {
           alias(elementName, type, type);
       }
   
  -    public String toXML(Object obj)
  -    {
  +    public String toXML(Object obj) {
           Writer stringWriter = new StringWriter();
           XMLWriter xmlWriter = new PrettyPrintXMLWriter(stringWriter);
           toXML(obj, xmlWriter);
           return stringWriter.toString();
       }
   
  -    public void toXML(Object obj, XMLWriter xmlWriter)
  -    {
  -        ObjectFactory objectFactory = new SunReflectionObjectFactory();
  +    public void toXML(Object obj, XMLWriter xmlWriter) {
           ObjectTree objectGraph = new ReflectionObjectGraph(obj, objectFactory);
           Converter rootConverter = 
converterLookup.lookupConverterForType(obj.getClass());
           xmlWriter.startElement(classMapper.lookupName(obj.getClass()));
  @@ -162,13 +153,11 @@
           xmlWriter.endElement();
       }
   
  -    public Object fromXML(String xml)
  -    {
  +    public Object fromXML(String xml) {
           return fromXML(xmlReaderDriver.createReader(xml));
       }
   
  -    public Object fromXML(XMLReader xmlReader)
  -    {
  +    public Object fromXML(XMLReader xmlReader) {
           Class type = classMapper.lookupType(xmlReader.name());
           ObjectFactory objectFactory = new SunReflectionObjectFactory();
           ObjectTree objectGraph = new ReflectionObjectGraph(type, objectFactory);
  @@ -177,17 +166,8 @@
           return objectGraph.get();
       }
   
  -    public void registerConverter(Converter converter)
  -    {
  +    public void registerConverter(Converter converter) {
           converterLookup.registerConverter(converter);
  -    }
  -
  -    /**
  -      * @return Returns the classMapper. @uml property=classMapper
  -      */
  -    public DefaultClassMapper getClassMapper()
  -    {
  -        return classMapper;
       }
   
   }
  
  
  
  1.2       +38 -19    
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/xmlmodel/AttributeContainerConverter.java
  
  Index: AttributeContainerConverter.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/src/org/apache/avalon/ide/eclipse/core/xmlmodel/AttributeContainerConverter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AttributeContainerConverter.java  26 Jan 2004 08:36:49 -0000      1.1
  +++ AttributeContainerConverter.java  2 Feb 2004 20:15:28 -0000       1.2
  @@ -43,6 +43,7 @@
   package org.apache.avalon.ide.eclipse.core.xmlmodel;
   
   import com.thoughtworks.xstream.alias.ClassMapper;
  +import com.thoughtworks.xstream.alias.ElementMapper;
   import com.thoughtworks.xstream.converters.Converter;
   import com.thoughtworks.xstream.converters.ConverterLookup;
   import com.thoughtworks.xstream.objecttree.ObjectTree;
  @@ -60,10 +61,12 @@
         * @uml property=classMapper associationEnd={multiplicity={(1 1)}}
         */
       private ClassMapper classMapper;
  +    private ElementMapper elementMapper;
   
  -    public AttributeContainerConverter(ClassMapper classMapper)
  +    public AttributeContainerConverter(ClassMapper classMapper, ElementMapper 
elementMapper)
       {
           this.classMapper = classMapper;
  +        this.elementMapper = elementMapper;
       }
       public boolean canConvert(Class type)
       {
  @@ -73,6 +76,7 @@
       public void toXML(ObjectTree objectGraph, XMLWriter xmlWriter, ConverterLookup 
converterLookup)
       {
           String[] fieldNames = objectGraph.fieldNames();
  +        //        circularityTracker.track(objectGraph.get());
           for (int i = 0; i < fieldNames.length; i++)
           {
               String fieldName = fieldNames[i];
  @@ -81,7 +85,11 @@
   
               if (objectGraph.get() != null)
               {
  -                writeFieldAsXML(xmlWriter, fieldName, objectGraph, converterLookup);
  +                writeFieldAsXML(
  +                    xmlWriter,
  +                    elementMapper.toXml(fieldName),
  +                    objectGraph,
  +                    converterLookup);
               }
   
               objectGraph.pop();
  @@ -94,9 +102,25 @@
           ObjectTree objectGraph,
           ConverterLookup converterLookup)
       {
  +        xmlWriter.startElement(fieldName);
   
  -        xmlWriter.addAttribute(fieldName, (String) objectGraph.get());
  +        writeClassAttributeInXMLIfNotDefaultImplementation(objectGraph, xmlWriter);
  +        Converter converter = 
converterLookup.lookupConverterForType(objectGraph.type());
  +        converter.toXML(objectGraph, xmlWriter, converterLookup);
   
  +        xmlWriter.endElement();
  +    }
  +
  +    protected void writeClassAttributeInXMLIfNotDefaultImplementation(
  +        ObjectTree objectGraph,
  +        XMLWriter xmlWriter)
  +    {
  +        Class actualType = objectGraph.get().getClass();
  +        Class defaultType = classMapper.lookupDefaultType(objectGraph.type());
  +        if (!actualType.equals(defaultType))
  +        {
  +            xmlWriter.addAttribute("class", classMapper.lookupName(actualType));
  +        }
       }
   
       public void fromXML(
  @@ -116,16 +140,19 @@
                   objectGraph.set(xmlReader.attribute(fieldName));
                   objectGraph.pop();
                   //xmlReader.pop();
  -            } else if (xmlReader.childExists(fieldName))
  +            } else
               {
  -                objectGraph.push(fieldName);
  -                xmlReader.child(fieldName);
  -                Class type = determineWhichImplementationToUse(xmlReader, 
objectGraph);
  -                Converter converter = converterLookup.lookupConverterForType(type);
  -                converter.fromXML(objectGraph, xmlReader, converterLookup, type);
  +                while (xmlReader.nextChild())
  +                {
  +                    objectGraph.push(elementMapper.fromXml(xmlReader.name()));
  +
  +                    Class type = determineWhichImplementationToUse(xmlReader, 
objectGraph);
  +                    Converter converter = 
converterLookup.lookupConverterForType(type);
  +                    converter.fromXML(objectGraph, xmlReader, converterLookup, 
type);
  +                    objectGraph.pop();
   
  -                xmlReader.pop();
  -                objectGraph.pop();
  +                    xmlReader.pop();
  +                }
               }
           }
       }
  @@ -144,13 +171,5 @@
               type = classMapper.lookupType(classAttribute);
           }
           return type;
  -    }
  -
  -    private int read(String field, XMLReader reader)
  -    {
  -        reader.child(field);
  -        int result = Integer.parseInt(reader.text());
  -        reader.pop();
  -        return result;
       }
   }
  
  
  
  1.2       +2 -2      avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/plugin.xml
  
  Index: plugin.xml
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/plugin.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- plugin.xml        26 Jan 2004 08:36:49 -0000      1.1
  +++ plugin.xml        2 Feb 2004 20:15:29 -0000       1.2
  @@ -2,7 +2,7 @@
   <plugin
      id="org.apache.avalon.MerlinDeveloperCore"
      name="MerlinDeveloper Core"
  -   version="0.0.1"
  +   version="0.0.2"
      provider-name="Apache Software Foundation"
      class="org.apache.avalon.ide.eclipse.merlin.core.MerlinDeveloperCore">
   
  @@ -10,7 +10,7 @@
         <library name="MerlinDeveloperCore.jar">
            <export name="*"/>
         </library>
  -      <library name="lib/xstream-0.1.jar"/>
  +      <library name="lib/xstream-0.2.jar"/>
         <library name="lib/xdoclet-1.2b4.jar"/>
         <library name="lib/xjavadoc-1.0.jar"/>
      </runtime>
  
  
  
  1.4       +1 -1      avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/.classpath
  
  Index: .classpath
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/.classpath,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- .classpath        27 Jan 2004 15:51:14 -0000      1.3
  +++ .classpath        2 Feb 2004 20:15:29 -0000       1.4
  @@ -5,6 +5,6 @@
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
        <classpathentry kind="lib" path="lib/xdoclet-1.2b4.jar"/>
        <classpathentry kind="lib" path="lib/xjavadoc-1.0.jar"/>
  -     <classpathentry kind="lib" path="lib/xstream-0.1.jar"/>
  +     <classpathentry kind="lib" path="lib/xstream-0.2.jar"/>
        <classpathentry kind="output" path="bin"/>
   </classpath>
  
  
  
  1.2       +1 -1      
avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/docs/eclipse/html/downloads/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/ide/org.apache.avalon.ide.eclipse.core/docs/eclipse/html/downloads/.cvsignore,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- .cvsignore        27 Jan 2004 15:34:57 -0000      1.1
  +++ .cvsignore        2 Feb 2004 20:15:29 -0000       1.2
  @@ -1 +1 @@
  -MerlinDeveloper_0.0.1.zip
  +*.zip
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to