You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2007/12/12 15:50:14 UTC

svn commit: r603630 - in /incubator/cxf/trunk/rt/javascript/src: main/java/org/apache/cxf/javascript/ test/java/org/apache/cxf/javascript/ test/java/org/apache/cxf/javascript/types/

Author: bimargulies
Date: Wed Dec 12 06:50:13 2007
New Revision: 603630

URL: http://svn.apache.org/viewvc?rev=603630&view=rev
Log:
Refactor and add testing to how we generate JavaScript prefixes.

Added:
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java   (with props)
Modified:
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/BasicNameManager.java
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptQueryHandler.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/BasicNameManager.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/BasicNameManager.java?rev=603630&r1=603629&r2=603630&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/BasicNameManager.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/BasicNameManager.java Wed Dec 12 06:50:13 2007
@@ -41,11 +41,37 @@
     
     private Map<String, String> nsPrefixMap;
     
-    public BasicNameManager(ServiceInfo service) {
-        this(service, null);
+    /**
+     * For unit testing, we allow a very meaningless version.
+     * Real uses use the factory methods.
+     */
+    BasicNameManager() {
     }
     
-    public BasicNameManager(ServiceInfo service, Endpoint endpoint) {
+    /**
+     * Factory that just takes a service. Used in tools and unit tests.
+     * @param service
+     * @return
+     */
+    public static BasicNameManager newNameManager(ServiceInfo service) {
+        BasicNameManager nameManager = new BasicNameManager();
+        nameManager.initialize(service, null);
+        return nameManager;
+    }
+    
+    /**
+     * 
+     * @param service
+     * @param endpoint
+     * @return
+     */
+    public static BasicNameManager newNameManager(ServiceInfo service, Endpoint endpoint) {
+        BasicNameManager nameManager = new BasicNameManager();
+        nameManager.initialize(service, endpoint);
+        return nameManager;
+    }
+
+    private void initialize(ServiceInfo service, Endpoint endpoint) {
         nsPrefixMap = new HashMap<String, String>();
         if (endpoint != null) {
             JavascriptOptionsFeature options = getOptions(endpoint);
@@ -74,7 +100,7 @@
             defineFallbackPrefix(uri);
         }
     }
-    
+
     private JavascriptOptionsFeature getOptions(Endpoint endpoint) {
         if (endpoint != null) {
             for (AbstractFeature feature : endpoint.getActiveFeatures()) {
@@ -86,9 +112,18 @@
         return new JavascriptOptionsFeature(); // save work and return a default set of options.
     }
 
+    /**
+     * Take a URI and turn it into a JavaScript name prefix.
+     * @param uri input URI.
+     * @return output prefix.
+     */
+    protected String transformURI(String uri) {
+        return uri.replaceAll("http:/*", "").replace("uri:", "").replaceAll("[\\.:/-]", "_");
+    }
+
     private String defineFallbackPrefix(String uri) {
         // this needs more work later. We are bound to annoy someone somehow in this area.
-        String jsPrefix = uri.replace("http:", "").replace("uri:", "").replaceAll("[\\.:/-]", "_");
+        String jsPrefix = transformURI(uri);
         nsPrefixMap.put(uri, jsPrefix);
         return jsPrefix;
     }

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptQueryHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptQueryHandler.java?rev=603630&r1=603629&r2=603630&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptQueryHandler.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/JavascriptQueryHandler.java Wed Dec 12 06:50:13 2007
@@ -126,7 +126,8 @@
             ServiceInfo serviceInfo = endpoint.getService();
             Collection<SchemaInfo> schemata = serviceInfo.getSchemas();
             Endpoint serverEndpoint = findEndpoint(endpoint);
-            BasicNameManager nameManager = new BasicNameManager(serviceInfo, serverEndpoint);
+            // we need to move this to the bus.
+            BasicNameManager nameManager = BasicNameManager.newNameManager(serviceInfo, serverEndpoint);
             NamespacePrefixAccumulator prefixManager = new NamespacePrefixAccumulator(serviceInfo
                 .getXmlSchemaCollection());
             try {

Added: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java?rev=603630&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java (added)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java Wed Dec 12 06:50:13 2007
@@ -0,0 +1,39 @@
+/**
+ * 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.cxf.javascript;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Simple tests of the name manager.
+ */
+public class BasicNameManagerTest extends Assert {
+     
+    @Test
+    public void testPrefixGeneration() {
+        BasicNameManager manager = new BasicNameManager();
+        String jsp = manager.transformURI("http://ThisIsA.Test");
+        assertEquals("ThisIsA_Test", jsp);
+        jsp = manager.transformURI("uri:george.bill:fred");
+        assertEquals("george_bill_fred", jsp);
+    }
+
+}

Propchange: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/BasicNameManagerTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java?rev=603630&r1=603629&r2=603630&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/JavascriptTestUtilities.java Wed Dec 12 06:50:13 2007
@@ -349,7 +349,7 @@
 
     public void loadJavascriptForService(ServiceInfo serviceInfo) {
         Collection<SchemaInfo> schemata = serviceInfo.getSchemas();
-        BasicNameManager nameManager = new BasicNameManager(serviceInfo);
+        BasicNameManager nameManager = BasicNameManager.newNameManager(serviceInfo);
         NamespacePrefixAccumulator prefixManager = new NamespacePrefixAccumulator(serviceInfo
             .getXmlSchemaCollection());
         for (SchemaInfo schema : schemata) {

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java?rev=603630&r1=603629&r2=603630&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java Wed Dec 12 06:50:13 2007
@@ -196,7 +196,7 @@
         assertEquals(1, serviceInfos.size());
         ServiceInfo serviceInfo = serviceInfos.get(0);
         schemata = serviceInfo.getSchemas();
-        nameManager = new BasicNameManager(serviceInfo);
+        nameManager = BasicNameManager.newNameManager(serviceInfo);
         NamespacePrefixAccumulator prefixAccumulator = 
             new NamespacePrefixAccumulator(serviceInfo.getXmlSchemaCollection());
         for (SchemaInfo schema : schemata) {