You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2005/04/24 14:07:23 UTC

svn commit: r164469 - in /cocoon/whiteboard/block-deployer: ./ src/api/org/apache/cocoon/blockdeployer/block/ src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/ src/impl/org/apache/cocoon/blockdeployer/block/ src/impl/org/apache/cocoon/blockdeployer/block/descriptor/ src/impl/org/apache/cocoon/blockdeployer/repository/ test/junit/org/apache/cocoon/blockdeployer/ test/junit/org/apache/cocoon/blockdeployer/repository/ test/sample-descriptors/ test/sample-repositories/application-server/WEB-INF/blocks/

Author: reinhard
Date: Sun Apr 24 05:07:22 2005
New Revision: 164469

URL: http://svn.apache.org/viewcvs?rev=164469&view=rev
Log:
work on actual block deployment: create wiring information; fix object/xml-mapping when namespaces are used; testcases

Added:
    cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/
    cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/DeploymentProperty.java
    cocoon/whiteboard/block-deployer/test/sample-descriptors/block_001.xml
    cocoon/whiteboard/block-deployer/test/sample-descriptors/deploy_001.xml
      - copied unchanged from r159025, cocoon/whiteboard/block-deployer/test/sample-descriptors/sample-deploy.xml
    cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_001.xml
    cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_002.xml
Removed:
    cocoon/whiteboard/block-deployer/test/sample-descriptors/sample-block.xml
    cocoon/whiteboard/block-deployer/test/sample-descriptors/sample-deploy.xml
    cocoon/whiteboard/block-deployer/test/sample-descriptors/sample-wiring.xml
Modified:
    cocoon/whiteboard/block-deployer/.classpath
    cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java
    cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDeploymentData.java
    cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockFactory.java
    cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10-mapping.xml
    cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10.java
    cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/descriptor/Cob10Descriptor.java
    cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServer22Locator.java
    cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java
    cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java
    cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/ApplicationServer22LocatorTest.java
    cocoon/whiteboard/block-deployer/test/sample-repositories/application-server/WEB-INF/blocks/wiring.xml

Modified: cocoon/whiteboard/block-deployer/.classpath
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/.classpath?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/.classpath (original)
+++ cocoon/whiteboard/block-deployer/.classpath Sun Apr 24 05:07:22 2005
@@ -68,10 +68,6 @@
 		<attributes>
 		</attributes>
 	</classpathentry>
-	<classpathentry kind="lib" path="lib/castor-0.9.6-xml.jar">
-		<attributes>
-		</attributes>
-	</classpathentry>
 	<classpathentry kind="lib" path="lib/commons-logging-1.0.4.jar">
 		<attributes>
 		</attributes>
@@ -85,6 +81,10 @@
 		</attributes>
 	</classpathentry>
 	<classpathentry kind="lib" path="build/CocoonBlockDeployer-generated-0.1dev.jar">
+		<attributes>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="lib" path="lib/castor-0.9.6-xml.jar">
 		<attributes>
 		</attributes>
 	</classpathentry>

Modified: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java (original)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java Sun Apr 24 05:07:22 2005
@@ -61,4 +61,9 @@
      */
     public BlockDeploymentData getBlockDeploymentData();
     
+    /**
+     * @param set BlockDeploymentData
+     */
+    public void setBlockDeploymentData(BlockDeploymentData data);
+    
 }

Modified: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDeploymentData.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDeploymentData.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDeploymentData.java (original)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDeploymentData.java Sun Apr 24 05:07:22 2005
@@ -17,7 +17,7 @@
 
 import java.util.Iterator;
 
-import org.apache.cocoon.blockdeployer.block.descriptor.BlockProperty;
+import org.apache.cocoon.blockdeployer.block.descriptor.deployment.DeploymentProperty;
 
 public interface BlockDeploymentData {
 
@@ -44,6 +44,6 @@
      * @param name of the property
      * @return returns a BlockProperty object containing the property information
      */
-    public BlockProperty getProperty(String name);
+    public DeploymentProperty getProperty(String name);
     
 }

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/DeploymentProperty.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/DeploymentProperty.java?rev=164469&view=auto
==============================================================================
--- cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/DeploymentProperty.java (added)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/descriptor/deployment/DeploymentProperty.java Sun Apr 24 05:07:22 2005
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed 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.cocoon.blockdeployer.block.descriptor.deployment;
+
+public interface DeploymentProperty {
+
+    public String getName();
+    
+    public String getValue();
+    
+}

Modified: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockFactory.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockFactory.java (original)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockFactory.java Sun Apr 24 05:07:22 2005
@@ -15,7 +15,6 @@
  */
 package org.apache.cocoon.blockdeployer.block;
 
-import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.cocoon.blockdeployer.block.descriptor.Cob10Descriptor;
@@ -25,9 +24,7 @@
 import org.exolab.castor.xml.Unmarshaller;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
 
 /**
  * This factory class creates RemoteBlocks based on the descriptor
@@ -51,7 +48,7 @@
     /*
      * FIXME the descriptor should be analyzed whether it is correct - otherwise raise an exception
      */
