Author: gnodet
Date: Wed Feb 14 09:35:54 2007
New Revision: 507635

URL: http://svn.apache.org/viewvc?view=rev&rev=507635
Log:
SM-829: Incorrect file encoding of create jbi.xml

Added:
    incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/
    incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/
    incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
   (with props)
Modified:
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiComponentDescriptorWriter.java
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceAssemblyDescriptorWriter.java
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriter.java
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiSharedLibraryDescriptorWriter.java

Modified: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiComponentDescriptorWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiComponentDescriptorWriter.java?view=diff&rev=507635&r1=507634&r2=507635
==============================================================================
--- 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiComponentDescriptorWriter.java
 (original)
+++ 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiComponentDescriptorWriter.java
 Wed Feb 14 09:35:54 2007
@@ -17,8 +17,8 @@
 package org.apache.servicemix.maven.plugin.jbi;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.Iterator;
 import java.util.List;
@@ -39,9 +39,9 @@
             String componentClassLoaderDelegation, String 
bootstrapClassLoaderDelegation, 
             List uris)
                        throws JbiPluginException {
-               FileWriter w;
+        PrintWriter w;
                try {
-                       w = new FileWriter(descriptor);
+                       w = new PrintWriter(descriptor, encoding);
                } catch (IOException ex) {
                        throw new JbiPluginException("Exception while opening 
file["
                                        + descriptor.getAbsolutePath() + "]", 
ex);

Modified: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceAssemblyDescriptorWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceAssemblyDescriptorWriter.java?view=diff&rev=507635&r1=507634&r2=507635
==============================================================================
--- 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceAssemblyDescriptorWriter.java
 (original)
+++ 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceAssemblyDescriptorWriter.java
 Wed Feb 14 09:35:54 2007
@@ -17,8 +17,8 @@
 package org.apache.servicemix.maven.plugin.jbi;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -44,9 +44,9 @@
 
        public void write(File descriptor, String name, String description,
                        List uris, List connections) throws JbiPluginException {
-               FileWriter w;
+        PrintWriter w;
                try {
-                       w = new FileWriter(descriptor);
+                       w = new PrintWriter(descriptor, encoding);
                } catch (IOException ex) {
                        throw new JbiPluginException("Exception while opening 
file["
                                        + descriptor.getAbsolutePath() + "]", 
ex);

Modified: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriter.java?view=diff&rev=507635&r1=507634&r2=507635
==============================================================================
--- 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriter.java
 (original)
+++ 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriter.java
 Wed Feb 14 09:35:54 2007
@@ -17,8 +17,8 @@
 package org.apache.servicemix.maven.plugin.jbi;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.Iterator;
 import java.util.List;
@@ -43,9 +43,9 @@
 
        public void write(File descriptor, boolean bc, String name, String 
description,
                        List uris, List consumes, List provides) throws 
JbiPluginException {
-               FileWriter w;
+               PrintWriter w;
                try {
-                       w = new FileWriter(descriptor);
+                       w = new PrintWriter(descriptor, encoding);
                } catch (IOException ex) {
                        throw new JbiPluginException("Exception while opening 
file["
                                        + descriptor.getAbsolutePath() + "]", 
ex);

Modified: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiSharedLibraryDescriptorWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiSharedLibraryDescriptorWriter.java?view=diff&rev=507635&r1=507634&r2=507635
==============================================================================
--- 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiSharedLibraryDescriptorWriter.java
 (original)
+++ 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiSharedLibraryDescriptorWriter.java
 Wed Feb 14 09:35:54 2007
@@ -17,8 +17,8 @@
 package org.apache.servicemix.maven.plugin.jbi;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.Iterator;
 import java.util.List;
@@ -41,9 +41,9 @@
        public void write(File descriptor, String name, String description,
                        String version, String classLoaderDelegation, List uris)
                        throws JbiPluginException {
-               FileWriter w;
+        PrintWriter w;
                try {
-                       w = new FileWriter(descriptor);
+                       w = new PrintWriter(descriptor, encoding);
                } catch (IOException ex) {
                        throw new JbiPluginException("Exception while opening 
file["
                                        + descriptor.getAbsolutePath() + "]", 
ex);

Added: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java?view=auto&rev=507635
==============================================================================
--- 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
 (added)
+++ 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
 Wed Feb 14 09:35:54 2007
@@ -0,0 +1,183 @@
+/*
+ * 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.servicemix.maven.plugin.jbi;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.servicemix.common.packaging.Consumes;
+import org.apache.servicemix.common.packaging.Provides;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class JbiServiceUnitDescriptorWriterTest extends TestCase {
+
+       private static final String ENCODING_UTF8 = "UTF-8";
+       private static final String ENCODING_ISO88591 = "ISO-8859-1";
+       private static final String JBI_NAMESPACE = 
"http://java.sun.com/xml/ns/jbi";;
+
+       //TODO: how to fetch the build directory ('./target') from Maven 
property?
+       private String generatedDescriptorLocation = "./target/test-outputs";
+
+       private File outputDir;
+
+       protected void setUp() throws Exception {
+               super.setUp();
+
+               this.outputDir = new File(generatedDescriptorLocation);
+               if (!this.outputDir.exists()) {
+                       this.outputDir.mkdirs();
+               }
+       }
+
+       public void testUTF8EncodingWrite()
+                       throws Exception {
+               File descriptor = new File(outputDir, "jbi-su-UTF8.xml");
+
+               String xmlEncoding = ENCODING_UTF8;
+               writeDescriptor(descriptor, xmlEncoding);
+               verifyDescriptor(descriptor, xmlEncoding);
+       }
+
+       public void testISO88591EncodingWrite()
+                       throws Exception {
+               File descriptor = new File(outputDir, "jbi-su-ISO88591.xml");
+
+               String xmlEncoding = ENCODING_ISO88591;
+               writeDescriptor(descriptor, xmlEncoding);
+               verifyDescriptor(descriptor, xmlEncoding);
+       }
+
+       private void writeDescriptor(File descriptor, String encoding)
+                       throws JbiPluginException {
+               List consumes = new ArrayList();
+               List provides = new ArrayList();
+
+               QName serviceName = new QName("http://test.com/encoding";, 
"abcåäö");
+
+               Consumes newConsumes = new Consumes();
+               newConsumes.setServiceName(serviceName);
+               newConsumes.setEndpointName("consumeråäö");
+               consumes.add(newConsumes);
+
+               Provides newProvides = new Provides();
+               newProvides.setServiceName(serviceName);
+               newProvides.setEndpointName("provideråäö");
+               provides.add(newProvides);
+
+               JbiServiceUnitDescriptorWriter writer = new 
JbiServiceUnitDescriptorWriter(
+                               encoding);
+               writer.write(descriptor, false, "name", "description", new 
ArrayList(), consumes,
+                               provides);
+       }
+
+       private void verifyDescriptor(File descriptor, String 
expectedXmlEncoding) throws Exception {
+               Document doc = getDocument(descriptor);
+               assertEquals(doc.getXmlEncoding(), expectedXmlEncoding);
+
+               Element serviceElement = getServicesElement(doc);
+
+               List consumes = getConsumes(serviceElement);
+               Consumes con = (Consumes) consumes.get(0);
+               assertEquals(con.getServiceName().getLocalPart(), "abcåäö");
+               assertEquals(con.getEndpointName(), "consumeråäö");
+
+               List provides = getProvides(serviceElement);
+               Provides prov = (Provides) provides.get(0);
+               assertEquals(prov.getServiceName().getLocalPart(), "abcåäö");
+               assertEquals(prov.getEndpointName(), "provideråäö");
+       }
+
+       private Document getDocument(File jbiServicesFile) throws Exception {
+               DocumentBuilderFactory dbf = 
DocumentBuilderFactory.newInstance();
+               dbf.setNamespaceAware(true);
+               DocumentBuilder db = dbf.newDocumentBuilder();
+               Document doc = db.parse(jbiServicesFile);
+               
+               return doc;
+       }
+       
+       private Element getServicesElement(Document doc) throws Exception {
+               Node jbiNode = doc.getFirstChild();
+               assertTrue(XmlDescriptorHelper.isElement(jbiNode, 
JBI_NAMESPACE, "jbi"));
+               Node tmpNode = jbiNode.getFirstChild();
+               while (true) {
+                       assertNotNull(tmpNode);
+                       if (XmlDescriptorHelper.isElement(tmpNode, 
JBI_NAMESPACE,
+                                       "services")) {
+                               return (Element) tmpNode;
+                       } else {
+                               tmpNode = tmpNode.getNextSibling();
+                       }
+               }
+       }
+
+       private List getConsumes(Element servicesElement) throws Exception {
+               List consumes = new ArrayList();
+               NodeList children = servicesElement.getChildNodes();
+               for (int i = 0; i < children.getLength(); i++) {
+                       if (children.item(i) instanceof Element) {
+                               Element childElement = (Element) 
children.item(i);
+                               if (XmlDescriptorHelper.isElement(childElement, 
JBI_NAMESPACE,
+                                               "consumes")) {
+                                       Consumes newConsumes = new Consumes();
+                                       
newConsumes.setEndpointName(XmlDescriptorHelper
+                                                       
.getEndpointName(childElement));
+                                       
newConsumes.setInterfaceName(XmlDescriptorHelper
+                                                       
.getInterfaceName(childElement));
+                                       
newConsumes.setServiceName(XmlDescriptorHelper
+                                                       
.getServiceName(childElement));
+                                       consumes.add(newConsumes);
+                               }
+                       }
+               }
+               
+               return consumes;
+       }
+
+       private List getProvides(Element servicesElement) throws Exception {
+               List provides = new ArrayList();
+               NodeList children = servicesElement.getChildNodes();
+               for (int i = 0; i < children.getLength(); i++) {
+                       if (children.item(i) instanceof Element) {
+                               Element childElement = (Element) 
children.item(i);
+                               if (XmlDescriptorHelper.isElement(childElement, 
JBI_NAMESPACE,
+                                               "provides")) {
+                                       Provides newProvides = new Provides();
+                                       
newProvides.setEndpointName(XmlDescriptorHelper
+                                                       
.getEndpointName(childElement));
+                                       
newProvides.setInterfaceName(XmlDescriptorHelper
+                                                       
.getInterfaceName(childElement));
+                                       
newProvides.setServiceName(XmlDescriptorHelper
+                                                       
.getServiceName(childElement));
+                                       provides.add(newProvides);
+                               }
+                       }
+               }
+               
+               return provides;
+       }
+}

Propchange: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/test/java/org/apache/servicemix/maven/plugin/jbi/JbiServiceUnitDescriptorWriterTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to