[dna-issues] [JBoss JIRA] Resolved: (DNA-462) filesystem source doesn't appear on federate source projection
Randall Hauch (JIRA)
jira-events at lists.jboss.org
Wed Jun 17 16:25:56 EDT 2009
[ https://jira.jboss.org/jira/browse/DNA-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Randall Hauch resolved DNA-462.
-------------------------------
Fix Version/s: 0.6
Resolution: Done
Assignee: Randall Hauch
Marking as resolved since the correction (including DNA-463) worked for Luiz.
> filesystem source doesn't appear on federate source projection
> --------------------------------------------------------------
>
> Key: DNA-462
> URL: https://jira.jboss.org/jira/browse/DNA-462
> Project: DNA
> Issue Type: Bug
> Components: Connectors
> Affects Versions: 0.5
> Environment: Mac OS 10.5.7 with JVM 1.6 and Maven 2.1
> Reporter: Luiz Fernando Teston
> Assignee: Randall Hauch
> Fix For: 0.6
>
>
> When I create a filesystem source I can access its contents using the graph api. But the same content doesn't appear on a federated source with the filesystem source on a projection path. I used the same logic on the docs/examples/repository project configuration, just adding the /tmp to a filesystem source. I've tested the same scenario using the JAAS configuration. The test case and configuration file is here:
> -- configuration file: configRepositoryWithFileSystemConnector.xml --
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
> ~ JBoss DNA (http://www.jboss.org/dna)
> ~
> ~ See the COPYRIGHT.txt file distributed with this work for information
> ~ regarding copyright ownership. Some portions may be licensed
> ~ to Red Hat, Inc. under one or more contributor license agreements.
> ~ See the AUTHORS.txt file in the distribution for a full listing of
> ~ individual contributors.
> ~
> ~ JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA
> ~ is licensed to you under the terms of the GNU Lesser General Public License as
> ~ published by the Free Software Foundation; either version 2.1 of
> ~ the License, or (at your option) any later version.
> ~
> ~ JBoss DNA is distributed in the hope that it will be useful,
> ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
> ~ for more details.
> ~
> ~ You should have received a copy of the GNU Lesser General Public License
> ~ along with this distribution; if not, write to:
> ~ Free Software Foundation, Inc.
> ~ 51 Franklin Street, Fifth Floor
> ~ Boston, MA 02110-1301 USA
> -->
> <configuration xmlns:dna="http://www.jboss.org/dna/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0">
> <!--
> Define the sources for the content. These sources are directly accessible using the DNA-specific Graph API.
> In fact, this is how the DNA JCR implementation works. You can think of these as being similar to
> JDBC DataSource objects, except that they expose graph content via the Graph API instead of records via SQL or JDBC.
> -->
> <dna:sources jcr:primaryType="nt:unstructured">
>
> <dna:source jcr:name="FileSystem" dna:classname="org.jboss.dna.connector.filesystem.FileSystemSource">
> <defaultWorkspaceName>workspace2</defaultWorkspaceName>
> <directoryForDefaultWorkspace>/tmp/</directoryForDefaultWorkspace>
> </dna:source>
>
> <!--
> The 'Cars' repository is an in-memory source with a single default workspace (though others could be created, too).
> -->
> <dna:source jcr:name="Cars" dna:classname="org.jboss.dna.graph.connector.inmemory.InMemoryRepositorySource" dna:retryLimit="3" dna:defaultWorkspaceName="workspace1"/>
> <!--
> The 'Aircraft' repository is also an in-memory source with a single default workspace.
> By defining a default workspace, the clients using the Graph API will by default use that workspace,
> but can easily say to use other workspaces (or create, clone, or destroy workspaces).
> -->
> <dna:source jcr:name="Aircraft" dna:classname="org.jboss.dna.graph.connector.inmemory.InMemoryRepositorySource">
> <!-- Define the name of the workspace used by default. Optional, but convenient. -->
> <defaultWorkspaceName>workspace2</defaultWorkspaceName>
> </dna:source>
> <!--
> The 'Vehicles' repository is a federated source that owns none of its own content, but instead
> projects (in this case) all of the content from the 'Cars' source as if it appears
> under '/Vehicles/Cars', while all the 'Aircraft' content appears under '/Vehicles/Aircraft'.
> -->
> <dna:source jcr:name="Vehicles">
> <dna:classname>org.jboss.dna.graph.connector.federation.FederatedRepositorySource</dna:classname>
> <dna:workspaces>
> <!--
> Unlike some other repository sources, federated sources have to define all of their workspaces,
> including how and where the content is projected. So, we only need a single workspace,
> but we could actually define additional workspaces that expose various combinations or portions
> of 'Cars' and/or 'Aircraft' content.
> -->
> <dna:workspace jcr:name="virtual">
> <dna:projections>
> <dna:projection jcr:name="TempFiles projection" dna:source="FileSystem" dna:workspaceName="workspace2">
> <dna:projectionRules>/Vehicles/FileSystem => /</dna:projectionRules>
> </dna:projection>
>
>
> <!-- Project the 'Cars' content, starting with the '/Cars' node. -->
> <dna:projection jcr:name="Cars projection" dna:source="Cars" dna:workspaceName="workspace1">
> <dna:projectionRules>/Vehicles/Cars => /Cars</dna:projectionRules>
> </dna:projection>
> <!-- Project the 'Aicraft' content, starting with the '/Aircraft' node. -->
> <dna:projection jcr:name="Aircarft projection" dna:source="Aircraft" dna:workspaceName="workspace2">
> <dna:projectionRules>/Vehicles/Aircraft => /Aircraft</dna:projectionRules>
> </dna:projection>
> <!-- Project the 'System' content. Only needed when this source is accessed through JCR. -->
> <dna:projection jcr:name="System projection" dna:source="System" dna:workspaceName="default">
> <dna:projectionRules>/jcr:system => /</dna:projectionRules>
> </dna:projection>
> </dna:projections>
> </dna:workspace>
> </dna:workspaces>
> </dna:source>
> <!--
> A 'System' source needed for the '/jcr:system' branch of the Vehicles source when it is access through JCR.
> -->
> <dna:source jcr:name="System" dna:classname="org.jboss.dna.graph.connector.inmemory.InMemoryRepositorySource" dna:retryLimit="3" dna:defaultWorkspaceName="default"/>
> </dna:sources>
> <!--
> Define the sequencers. This is an optional section. For this example, we're not using any sequencers.
> -->
> <dna:sequencers>
> <!--dna:sequencer jcr:name="Image Sequencer" dna:classname="org.jboss.dna.sequencer.image.ImageMetadataSequencer">
> <dna:description>Image metadata sequencer</dna:description>
> <dna:pathExpression>/foo/source => /foo/target</dna:pathExpression>
> <dna:pathExpression>/bar/source => /bar/target</dna:pathExpression>
> </dna:sequencer-->
> </dna:sequencers>
> <!--
> Define the mime type detectors. This is an optional section. By default, each engine will use the
> MIME type detector that uses filename extensions. So we wouldn't need to define the same detector again,
> but this is how you'd define another extension.
> -->
> <dna:mimeTypeDetectors>
> <dna:mimeTypeDetector jcr:name="Detector">
> <dna:description>Standard extension-based MIME type detector</dna:description>
> <!--
> Specify the implementation class (required), as a child element or attribute on parent element.
> -->
> <dna:classname>org.jboss.dna.graph.mimetype.ExtensionBasedMimeTypeDetector</dna:classname>
> <!--
> Specify the classpath (optional) as an ordered list of 'names', where each name is significant to
> the classpath factory. For example, a name could be an OSGI identifier or a Maven coordinate,
> depending upon the classpath factory being used. If there is only one 'name' in the classpath,
> it may be specified as an attribute on the 'mimeTypeDetector' element. If there is more than one
> 'name', then they must be specified as child 'classpath' elements. Blank or empty values are ignored.
> -->
> <dna:classpath></dna:classpath>
> <dna:classpath></dna:classpath>
> </dna:mimeTypeDetector>
> </dna:mimeTypeDetectors>
> <!--
> Define the JCR repositories
> -->
> <dna:repositories>
> <!--
> Define a JCR repository that accesses the 'Cars' source directly.
> This of course is optional, since we could access the same content through 'vehicles'.
> -->
> <dna:repository jcr:name="Cars">
> <!-- Specify the source that should be used for the repository -->
> <dna:source>Cars</dna:source>
> <!-- Define the options for the JCR repository, using camelcase version of JcrRepository.Option names -->
> <dna:options jcr:primaryType="dna:options">
> <jaasLoginConfigName jcr:primaryType="dna:option" dna:value="dna-jcr"/>
> </dna:options>
> <!-- Define any custom node types. Importing CND files via JcrConfiguration is equivalent to specifying here. -->
> <dna:nodeTypes jcr:primaryType="dna:nodeTypes"/>
> <!-- Define any namespaces for this repository, other than those already defined by JCR or DNA -->
> <namespaces jcr:primaryType="dna:namespaces">
> <car jcr:primaryType="dna:namespace" dna:uri="http://jboss.org/dna/examples/cars/1.0"/>
> </namespaces>
> </dna:repository>
> <!--
> Define a JCR repository that accesses the 'Aircraft' source directly.
> This of course isn't really necessary for this example, since we could access the same content through 'vehicles'.
> -->
> <dna:repository jcr:name="Aircraft">
> <!-- Specify the source that should be used for the repository -->
> <dna:source>Aircraft</dna:source>
> <!-- Define the options for the JCR repository, using camelcase version of JcrRepository.Option names -->
> <dna:options jcr:primaryType="dna:options">
> <jaasLoginConfigName jcr:primaryType="dna:option" dna:value="dna-jcr"/>
> </dna:options>
> </dna:repository>
> <!--
> Define a JCR repository that accesses the 'Vehicles' federated source directly,
> which is defined in the sources to be a projection of the 'Cars' and 'Vehicles' content.
> -->
> <!-- Define a JCR repository that accesses the 'Vehicles' federated source directly -->
> <dna:repository jcr:name="Vehicles">
> <!-- Specify the source that should be used for the repository -->
> <dna:source>Vehicles</dna:source>
> <!-- Define the options for the JCR repository, using camelcase version of JcrRepository.Option names -->
> <dna:options jcr:primaryType="dna:options">
> <projectNodeTypes jcr:primaryType="dna:option" dna:value="false"/>
> <jaasLoginConfigName jcr:primaryType="dna:option" dna:value="dna-jcr"/>
> </dna:options>
> <!-- Define any custom node types. Importing CND files via JcrConfiguration is equivalent to specifying here. -->
> <dna:nodeTypes jcr:primaryType="dna:nodeTypes"/>
> <!-- Define any namespaces for this repository, other than those already defined by JCR, DNA or by imported content. -->
> <dna:namespaces jcr:primaryType="dna:namespaces">
> <car jcr:primaryType="dna:namespace" dna:uri="http://jboss.org/dna/examples/cars/1.0"/>
> <air jcr:primaryType="dna:namespace" dna:uri="http://jboss.org/dna/examples/aircraft/1.0"/>
> </dna:namespaces>
> </dna:repository>
> </dna:repositories>
> </configuration>
> -- test case --
> package org.jboss.example.dna.repository;
> import static org.hamcrest.core.Is.is;
> import static org.hamcrest.core.IsNull.notNullValue;
> import static org.junit.Assert.assertThat;
> import java.net.URL;
> import org.jboss.dna.graph.Graph;
> import org.jboss.dna.jcr.JcrConfiguration;
> import org.jboss.dna.jcr.JcrEngine;
> import org.junit.Test;
> public class FileSystemConnectorUnderFederatedSourceTest {
> @Test
> public void shouldHaveProjectionOfFileSystemSourceInsideFederatedSource()
> throws Exception {
> JcrConfiguration configuration = new JcrConfiguration();
> URL configUrl = Thread.currentThread().getContextClassLoader()
> .getResource("configRepositoryWithFileSystemConnector.xml");
> assertThat(configUrl, is(notNullValue()));
> configuration.loadFrom(configUrl);
> JcrEngine engine = configuration.build();
> engine.start();
> Graph vehiclesGraph = engine.getGraph("Vehicles");
> assertThat(vehiclesGraph.getNodeAt("/FileSystem"), is(notNullValue()));
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the dna-issues
mailing list