-    public static Block getRemoteBlock(InputStream descriptor, Locator locator) {
+    public static Block createBlock(InputStream descriptor, Locator locator) {
         if(descriptor == null) {
             throw new NullPointerException("The descriptor mustn't be null.");
         }
@@ -66,18 +63,8 @@
 		} catch (Exception e) {
             throw new RuntimeException("Block descriptor can't be read.");
         }
-        Document descriptorDocument = parser.getDocument();   
-        NodeList rootNodeList = descriptorDocument.getChildNodes();
-        String namespace = null;
-        for(int i = 0; i <= rootNodeList.getLength() && i <= 1; i++ ) {
-            Node rootChildNode = rootNodeList.item(i);
-            if(rootChildNode.getNodeType() == Node.ELEMENT_NODE) {
-                namespace = rootChildNode.getNamespaceURI();
-            	System.out.println("namespace: " + namespace);
-            }
-        }           
-        
-        if(Cob10.NAMESPACE.equals(namespace)) {
+        Document descriptorDocument = parser.getDocument();
+        if(Cob10.NAMESPACE.equals(descriptorDocument.getDocumentElement().getNamespaceURI())) {
             // it's a Cob10 ...
             Cob10 cob10 = new Cob10();
             cob10.setBlockDescriptor(createCOB10Descriptor(descriptorDocument));

Modified: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10-mapping.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10-mapping.xml?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10-mapping.xml (original)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10-mapping.xml Sun Apr 24 05:07:22 2005
@@ -16,41 +16,28 @@
 -->
 <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                            "http://castor.exolab.org/mapping.dtd">
-<mapping>
+<mapping xmlns:b="http://apache.org/cocoon/blocks/cob/1.0">
   <class name="org.apache.cocoon.blockdeployer.block.descriptor.Cob10Descriptor">
-    <map-to xml="block" ns-uri="http://apache.org/cocoon/blocks/cob/1.0"/>
-    <field name="name" type="string" >
-      <bind-xml name="name" node="element" />
-    </field>
-    <field name="blockId" type="string">
+    <map-to xml="b:block"/>
+    <field name="blockId">
       <bind-xml name="id" node="attribute"/>
-    </field>
-    <field name="properties" type="org.apache.cocoon.blockdeployer.block.descriptor.Cob10Property" collection="collection" >
-      <bind-xml name="property" node="element" location="properties"/>
-    </field>   
-    <field name="requirements" type="org.apache.cocoon.blockdeployer.block.descriptor.Cob10Requirement" collection="collection" >
-      <bind-xml name="requires" node="element" location="requirements"/>
-    </field>          
+    </field>    
+    <field name="name">
+      <bind-xml name="b:name" node="element" />
+    </field>
+    <field name="properties" type="org.apache.cocoon.blockdeployer.block.descriptor.Cob10Property" collection="collection">
+      <bind-xml name="b:property" node="element" location="properties"/>
+    </field>     
   </class>
   <class name="org.apache.cocoon.blockdeployer.block.descriptor.Cob10Property">
-    <map-to ns-uri="http://apache.org/cocoon/blocks/cob/1.0"/>
-    <field name="name" type="string">
-      <bind-xml name="name" node="attribute"/>
-    </field>
-    <field name="description" type="string" >
-      <bind-xml name="description" node="element" />
-    </field>
-    <field name="defaultValue" type="string" >
-      <bind-xml name="default" node="element" />
+    <field name="name">
+      <bind-xml name="b:name" node="attribute"/>
     </field>
-  </class>
-  <class name="org.apache.cocoon.blockdeployer.block.descriptor.Cob10Requirement">
-    <map-to ns-uri="http://apache.org/cocoon/blocks/cob/1.0"/>
-    <field name="name" type="string">
-      <bind-xml name="name" node="attribute"/>
-    </field>
-    <field name="blockId" type="string" >
-      <bind-xml name="block" node="element" />
-    </field>
-  </class>
+    <field name="defaultValue">
+      <bind-xml name="b:default"/>
+    </field>    
+    <field name="description">
+      <bind-xml name="b:description"/>
+    </field>      
+  </class>	
 </mapping>

Modified: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10.java (original)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/Cob10.java Sun Apr 24 05:07:22 2005
@@ -30,9 +30,10 @@
     
     public final static String NAMESPACE = "http://apache.org/cocoon/blocks/cob/1.0";
 
-    private Locator locator;
-    private BlockDescriptor blockDescriptor;
-    private String blockId;
+    protected Locator locator;
+    protected BlockDescriptor blockDescriptor;
+    protected String blockId;
+    protected BlockDeploymentData blockDeploymentData;
     
     public Locator getLocator() {
         return this.locator;
@@ -75,7 +76,11 @@
     }
 
     public BlockDeploymentData getBlockDeploymentData() {
-        return null;
+        return this.blockDeploymentData;
+    }
+
+    public void setBlockDeploymentData(BlockDeploymentData data) {
+        this.blockDeploymentData = data;
     }
     
 }

Modified: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/descriptor/Cob10Descriptor.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/descriptor/Cob10Descriptor.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/descriptor/Cob10Descriptor.java (original)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/descriptor/Cob10Descriptor.java Sun Apr 24 05:07:22 2005
@@ -42,7 +42,7 @@
     private String sitemap;
     private List dependencies;
     private Collection properties = new ArrayList();
-    private Map propertiesMap = new HashMap();
+    private Map propertiesMap = null;
     private Collection requirements = new ArrayList();
 
     // **************** base meta information ********************    
@@ -132,19 +132,23 @@
     // **************** properties   ********************
     
     public Iterator getPropertyNames() {
-        Iterator propertiesIt = this.properties.iterator();
-        while( propertiesIt.hasNext() ) {
-            BlockProperty bp = (BlockProperty) propertiesIt.next();
-            this.propertiesMap.put(bp.getName(), bp);
-        }
+        if(this.propertiesMap == null) setupPropertyNames();
         return this.propertiesMap.keySet().iterator();
     }
-
+    
 
     public BlockProperty getProperty(String name) {
+        if(this.propertiesMap == null) setupPropertyNames();        
         return (BlockProperty) this.propertiesMap.get(name);
     }
 
+    protected void setupPropertyNames() { 
+        this.propertiesMap = new HashMap();
+        for(Iterator it = this.properties.iterator(); it.hasNext();) {
+            BlockProperty bp = (BlockProperty) it.next();
+            this.propertiesMap.put(bp.getName(), bp);
+        }
+    }
     
     public Collection getProperties() {
         return this.properties;

Modified: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServer22Locator.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServer22Locator.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServer22Locator.java (original)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServer22Locator.java Sun Apr 24 05:07:22 2005
@@ -20,15 +20,21 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
+import java.util.Iterator;
 import java.util.zip.ZipInputStream;
 
 import org.apache.cocoon.blockdeployer.block.Block;
+import org.apache.cocoon.blockdeployer.block.descriptor.BlockDescriptor;
+import org.apache.cocoon.blockdeployer.block.descriptor.BlockProperty;
+import org.apache.cocoon.blockdeployer.block.descriptor.deployment.DeploymentProperty;
 import org.apache.cocoon.blockdeployer.locking.Lock;
 import org.apache.cocoon.blockdeployer.locking.LockingException;
 import org.apache.cocoon.blockdeployer.logging.LoggerFacade;
 import org.apache.cocoon.blockdeployer.utils.CommonsTransactionLogger;
 import org.apache.cocoon.blockdeployer.utils.LocatorUtils;
 import org.apache.cocoon.blockdeployer.wiring.wiring10.Mount;
+import org.apache.cocoon.blockdeployer.wiring.wiring10.Properties;
+import org.apache.cocoon.blockdeployer.wiring.wiring10.Property;
 import org.apache.cocoon.blockdeployer.wiring.wiring10.Wiring;
 import org.apache.commons.transaction.file.FileResourceManager;
 import org.apache.commons.transaction.file.ResourceManagerException;
@@ -72,8 +78,8 @@
         try {
             this.wiring10 = readWiring(new File(this.deploymentDir, WIRING_XML), this.logger);
         } catch (Exception ex) {
-            String msg = "The application server's wiring.xml can't be read.";
-            logger.error(ApplicationServer22Locator.class, msg);
+            String msg = "The application server's wiring.xml can't be read. (probably a Castor mapping error --> see the logs)";
+            logger.error(ApplicationServer22Locator.class, msg, ex);
             throw new NullPointerException(msg);
         }        
 
@@ -106,7 +112,7 @@
                 this.logger.debug(this.getClass(), "Block [" + block.getBlockId() + "] to be deployed in " + nextDir);
                 LocatorUtils.writeZip(new ZipInputStream(block.getStream()), this.frm, this.txId, nextDir);
             }
-            this.updateWiring(block);            
+            updateWiring(block, wiring10);            
         } catch(Exception ex) {
             throw new DeploymentException("Block " + block.getBlockId() + " couldn't be deployed.", ex);
         }
@@ -219,7 +225,7 @@
     
     // ------- wiring and block helper methods ---------------------------------------
     
-    private static Wiring readWiring(File wiringDescriptor, LoggerFacade logger) throws Exception {
+    protected static Wiring readWiring(File wiringDescriptor, LoggerFacade logger) throws Exception {
         // read the wiring information (currently we have to support only 
         // http://apache.org/cocoon/blocks/wiring/1.0)
         Wiring wiring10 = null;
@@ -250,19 +256,39 @@
         
     }
     
-    protected void updateWiring(Block block) {
+    protected static void updateWiring(Block block, Wiring wiring10) {
         org.apache.cocoon.blockdeployer.wiring.wiring10.Block wiredBlock = 
             new org.apache.cocoon.blockdeployer.wiring.wiring10.Block();
         
+        BlockDescriptor descriptor = block.getBlockDescriptor();
+        
         // id
         wiredBlock.setId(block.getBlockId());
+        
         // mount path
         Mount mount = new Mount();
         mount.setPath(block.getBlockDeploymentData().getMountPath());
         wiredBlock.setMount(mount);
+        
+        //properties
+        Properties wiredProperties = new Properties();
+        for(Iterator it = descriptor.getPropertyNames(); it.hasNext();) {
+            BlockProperty descriptorProperty = descriptor.getProperty((String) it.next());
+            DeploymentProperty deploymentProperty = block.getBlockDeploymentData().getProperty(descriptorProperty.getName());
+            Property wiredProperty = new Property();
+            wiredProperty.setName(descriptorProperty.getName());
+            if(deploymentProperty != null) {
+                wiredProperty.setValue(deploymentProperty.getValue());
+            } else {
+                wiredProperty.setValue(descriptorProperty.getDefaultValue());
+            }
+            wiredProperties.addProperty(wiredProperty);
+        }
+        wiredBlock.setProperties(wiredProperties);
 
         // add block to wiring        
-        this.wiring10.addBlock(wiredBlock);
+        wiring10.addBlock(wiredBlock);
+        
     }
     
     protected boolean blockExists(Wiring wiring10, String blockId) {

Modified: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java (original)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java Sun Apr 24 05:07:22 2005
@@ -91,7 +91,7 @@
         if(descriptorInputStream == null) {
             throw new BlockNotFoundException("Block " + blockUri + " not found.");
         }
-        return BlockFactory.getRemoteBlock(descriptorInputStream, this);
+        return BlockFactory.createBlock(descriptorInputStream, this);
     }  
     
     public Block[] browse() throws IOException {

Modified: cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java (original)
+++ cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java Sun Apr 24 05:07:22 2005
@@ -43,8 +43,13 @@
     public static final String UNAVAILABLE_INVALID_BLOCKPATH = "/mycompany.com/invalid/1.0.0";
     public static final String UNAVAILABLE_INVALID_BLOCKFILE = "invalid.cob";
     
-    // sample wiring
-    public static final String WIRING_FILE = "test/sample-repositories/application-server/WEB-INF/blocks/wiring.xml";
+    // sample wiring files
+    public static final String WIRING_001 = "test/sample-descriptors/wiring_001.xml";
+    public static final String WIRING_002 = "test/sample-descriptors/wiring_002.xml";    
+    
+    // sample block descriptors
+    public static final String BLOCK_001 = "test/sample-descriptors/block_001.xml";
+
 
 
 }

Modified: cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/ApplicationServer22LocatorTest.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/ApplicationServer22LocatorTest.java?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/ApplicationServer22LocatorTest.java (original)
+++ cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/ApplicationServer22LocatorTest.java Sun Apr 24 05:07:22 2005
@@ -17,7 +17,9 @@
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileReader;
 import java.io.InputStream;
+import java.util.ArrayList;
 
 import jodd.file.FileUtil;
 
@@ -25,24 +27,29 @@
 import org.apache.cocoon.blockdeployer.LogEnabledTestCase;
 import org.apache.cocoon.blockdeployer.block.Block;
 import org.apache.cocoon.blockdeployer.block.BlockDeploymentData;
+import org.apache.cocoon.blockdeployer.block.BlockFactory;
 import org.apache.cocoon.blockdeployer.block.descriptor.BlockDescriptor;
+import org.apache.cocoon.blockdeployer.block.descriptor.deployment.DeploymentProperty;
+import org.apache.cocoon.blockdeployer.wiring.wiring10.Property;
 import org.apache.cocoon.blockdeployer.wiring.wiring10.Wiring;
 import org.easymock.MockControl;
 
 /**
  * @since 0.1
+ * 
+ * TODO continue with setting of "connections | connection" (needs revisiting Cob10.java as it doesn't reflect the
+ *      latest changes (block.xml only contains "contracts" and default implementations. Concrete implementation
+ *      set during deployment in deploy.xml --> object BlockDeploymentData!!!)
+ * 
  */
 public class ApplicationServer22LocatorTest extends LogEnabledTestCase {
 
     private final static String ASL = Constants.TMP_VALID_ASL_1;
     
-    private void setupExamples() {
-        FileUtil.deleteDir(ASL);
-        if((new File(ASL).exists())) fail("Error: Directory mustn't exist (test isolation not guaranteed!");
-        FileUtil.mkdirs(ASL);
-        FileUtil.copyDir(Constants.VALID_ASL_1, ASL);
-    }
-    
+    /**
+     * test transaction management - ApplicationServer22Locator should only work with started transaction
+     * @throws Exception
+     */
     public void testTransactionManagement() throws Exception {
         setupExamples();
         ApplicationServer22Locator asl = new ApplicationServer22Locator(new File(ASL), this.logger);
@@ -79,71 +86,183 @@
         assertNotNull(asl.wiring10);        
     }
     
-    public void testDeploySingleBlock() throws Exception {
+    /**
+     * Test the extraction of the block into the target directory. 
+     * @throws Exception
+     */
+    public void testBlockExtraction() throws Exception {
         setupExamples();
-        // create locator, use transaction mgmt, deploy block
         ApplicationServer22Locator asl = new ApplicationServer22Locator(new File(ASL), this.logger);
         asl.startTransaction();
         
-        // create block metadata
-        MockControl bddCtrl = MockControl.createControl(BlockDeploymentData.class);
-        BlockDeploymentData bdd = (BlockDeploymentData) bddCtrl.getMock();
+        String blockId = "http://bla";
+        Block b = createBinaryBlockMockWithoutDeploymentData(blockId);
         
-        String mountPath = "/mountPath";
+        MockControl bddCtrl = MockControl.createControl(BlockDeploymentData.class);
+        BlockDeploymentData bdd = (BlockDeploymentData) bddCtrl.getMock();        
+        // mountPath
         bdd.getMountPath();
-        bddCtrl.setReturnValue(mountPath);
+        bddCtrl.setReturnValue(null);
+        // properties
+        bdd.getPropertyNames();
+        bddCtrl.setReturnValue((new ArrayList()).iterator());
         
-        bddCtrl.replay();
+        bddCtrl.replay();        
+        b.setBlockDeploymentData(bdd);        
         
-        String blockId = "http://bla";
-        Block b = createBlockMock(blockId, bdd);
         asl.deploy(b);
         asl.commitTransaction();
-        // test that the block is extracted correctly by checking whether the 
-        // COB_INF and the block.xml are available
+        // test that the block is extracted correctly
         File descriptor = new File(ASL + "/WEB-INF/blocks/000001/block.xml");
+        File unavailableDescriptor = new File(ASL + "/WEB-INF/blocks/000002");        
         assertTrue(descriptor.exists());
-        
-        Wiring wiring = asl.wiring10;
-        
-        org.apache.cocoon.blockdeployer.wiring.wiring10.Block wiredBlock = null;
-        for(int i = 0; i < wiring.getBlockCount(); i++) {
-            org.apache.cocoon.blockdeployer.wiring.wiring10.Block locBlock = wiring.getBlock(i);
-            if(blockId.equals(locBlock.getId())) {
-                wiredBlock = locBlock;
-                break;
-            }
+        assertFalse(unavailableDescriptor.exists());
+    }
+    
+    /**
+     * Test whether NullPointException is thrown correctly if DeploymentData are missing
+     * @throws Exception
+     */
+    public void testDeploymentDataMapping1() throws Exception {
+        Block block = createBlockWithDeploymentDataOnly(new File(Constants.BLOCK_001));
+        Wiring wiring = createWiring(new File(Constants.WIRING_001));
+        try {
+            ApplicationServer22Locator.updateWiring(block, wiring);
+            fail("There are no deployment metadata set. This should lead to a NullPointerException!");
+        } catch(NullPointerException npe) {
+            // correct behaviour
         }
-        assertNotNull("The installed block must be added to the wiring.", wiredBlock);
-        assertEquals(mountPath, wiredBlock.getMount().getPath());
-        
     }
     
-    /*
-    public void testAddBlockToWiring() throws Exception {
-        ApplicationServer22Locator asl = new ApplicationServer22Locator(
-                new File(ASL), this.logger);
-        String blockId = "http://bla";
-        Block block = createBlockMock(blockId, null);
-        Wiring wiring = new Wiring();
-        asl.addBlockToWiring(wiring, block);
+    /**
+     * Test working scenario: use properties
+     */
+    public void testDeploymentDataMapping2() throws Exception {
+        Block block = createBlockWithDeploymentDataOnly(new File(Constants.BLOCK_001));
+        Wiring wiring = createWiring(new File(Constants.WIRING_002));            
+
+        MockControl bddCtrl = MockControl.createControl(BlockDeploymentData.class);
+        BlockDeploymentData bdd = (BlockDeploymentData) bddCtrl.getMock();
         
-        // check that only one block is set
-        int blockCount = wiring.getBlockCount();
-        // assertEquals(blockCount, 1);
+        // mountPath
+        String mountPath = "/mountPath";
+        bdd.getMountPath();
+        bddCtrl.setReturnValue(mountPath);
+        // properties
+        bdd.getProperty("prop1");
+        bddCtrl.setReturnValue(null);
+        bdd.getProperty("prop2");
+        bddCtrl.setReturnValue(null);       
         
-        // check that the right number of connections is set
-        Connections connections = wiring.getBlock(0).getConnections();
-        int connectionsCount = connections.getConnectionCount();
-        // assertEquals(connectionsCount, 1);
+        bddCtrl.replay();        
+        block.setBlockDeploymentData(bdd);
+
+        ApplicationServer22Locator.updateWiring(block, wiring);
+
+        // test object construction
+        org.apache.cocoon.blockdeployer.wiring.wiring10.Block wiredBlock = 
+            wiring.getBlock(0);
+        assertNotNull(wiredBlock);
+        // test mountPath
+        assertEquals(mountPath, wiredBlock.getMount().getPath()); 
+        // test properties
+        Property wiredProperty1 = wiredBlock.getProperties().getProperty(0);
+        assertEquals(wiredProperty1.getName(), "prop1");
+        assertEquals(wiredProperty1.getValue(), "1");
+        Property wiredProperty2 = wiredBlock.getProperties().getProperty(1);
+        assertEquals(wiredProperty2.getName(), "prop2");    
+        assertEquals(wiredProperty2.getValue(), null);        
+    }    
+    
+    /**
+     * Test if the DeploymentData overrides the default values!
+     */
+    public void testDeploymentDataMapping3() throws Exception {
+        Block block = createBlockWithDeploymentDataOnly(new File(Constants.BLOCK_001));
+        Wiring wiring = createWiring(new File(Constants.WIRING_002));            
+
+        MockControl bddCtrl = MockControl.createControl(BlockDeploymentData.class);
+        BlockDeploymentData bdd = (BlockDeploymentData) bddCtrl.getMock();
+
+        // mountPath
+        String mountPath = "/mountPath";
+        bdd.getMountPath();
+        bddCtrl.setReturnValue(mountPath);        
+        // properties
+            // prop1
+            MockControl prop1Ctrl = MockControl.createControl(DeploymentProperty.class);
+            DeploymentProperty prop1 = (DeploymentProperty) prop1Ctrl.getMock();
+            prop1.getName();
+            prop1Ctrl.setReturnValue("prop1");
+            String prop1Value = "prop1_value";
+            prop1.getValue();            
+            prop1Ctrl.setReturnValue(prop1Value);
+            prop1Ctrl.replay();
+            bdd.getProperty("prop1");
+            bddCtrl.setReturnValue(prop1);        
+            // prop2
+            MockControl prop2Ctrl = MockControl.createControl(DeploymentProperty.class);
+            DeploymentProperty prop2 = (DeploymentProperty) prop2Ctrl.getMock();
+            prop2.getName();
+            prop2Ctrl.setReturnValue("prop2");
+            String prop2Value = "prop2_value";
+            prop2.getValue();
+            prop2Ctrl.setReturnValue(prop2Value);
+            prop2Ctrl.replay();
+            bdd.getProperty("prop2");            
+            bddCtrl.setReturnValue(prop2);      
         
-        // check that the right connection is set
-        Connection connection = connections.getConnection(0);
-        // assertEquals(connection.getBlock(), blockId);
+        bddCtrl.replay();        
+        block.setBlockDeploymentData(bdd);
+
+        ApplicationServer22Locator.updateWiring(block, wiring);
+
+        // test object construction
+        org.apache.cocoon.blockdeployer.wiring.wiring10.Block wiredBlock = 
+            wiring.getBlock(0);
+
+        // test properties
+        Property wiredProperty1 = wiredBlock.getProperties().getProperty(0);
+        assertEquals(wiredProperty1.getName(), "prop1");
+        assertEquals(prop1Value, wiredProperty1.getValue());
+        Property wiredProperty2 = wiredBlock.getProperties().getProperty(1);
+        assertEquals(wiredProperty2.getName(), "prop2");    
+        assertEquals(prop2Value, wiredProperty2.getValue());     
+    }    
+    
+    // **************************************** helper methods ***************************************** 
+    
+    /**
+     * Helper method to create a wiring out of an XML file
+     */
+    public static Wiring createWiring(File wiringFile) throws Exception {
+        return (Wiring) Wiring.unmarshal(new FileReader(wiringFile));
     }
-    */
+    
+    /**
+     * Helper method to create a block out of an XML file
+     */
+    public static Block createBlockWithDeploymentDataOnly(File descriptor) throws Exception {
+        MockControl locatorCtrl = MockControl.createNiceControl(Locator.class);
+        Locator locator = (Locator) locatorCtrl.getMock();
+        locatorCtrl.replay();
+        return BlockFactory.createBlock(new FileInputStream(descriptor), locator);        
+    }
+    
+    /**
+     * Helper method to setup examples, also checks whether isolation is guaranteed
+     */
+    private void setupExamples() {
+        FileUtil.deleteDir(ASL);
+        if((new File(ASL).exists())) fail("Error: Directory mustn't exist (test isolation not guaranteed!");
+        FileUtil.mkdirs(ASL);
+        FileUtil.copyDir(Constants.VALID_ASL_1, ASL);
+    }    
 
-    private Block createBlockMock(String id, BlockDeploymentData deployData) throws Exception {
+    /**
+     * create a block that also returns a binary
+     */
+    private Block createBinaryBlockMockWithoutDeploymentData(String id) throws Exception {
         // create the Block
         MockControl blockControl = MockControl.createNiceControl(Block.class);
         Block block = (Block) blockControl.getMock();
@@ -158,7 +277,10 @@
 
         // create the deployment meta information
         block.getBlockDeploymentData();
-        blockControl.setReturnValue(deployData);
+        MockControl bddCtrl = MockControl.createNiceControl(BlockDeploymentData.class);
+        BlockDeploymentData bdd = (BlockDeploymentData) bddCtrl.getMock();    
+        bddCtrl.replay();
+        blockControl.setReturnValue(bdd);
         
         // create the Inputstream containing block as binary
         block.getStream();
@@ -172,7 +294,9 @@
         return block;
     }
     
-    
+    /**
+     * create the BlockDescriptorMock, only sets the block ID 
+     */
     private BlockDescriptor createBlockDescriptorMock(String id) {
         MockControl descriptorControl = MockControl.createControl(BlockDescriptor.class);
         BlockDescriptor descriptor = (BlockDescriptor) descriptorControl.getMock();
@@ -180,8 +304,105 @@
         descriptor.getBlockId();
         descriptorControl.setReturnValue(id);
         
+        descriptor.getPropertyNames();
+        descriptorControl.setReturnValue((new ArrayList()).iterator());
+        
         descriptorControl.replay();
         return descriptor;
     }
+    
+    /*
+    public void testDeploySingleBlock() throws Exception {
+        setupExamples();
+        // create locator, use transaction mgmt, deploy block
+        // -------------------------------------------------------------------------
+        ApplicationServer22Locator asl = new ApplicationServer22Locator(new File(ASL), this.logger);
+        asl.startTransaction();
+        
+        // create block metadata
+        // -------------------------------------------------------------------------
+        MockControl bddCtrl = MockControl.createControl(BlockDeploymentData.class);
+        BlockDeploymentData blockDeploymentData = (BlockDeploymentData) bddCtrl.getMock();
+        // mountPath
+        String mountPath = "/mountPath";
+        blockDeploymentData.getMountPath();
+        bddCtrl.setReturnValue(mountPath);
+        // properties
+        List properties = new ArrayList();
+            // property1
+            MockControl blockProperty1Ctrl = MockControl.createControl(BlockProperty.class);
+            BlockProperty blockProperty1 = (BlockProperty) blockProperty1Ctrl.getMock();
+            String property1_name = "prop1";
+            String property1_value = "value1";
+            blockProperty1.getName();
+            properties.add(property1_name);   
+            blockDeploymentData.getProperty(property1_name);
+            bddCtrl.setReturnValue(blockProperty1);
+            blockProperty1Ctrl.setReturnValue(property1_name);            
+
+ 
+
+        blockDeploymentData.getPropertyNames();
+        bddCtrl.setReturnValue(properties.iterator());
+   
+        
+        bddCtrl.replay();
+        
+        String blockId = "http://bla";
+        Block b = createBlockMock(blockId, blockDeploymentData);
+        
+        // test
+        // -------------------------------------------------------------------------
+        asl.deploy(b);
+        asl.commitTransaction();
+        // test that the block is extracted correctly by checking whether the 
+        // COB_INF and the block.xml are available
+        File descriptor = new File(ASL + "/WEB-INF/blocks/000001/block.xml");
+        assertTrue(descriptor.exists());
+        
+        Wiring wiring = asl.wiring10;
+        
+        org.apache.cocoon.blockdeployer.wiring.wiring10.Block wiredBlock = null;
+        for(int i = 0; i < wiring.getBlockCount(); i++) {
+            org.apache.cocoon.blockdeployer.wiring.wiring10.Block locBlock = wiring.getBlock(i);
+            if(blockId.equals(locBlock.getId())) {
+                wiredBlock = locBlock;
+                break;
+            }
+        }
+        assertNotNull("The installed block must be added to the wiring.", wiredBlock);
+        assertEquals(mountPath, wiredBlock.getMount().getPath());
+        
+        Properties wiredProperties = wiredBlock.getProperties();
+        // for(int i = 0; i < wiredProperties.getPropertyCount(); i++) {
+
+        // }
+        // assertTrue(properties.isEmpty());
+    }    
+    */
+    
+    /*
+    public void testAddBlockToWiring() throws Exception {
+        ApplicationServer22Locator asl = new ApplicationServer22Locator(
+                new File(ASL), this.logger);
+        String blockId = "http://bla";
+        Block block = createBlockMock(blockId, null);
+        Wiring wiring = new Wiring();
+        asl.addBlockToWiring(wiring, block);
+        
+        // check that only one block is set
+        int blockCount = wiring.getBlockCount();
+        // assertEquals(blockCount, 1);
+        
+        // check that the right number of connections is set
+        Connections connections = wiring.getBlock(0).getConnections();
+        int connectionsCount = connections.getConnectionCount();
+        // assertEquals(connectionsCount, 1);
+        
+        // check that the right connection is set
+        Connection connection = connections.getConnection(0);
+        // assertEquals(connection.getBlock(), blockId);
+    }
+    */    
     
 }

Added: cocoon/whiteboard/block-deployer/test/sample-descriptors/block_001.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/test/sample-descriptors/block_001.xml?rev=164469&view=auto
==============================================================================
--- cocoon/whiteboard/block-deployer/test/sample-descriptors/block_001.xml (added)
+++ cocoon/whiteboard/block-deployer/test/sample-descriptors/block_001.xml Sun Apr 24 05:07:22 2005
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed 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. 
+-->
+<block xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://apache.org/cocoon/blocks/cob/1.0 ../../src/schema/cob-schema-1.0.xsd"
+	xmlns="http://apache.org/cocoon/blocks/cob/1.0" id="http://mycompany.com/webmail/1.3.43">
+	
+	<name>block.xml for test cases [001]</name>
+	<description href="http://testcase">testcase</description>
+	<license href="http://www.mycompany.com/license/1.3">BSD-style License</license>
+	<author href="http://www.mycompany.com/">MyCompany Inc.</author>
+	<sitemap src="webmail.xmap"/>
+	<state href="" community="committed" interfaces="stable" implementation="stable"/>
+	
+	<properties>
+		<property name="prop1">
+			<default>1</default>
+			<description>test property with default value</description>
+		</property>
+		<property name="prop2">
+			<description>test property without default value</description>
+		</property>		
+	</properties>
+	
+</block>

Added: cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_001.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_001.xml?rev=164469&view=auto
==============================================================================
--- cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_001.xml (added)
+++ cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_001.xml Sun Apr 24 05:07:22 2005
@@ -0,0 +1,38 @@
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed 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. 
+-->
+<wiring xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://apache.org/cocoon/blocks/wiring/1.0 ../../src/schema/wiring-schema-1.0.xsd"
+	xmlns="http://apache.org/cocoon/blocks/wiring/1.0">
+	<block id="http://mycompany.com/webmail/1.3.43" location="000001">
+		<mount path="/mail/"/>
+		<connections>
+			<connection name="external-skin" block="http://yetanothercompany.com/skins/fancy/1.2.2"/>
+			<connection name="internal-skin" block="http://mycompany.com/skins/corporate/34.3.345"/>
+			<connection name="repository" block="http://mycompany.com/repositories/email/exchange/3.2.1"/>
+		</connections>
+		<properties>
+			<property name="user" value="guest"/>
+			<property name="password" value="sj3u493"/>
+		</properties>
+	</block>
+	<block id="http://mycompany.com/repositories/email/exchange/3.2.1" location="000002">
+		<properties>
+			<property name="host" value="mail.blah.org"/>
+		</properties>
+	</block>
+	<block id="http://yetanothercompany.com/skins/fancy/1.2.2" location="000003"/>
+	<block id="http://mycompany.com/skins/corporate/34.3.345" location="000004"/>
+</wiring>

Added: cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_002.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_002.xml?rev=164469&view=auto
==============================================================================
--- cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_002.xml (added)
+++ cocoon/whiteboard/block-deployer/test/sample-descriptors/wiring_002.xml Sun Apr 24 05:07:22 2005
@@ -0,0 +1,20 @@
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed 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. 
+-->
+<wiring xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://apache.org/cocoon/blocks/wiring/1.0 ../../src/schema/wiring-schema-1.0.xsd"
+ xmlns="http://apache.org/cocoon/blocks/wiring/1.0">
+
+</wiring>
\ No newline at end of file

Modified: cocoon/whiteboard/block-deployer/test/sample-repositories/application-server/WEB-INF/blocks/wiring.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/block-deployer/test/sample-repositories/application-server/WEB-INF/blocks/wiring.xml?rev=164469&r1=164468&r2=164469&view=diff
==============================================================================
--- cocoon/whiteboard/block-deployer/test/sample-repositories/application-server/WEB-INF/blocks/wiring.xml (original)
+++ cocoon/whiteboard/block-deployer/test/sample-repositories/application-server/WEB-INF/blocks/wiring.xml Sun Apr 24 05:07:22 2005
@@ -18,34 +18,4 @@
 	xsi:schemaLocation="http://apache.org/cocoon/blocks/wiring/1.0 wiring-schema-1.0.xsd"
 >
 
-  <block id="http://mycompany.com/webmail/1.3.43" 
-         location="WEB-INF/blocks/384938958499">
-    <mount path="/mail/"/>
-    <connections>
-      <connection name="external-skin" 
-      	block="http://yetanothercompany.com/skins/fancy/1.2.2"/>
-      <connection name="internal-skin"
-      	block="http://mycompany.com/skins/corporate/34.3.345"/>
-      <connection name="repository"
-      	block="http://mycompany.com/repositories/email/exchange/3.2.1"/>
-    </connections>
-    <properties>
-      <property name="user" value="guest"/>
-      <property name="password" value="sj3u493"/>
-    </properties>
-  </block>
-
-  <block id="http://mycompany.com/repositories/email/exchange/3.2.1" 
-         location="WEB-INF/blocks/394781274834">
-    <properties>
-      <property name="host" value="mail.blah.org"/>
-    </properties>
-  </block>
-
-  <block id="http://yetanothercompany.com/skins/fancy/1.2.2" 
-         location="WEB-INF/blocks/947384127832"/>
-
-  <block id="http://mycompany.com/skins/corporate/34.3.345" 
-         location="WEB-INF/blocks/746394782637"/>
-
 </wiring>