Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrMetaData.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrMetaData.java (revision 2268) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrMetaData.java (working copy) @@ -32,7 +32,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -2385,16 +2384,16 @@ public class JcrMetaData implements DatabaseMetaData { return iface.cast(this); } - private List filterNodeTypes( String tableNamePattern ) throws RepositoryException { + private List filterNodeTypes( String tableNamePattern ) throws RepositoryException { List nodetypes = null; if (tableNamePattern.trim().equals(WILDCARD)) { - - nodetypes = this.connection.getRepositoryDelegate().nodeTypes(); + + nodetypes = this.connection.getRepositoryDelegate().nodeTypes(); Iterator nodeIt = nodetypes.iterator(); while (nodeIt.hasNext()) { - NodeType type = nodeIt.next(); - if (!hasColumnedDefined(type)) nodeIt.remove(); + NodeType type = nodeIt.next(); + if (!hasColumnedDefined(type)) nodeIt.remove(); } } else if (tableNamePattern.contains(WILDCARD)) { @@ -2419,7 +2418,7 @@ public class JcrMetaData implements DatabaseMetaData { while (nodeIt.hasNext()) { NodeType type = nodeIt.next(); - + if (!hasColumnedDefined(type)) continue; if (isLeading) { @@ -2441,7 +2440,7 @@ public class JcrMetaData implements DatabaseMetaData { } else { NodeType nt = this.connection.getRepositoryDelegate().nodeType(tableNamePattern); nodetypes = new ArrayList(1); - if (nt != null && hasColumnedDefined(nt)) { + if (nt != null && hasColumnedDefined(nt)) { nodetypes.add(nt); } } @@ -2459,19 +2458,18 @@ public class JcrMetaData implements DatabaseMetaData { return nodetypes; } - private List filterPropertyDefnitions( String columnNamePattern, NodeType nodeType) { - - List allDefns = new ArrayList(); - - addPropertyDefinitions(allDefns, nodeType); - addSuperPropertyDefinitions(allDefns, nodeType); - + private List filterPropertyDefnitions( String columnNamePattern, + NodeType nodeType ) { + + List allDefns = new ArrayList(); + addPropertyDefinitions(allDefns, nodeType); + List resultDefns = null; if (columnNamePattern.trim().equals(WILDCARD)) { - resultDefns = allDefns; + resultDefns = allDefns; } else if (columnNamePattern.contains(WILDCARD)) { - resultDefns = new ArrayList(); + resultDefns = new ArrayList(); String partName = null; boolean isLeading = false; boolean isTrailing = false; @@ -2487,8 +2485,8 @@ public class JcrMetaData implements DatabaseMetaData { } Iterator defnIt = allDefns.iterator(); - while (defnIt.hasNext()) { - PropertyDefinition defn = defnIt.next(); + while (defnIt.hasNext()) { + PropertyDefinition defn = defnIt.next(); if (isLeading) { if (isTrailing) { @@ -2507,8 +2505,8 @@ public class JcrMetaData implements DatabaseMetaData { } } else { - resultDefns = new ArrayList(); - + resultDefns = new ArrayList(); + Iterator defnIt = allDefns.iterator(); while (defnIt.hasNext()) { PropertyDefinition defn = defnIt.next(); @@ -2531,57 +2529,30 @@ public class JcrMetaData implements DatabaseMetaData { return resultDefns; } - + /** - * isTableValid determines if the node type should be exposed as a table. - * A table must have at least one column, and the property definitions - * and superTypes provide the columns. As long as one is - * defined, then one table is valid for exposure. + * isTableValid determines if the node type should be exposed as a table. A table must have at least one column, and the + * property definitions and superTypes provide the columns. As long as one is defined, then one table is valid for exposure. * * @param nodeType * @return true if a column is defined for the table */ - private boolean hasColumnedDefined(NodeType nodeType) { - List allDefns = new ArrayList(); - addPropertyDefinitions(allDefns, nodeType); - addSuperPropertyDefinitions(allDefns, nodeType); - - return (allDefns.size() > 0 ? true : false); - - } - - /** - * search recursively thru the supertypes to find other columns that - * are to be exposed for a single table. - * @param allDefns - * @param nodetype - */ - private void addSuperPropertyDefinitions(List allDefns, NodeType nodetype) { - NodeType[] superTypes = nodetype.getSupertypes(); - if (superTypes != null && superTypes.length > 0) { - for (int i = 0; i mapDefns, NodeType nodetype) { - PropertyDefinition[] defns = nodetype.getPropertyDefinitions(); - if (defns != null && defns.length > 0) { - for (int i=0; i allDefns = new ArrayList(); + addPropertyDefinitions(allDefns, nodeType); + return (allDefns.size() > 0 ? true : false); + + } + + private void addPropertyDefinitions( List mapDefns, + NodeType nodetype ) { + for (PropertyDefinition defn : nodetype.getPropertyDefinitions()) { + // Don't include residual (e.g., '*') properties as columns ... + if (defn.getName().equalsIgnoreCase("*")) continue; + // Don't include multi-valued properties as columns ... + if (defn.isMultiple()) continue; + mapDefns.add(defn); + } } } Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrResultSet.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrResultSet.java (revision 2268) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrResultSet.java (working copy) @@ -48,7 +48,6 @@ import java.util.Calendar; import java.util.Collections; import java.util.HashMap; import java.util.Map; - import javax.jcr.ItemNotFoundException; import javax.jcr.PathNotFoundException; import javax.jcr.PropertyType; @@ -58,7 +57,6 @@ import javax.jcr.ValueFormatException; import javax.jcr.query.QueryResult; import javax.jcr.query.Row; import javax.jcr.query.RowIterator; - import org.modeshape.jdbc.util.IoUtil; /** @@ -82,32 +80,32 @@ public class JcrResultSet implements ResultSet { protected JcrResultSet( JcrStatement statement, QueryResult jcrResults, - ResultSetMetaData resultSetMetaData) throws SQLException { + ResultSetMetaData resultSetMetaData ) throws SQLException { this.statement = statement; this.jcrResults = jcrResults; assert this.statement != null; assert this.jcrResults != null; - + if (resultSetMetaData != null) { - this.metadata = resultSetMetaData; + this.metadata = resultSetMetaData; } else { - this.metadata = new JcrResultSetMetaData(this.statement.connection(), this.jcrResults); + this.metadata = new JcrResultSetMetaData(this.statement.connection(), this.jcrResults); + } + int index = 1; // not zero-based + int colCnt = this.metadata.getColumnCount(); + + // add 1 because using 1 based location, not zero based, JDBC spec + columnIDs = new String[colCnt + 1]; + columnIndexesByName = new HashMap(colCnt); + while (index <= colCnt) { + String name = this.metadata.getColumnName(index); + columnIndexesByName.put(name, index); + columnIDs[index] = name; + index++; } - int index = 1; // not zero-based - int colCnt = this.metadata.getColumnCount() ; - - // add 1 because using 1 based location, not zero based, JDBC spec - columnIDs = new String[colCnt + 1]; - columnIndexesByName = new HashMap(colCnt); - while (index <= colCnt) { - String name = this.metadata.getColumnName(index); - columnIndexesByName.put(name, index); - columnIDs[index] = name; - index++; - } - assert !columnIndexesByName.isEmpty(); - this.columnIndexesByName = Collections.unmodifiableMap(columnIndexesByName); + assert !columnIndexesByName.isEmpty(); + this.columnIndexesByName = Collections.unmodifiableMap(columnIndexesByName); try { this.rowIter = this.jcrResults.getRows(); @@ -1208,7 +1206,7 @@ public class JcrResultSet implements ResultSet { int type ) throws SQLException { if (value == null) return null; - try { + try { switch (type) { case PropertyType.STRING: @@ -1245,18 +1243,18 @@ public class JcrResultSet implements ResultSet { private Object getColumnTranslatedToJDBC( String columnName ) throws SQLException { notClosed(); isRowSet(); - - Value value = null; + + Value value = null; this.currentValue = null; try { value = row.getValue(columnName); } catch (javax.jcr.PathNotFoundException pnf) { - // do nothing + // do nothing } catch (RepositoryException e) { - throw new SQLException(e.getLocalizedMessage(), e); + throw new SQLException(e.getLocalizedMessage(), e); } - + if (value == null) return null; this.currentValue = JcrType.translateValueToJDBC(value); @@ -1269,7 +1267,7 @@ public class JcrResultSet implements ResultSet { * @see java.sql.ResultSet#getWarnings() */ @Override - public SQLWarning getWarnings() throws SQLException { + public SQLWarning getWarnings() /*throws SQLException*/{ return null; } @@ -1509,7 +1507,8 @@ public class JcrResultSet implements ResultSet { * @see java.sql.ResultSet#setFetchSize(int) */ @Override - public void setFetchSize( int rows ) throws SQLException { + public void setFetchSize( int rows ) /*throws SQLException*/{ + // does nothing } /** Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrStatement.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrStatement.java (revision 2268) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrStatement.java (working copy) @@ -28,17 +28,15 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.Statement; - import javax.jcr.RepositoryException; import javax.jcr.query.QueryResult; - import org.modeshape.jdbc.delegate.RepositoryDelegate; + /** * */ class JcrStatement implements Statement { - private final JcrConnection connection; private QueryResult jcrResults; private ResultSet results; @@ -48,10 +46,10 @@ class JcrStatement implements Statement { private int fetchDirection = ResultSet.FETCH_FORWARD; private boolean poolable; private int moreResults = 0; - + private String sqlLanguage = JcrConnection.JCR_SQL2; - JcrStatement( JcrConnection connection) { + JcrStatement( JcrConnection connection ) { this.connection = connection; assert this.connection != null; } @@ -59,9 +57,9 @@ class JcrStatement implements Statement { JcrConnection connection() { return this.connection; } - - public void setJcrSqlLanguage(String jcrSQL) { - this.sqlLanguage = (jcrSQL != null ? jcrSQL : JcrConnection.JCR_SQL2); + + public void setJcrSqlLanguage( String jcrSQL ) { + this.sqlLanguage = (jcrSQL != null ? jcrSQL : JcrConnection.JCR_SQL2); } /** @@ -155,7 +153,7 @@ class JcrStatement implements Statement { public int getMaxRows() throws SQLException { notClosed(); // need to map ModeShapes -1 rowLimit to 0 - // because the jdbc spec indicate maxRows must be >= 0 + // because the jdbc spec indicate maxRows must be >= 0 // or an exception should be thrown. return (rowLimit == -1 ? 0 : rowLimit); } @@ -434,12 +432,10 @@ class JcrStatement implements Statement { } return true; // always a ResultSet } - + protected RepositoryDelegate getJcrRepositoryDelegate() { - return this.connection.getRepositoryDelegate(); + return this.connection.getRepositoryDelegate(); } - - /** * {@inheritDoc} @@ -491,9 +487,9 @@ class JcrStatement implements Statement { * @see java.sql.Statement#getGeneratedKeys() */ @Override - public ResultSet getGeneratedKeys() throws SQLException { - // TODO: if and when ModeShape supports providing key information - // then a result set containing the metadata will need to be created. + public ResultSet getGeneratedKeys() /*throws SQLException*/{ + // TODO: if and when ModeShape supports providing key information + // then a result set containing the metadata will need to be created. return new JcrResultSet(); } @@ -591,7 +587,7 @@ class JcrStatement implements Statement { */ @Override public boolean isWrapperFor( Class iface ) /*throws SQLException*/{ - return iface.isInstance(this) ; + return iface.isInstance(this); } /** @@ -601,12 +597,11 @@ class JcrStatement implements Statement { */ @Override public T unwrap( Class iface ) throws SQLException { - if (!isWrapperFor(iface)) { - throw new SQLException(JdbcI18n.classDoesNotImplementInterface.text(Statement.class.getSimpleName(), - iface.getName())); - } - - return iface.cast(this); - } + if (!isWrapperFor(iface)) { + throw new SQLException(JdbcI18n.classDoesNotImplementInterface.text(Statement.class.getSimpleName(), iface.getName())); + } + + return iface.cast(this); + } } Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/delegate/HttpRepositoryDelegate.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/delegate/HttpRepositoryDelegate.java (revision 2268) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/delegate/HttpRepositoryDelegate.java (working copy) @@ -26,23 +26,17 @@ package org.modeshape.jdbc.delegate; import java.sql.DriverPropertyInfo; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; - +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import javax.jcr.RepositoryException; -import javax.jcr.Value; -import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.NodeType; -import javax.jcr.nodetype.NodeTypeIterator; -import javax.jcr.nodetype.PropertyDefinition; import javax.jcr.query.QueryResult; - import org.modeshape.jdbc.JcrDriver; import org.modeshape.jdbc.JdbcI18n; import org.modeshape.jdbc.JcrDriver.JcrContextFactory; @@ -52,159 +46,157 @@ import org.modeshape.web.jcr.rest.client.domain.Workspace; import org.modeshape.web.jcr.rest.client.json.JsonRestClient; /** - * * The HTTPRepositoryDelegate provides remote Repository implementation to access the Jcr layer via HTTP lookup. */ public class HttpRepositoryDelegate extends AbstractRepositoryDelegate { private static final String HTTP_EXAMPLE_URL = JcrDriver.HTTP_URL_PREFIX + "{hostname}:{port}/{context root}"; - - private static final String URL_PATH = "/jcr:system/jcr:nodeTypes"; - private static final String URL_DEPTH = "?depth=5"; - + private JsonRestClient restClient; private Workspace workspace = null; private Map nodeTypes; - - public HttpRepositoryDelegate(String url, Properties info, JcrContextFactory contextFactory) { - super(url, info); + private final Lock nodeTypeLock = new ReentrantLock(); + + public HttpRepositoryDelegate( String url, + Properties info, + JcrContextFactory contextFactory ) { + super(url, info); } - + @Override - protected ConnectionInfo createConnectionInfo(String url, Properties info) { - return new HttpConnectionInfo(url, info); + protected ConnectionInfo createConnectionInfo( String url, + Properties info ) { + return new HttpConnectionInfo(url, info); } @Override - public QueryResult execute(String query, String language) throws RepositoryException { - LOGGER.trace("Executing query: {0}" + query ); - - try { - List results = this.restClient.query(workspace, language, query); - Iterator resultsIt = results.iterator(); - while (resultsIt.hasNext()) { - final QueryRow row = resultsIt.next(); - - } - - } catch (Exception e) { - } - - return null; + public QueryResult execute( String query, + String language ) throws RepositoryException { + LOGGER.trace("Executing query: {0}" + query); + + try { + List results = this.restClient.query(workspace, language, query); + Iterator resultsIt = results.iterator(); + while (resultsIt.hasNext()) { + final QueryRow row = resultsIt.next(); + + } + + } catch (Exception e) { + } + + return null; } - + /** - * {@inheritDoc} - * - * @see org.modeshape.jdbc.delegate.RepositoryDelegate#getDescriptor(java.lang.String) - */ - @Override - public String getDescriptor(String descriptorKey) { - return ""; - } - + * {@inheritDoc} + * + * @see org.modeshape.jdbc.delegate.RepositoryDelegate#getDescriptor(java.lang.String) + */ + @Override + public String getDescriptor( String descriptorKey ) { + return ""; + } + @Override - public synchronized NodeType nodeType( String name ) throws RepositoryException { - if (nodeTypes == null) nodeTypes(); - - NodeType nodetype = nodeTypes.get(name); - if (nodetype == null) { - throw new RepositoryException(JdbcI18n.unableToGetNodeType.text(name)); - } - - return nodetype; + public NodeType nodeType( String name ) throws RepositoryException { + if (nodeTypes == null) nodeTypes(); + + NodeType nodetype = nodeTypes.get(name); + if (nodetype == null) { + throw new RepositoryException(JdbcI18n.unableToGetNodeType.text(name)); + } + + return nodetype; } - + @Override - public synchronized List nodeTypes() throws RepositoryException { - if (nodeTypes == null) { - Collection results; - try { - results = this.restClient.getNodeTypes(workspace, URL_PATH, URL_DEPTH); - if (results == null || results.size() == 0) { - String msg = JdbcI18n.noNodeTypesReturned.text(this.workspace.getServer().getUrl() + "/" + - this.workspace.getRepository().getName() + "/" + - this.workspace.getName() + - URL_PATH + URL_DEPTH); - throw new RepositoryException(msg); - } - Map loadingNodeTypes = new HashMap(results.size()); - Iterator resultsIt = results.iterator(); - while (resultsIt.hasNext()) { - org.modeshape.web.jcr.rest.client.domain.NodeType nodetype = resultsIt.next(); - if (nodetype != null) { - - HttpNodeType localnodetype = new HttpNodeType(nodetype); - - loadingNodeTypes.put(localnodetype.getName(), localnodetype); - } - - } - this.nodeTypes = loadingNodeTypes; - - } catch (Exception e) { - throw new RepositoryException(JdbcI18n.unableToGetNodeTypes.text(this.workspace.getRepository().getName()), e); - } - } - - return new ArrayList(nodeTypes.values()); + public List nodeTypes() throws RepositoryException { + try { + nodeTypeLock.lock(); + if (nodeTypes == null) { + Map nodeTypesByName; + try { + nodeTypesByName = this.restClient.getNodeTypes(workspace); + if (nodeTypesByName == null || nodeTypesByName.isEmpty()) { + String msg = JdbcI18n.noNodeTypesReturned.text(this.workspace.getServer().getUrl() + "/" + + this.workspace.getRepository().getName() + "/" + + this.workspace.getName()); + throw new RepositoryException(msg); + } + this.nodeTypes = nodeTypesByName; + } catch (Exception e) { + throw new RepositoryException(JdbcI18n.unableToGetNodeTypes.text(this.workspace.getRepository().getName()), e); + } + } + return new ArrayList(nodeTypes.values()); + } finally { + nodeTypeLock.unlock(); + } } @Override - protected void createRepository() throws SQLException { - LOGGER.debug("Creating repository for HttpRepositoryDelegte" ); - - ConnectionInfo info = getConnectionInfo(); - assert info != null; - - String path = info.getRepositoryPath(); - if (path == null) { - throw new SQLException("Missing repo path from " +info.getUrl()); - } - if (info.getUsername() == null) { - throw new SQLException("Missing username from " +info.getUrl()); - } - if (info.getPassword() == null) { - throw new SQLException("Missing password path from " +info.getUrl()); - } - if (info.getRepositoryName() == null) { - throw new SQLException("Missing repo name from " +info.getUrl()); - } + protected void createRepository() throws SQLException { + LOGGER.debug("Creating repository for HttpRepositoryDelegte"); + + ConnectionInfo info = getConnectionInfo(); + assert info != null; + + String path = info.getRepositoryPath(); + if (path == null) { + throw new SQLException("Missing repo path from " + info.getUrl()); + } + if (info.getUsername() == null) { + throw new SQLException("Missing username from " + info.getUrl()); + } + if (info.getPassword() == null) { + throw new SQLException("Missing password path from " + info.getUrl()); + } + if (info.getRepositoryName() == null) { + throw new SQLException("Missing repo name from " + info.getUrl()); + } Server server = new Server("http://" + path, info.getUsername(), new String(info.getPassword())); - org.modeshape.web.jcr.rest.client.domain.Repository repo = new org.modeshape.web.jcr.rest.client.domain.Repository(info.getRepositoryName(), server); + org.modeshape.web.jcr.rest.client.domain.Repository repo = new org.modeshape.web.jcr.rest.client.domain.Repository( + info.getRepositoryName(), + server); workspace = new Workspace(info.getWorkspaceName(), repo); - restClient = new JsonRestClient(); - + restClient = new JsonRestClient(); + // this is only a connection test to confirm a connection can be made and results can be obtained. try { - restClient.getRepositories(server ) ; - } catch (Exception e) { - throw new SQLException(JdbcI18n.noRepositoryNamesFound.text(), e); - } - - Set repositoryNames = new HashSet(1); - repositoryNames.add(info.getRepositoryName()); - - this.setRepositoryNames(repositoryNames); - - } - + restClient.getRepositories(server); + } catch (Exception e) { + throw new SQLException(JdbcI18n.noRepositoryNamesFound.text(), e); + } + + Set repositoryNames = new HashSet(1); + repositoryNames.add(info.getRepositoryName()); + + this.setRepositoryNames(repositoryNames); + + } + /** - * * @see java.sql.Connection#isValid(int) */ @Override - public boolean isValid( final int timeout ) throws RepositoryException { - return false; + public boolean isValid( final int timeout ) { + try { + this.restClient.getWorkspaces(workspace.getRepository()); + return true; + } catch (Throwable e) { + return false; + } } - + /** * {@inheritDoc} * * @see java.sql.Connection#commit() */ @Override - public void commit() throws RepositoryException { + public void commit() { + // nothing to do; we can't make any changes } /** @@ -213,9 +205,10 @@ public class HttpRepositoryDelegate extends AbstractRepositoryDelegate { * @see java.sql.Connection#rollback() */ @Override - public void rollback() throws RepositoryException { + public void rollback() { + // nothing to do; we can't make any changes } - + /** * {@inheritDoc} * @@ -223,521 +216,96 @@ public class HttpRepositoryDelegate extends AbstractRepositoryDelegate { */ @Override public void close() { - restClient = null; - workspace = null; - if (nodeTypes != null) nodeTypes.clear(); + restClient = null; + workspace = null; + if (nodeTypes != null) nodeTypes.clear(); } - + class HttpConnectionInfo extends ConnectionInfo { - /** - * @param url - * @param properties - */ - protected HttpConnectionInfo(String url, Properties properties) { - super(url, properties); - - } - - @Override - protected void init() { - // parsing 2 ways of specifying the repository and workspace - // 1) defined using ?repositoryName - // 2) defined in the path server:8080/modeshape-rest/respositoryName/workspaceName - - super.init(); - - // if the workspace and/or repository name is not specified as a property on the url, - // then parse the url to obtain the values from the path, the url must be in the format: - // {hostname}:{port} / {context root} + / respositoryName / workspaceName - - StringBuilder url = new StringBuilder(); - String[] urlsections = repositoryPath.split("/"); - // if there are only 2 sections, then the url can have the workspace or repository name specified in the path - if (urlsections.length < 3) { - return; - } - - // the assignment of url section is working back to front, this is so in cases where - // the {context} is changed to be made up of multiple sections, instead of the default (modeshape-rest), the - // workspace should be the last section (if exist) and the repository should be before the - // workspace. - int workspacePos = -1; - int repositoryPos = -1; - int repoPos = 1; - if (this.getWorkspaceName() == null && urlsections.length > 3) { - workspacePos = urlsections.length -1; - String workspaceName = urlsections[workspacePos]; - this.setWorkspaceName(workspaceName); - // if workspace is found, then repository is assume in the prior section - repoPos = 2; - - } - if (this.getRepositoryName() == null && urlsections.length > 2) { - repositoryPos = urlsections.length - repoPos; - String repositoryName = urlsections[repositoryPos]; - this.setRepositoryName(repositoryName); - } - - // rebuild the url without the repositoryName or WorkspaceName because - // the createConnection() needs these separated. - for (int i = 0; i < repositoryPos; i++) { - url.append(urlsections[i]); - if (i < repositoryPos -1) { - url.append("/"); - } - } - - this.repositoryPath = url.toString(); - - } - - @Override - public String getUrlExample() { - return HTTP_EXAMPLE_URL; - } - - @Override - public String getUrlPrefix() { - return JcrDriver.HTTP_URL_PREFIX; - } - - @Override - protected void addUrlPropertyInfo(List results) { - // if the repository path doesn't have at least the {context} - // example: server:8080/modeshape-rest where modeshape-rest is the context, - // then the URL is considered invalid. - if (repositoryPath.indexOf("/") == -1) { - setUrl(null); - } - super.addUrlPropertyInfo(results); - } + /** + * @param url + * @param properties + */ + protected HttpConnectionInfo( String url, + Properties properties ) { + super(url, properties); + + } + + @Override + protected void init() { + // parsing 2 ways of specifying the repository and workspace + // 1) defined using ?repositoryName + // 2) defined in the path server:8080/modeshape-rest/respositoryName/workspaceName + + super.init(); + + // if the workspace and/or repository name is not specified as a property on the url, + // then parse the url to obtain the values from the path, the url must be in the format: + // {hostname}:{port} / {context root} + / respositoryName / workspaceName + + StringBuilder url = new StringBuilder(); + String[] urlsections = repositoryPath.split("/"); + // if there are only 2 sections, then the url can have the workspace or repository name specified in the path + if (urlsections.length < 3) { + return; + } + + // the assignment of url section is working back to front, this is so in cases where + // the {context} is changed to be made up of multiple sections, instead of the default (modeshape-rest), the + // workspace should be the last section (if exist) and the repository should be before the + // workspace. + int workspacePos = -1; + int repositoryPos = -1; + int repoPos = 1; + if (this.getWorkspaceName() == null && urlsections.length > 3) { + workspacePos = urlsections.length - 1; + String workspaceName = urlsections[workspacePos]; + this.setWorkspaceName(workspaceName); + // if workspace is found, then repository is assume in the prior section + repoPos = 2; + + } + if (this.getRepositoryName() == null && urlsections.length > 2) { + repositoryPos = urlsections.length - repoPos; + String repositoryName = urlsections[repositoryPos]; + this.setRepositoryName(repositoryName); + } + + // rebuild the url without the repositoryName or WorkspaceName because + // the createConnection() needs these separated. + for (int i = 0; i < repositoryPos; i++) { + url.append(urlsections[i]); + if (i < repositoryPos - 1) { + url.append("/"); + } + } + + this.repositoryPath = url.toString(); + + } + + @Override + public String getUrlExample() { + return HTTP_EXAMPLE_URL; + } + + @Override + public String getUrlPrefix() { + return JcrDriver.HTTP_URL_PREFIX; + } + + @Override + protected void addUrlPropertyInfo( List results ) { + // if the repository path doesn't have at least the {context} + // example: server:8080/modeshape-rest where modeshape-rest is the context, + // then the URL is considered invalid. + if (repositoryPath.indexOf("/") == -1) { + setUrl(null); + } + super.addUrlPropertyInfo(results); + } } - - - - protected class HttpNodeType implements javax.jcr.nodetype.NodeType { - private org.modeshape.web.jcr.rest.client.domain.NodeType restnodetype; - - public HttpNodeType(org.modeshape.web.jcr.rest.client.domain.NodeType nodetype) { - assert nodetype != null; - restnodetype = nodetype; - } - - public void setNodeType(org.modeshape.web.jcr.rest.client.domain.NodeType nodetype) { - restnodetype = nodetype; - } - - public org.modeshape.web.jcr.rest.client.domain.NodeType getNodeType() { - return restnodetype; - } - - public boolean hasProperties() { - return (restnodetype.getProperties().size() > 0 ? true : false); - } - - @Override - public String getName() { - return restnodetype.getName(); - } - - @Override - public String getPrimaryItemName() { - return restnodetype.getProperty("jcr:primaryItemName"); - } - - @Override - public boolean isMixin() { - return convertBoolean("jcr:isMixin"); - } - - @Override - public boolean isQueryable() { - return convertBoolean("jcr:isQueryable"); - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canAddChildNode(java.lang.String) - */ - @Override - public boolean canAddChildNode(String arg0) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canAddChildNode(java.lang.String, java.lang.String) - */ - @Override - public boolean canAddChildNode(String arg0, String arg1) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canRemoveItem(java.lang.String) - */ - @Override - public boolean canRemoveItem(String arg0) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canRemoveNode(java.lang.String) - */ - @Override - public boolean canRemoveNode(String arg0) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canRemoveProperty(java.lang.String) - */ - @Override - public boolean canRemoveProperty(String arg0) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canSetProperty(java.lang.String, javax.jcr.Value) - */ - @Override - public boolean canSetProperty(String arg0, Value arg1) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#canSetProperty(java.lang.String, javax.jcr.Value[]) - */ - @Override - public boolean canSetProperty(String arg0, Value[] arg1) { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#getChildNodeDefinitions() - */ - @Override - public NodeDefinition[] getChildNodeDefinitions() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#getDeclaredSubtypes() - */ - @Override - public NodeTypeIterator getDeclaredSubtypes() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#getDeclaredSupertypes() - */ - @Override - public javax.jcr.nodetype.NodeType[] getDeclaredSupertypes() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#getSubtypes() - */ - @Override - public NodeTypeIterator getSubtypes() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#getSupertypes() - */ - @Override - public javax.jcr.nodetype.NodeType[] getSupertypes() { - - ListsuperTypes = restnodetype.getSuperNodeTypes(); - javax.jcr.nodetype.NodeType[] nodetypes = new javax.jcr.nodetype.NodeType[superTypes.size()]; - int i = 0; - for (Iterator it=superTypes.iterator(); it.hasNext();) { - org.modeshape.web.jcr.rest.client.domain.NodeType nt = it.next(); - HttpNodeType localnodetype = new HttpNodeType(nt); - nodetypes[i] = localnodetype; - - } - - return nodetypes; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#isNodeType(java.lang.String) - */ - @Override - public boolean isNodeType(String arg0) { - String value = restnodetype.getProperty("jcr:nodeTypeName"); - return (value != null && arg0.equals(value)); - - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredChildNodeDefinitions() - */ - @Override - public NodeDefinition[] getDeclaredChildNodeDefinitions() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredPropertyDefinitions() - */ - @Override - public PropertyDefinition[] getDeclaredPropertyDefinitions() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredSupertypeNames() - */ - @Override - public String[] getDeclaredSupertypeNames() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeTypeDefinition#hasOrderableChildNodes() - */ - @Override - public boolean hasOrderableChildNodes() { - return convertBoolean("jcr:hasOrderableChildNodes"); - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeTypeDefinition#isAbstract() - */ - @Override - public boolean isAbstract() { - return convertBoolean("jcr:isAbstract"); - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.NodeType#getPropertyDefinitions() - */ - @Override - public PropertyDefinition[] getPropertyDefinitions() { - PropertyDefinition[] defns = null; - int cnt = restnodetype.getPropertyDefinitions().size() + restnodetype.getChildNodeDefinitions().size(); - defns = new PropertyDefinition[cnt]; - int i = 0; - if (restnodetype.getPropertyDefinitions() != null) { - for (Iterator it=restnodetype.getPropertyDefinitions().iterator(); it.hasNext();){ - org.modeshape.web.jcr.rest.client.domain.NodeType nt = it.next(); - HttpPropertyDefinition propDefn = new HttpPropertyDefinition(nt.getName(), nt.getProperties()) ; - defns[i] = propDefn; - i++; - } - } - - if (restnodetype.getChildNodeDefinitions() != null) { - for (Iterator it=restnodetype.getChildNodeDefinitions().iterator(); it.hasNext();){ - org.modeshape.web.jcr.rest.client.domain.NodeType nt = it.next(); - HttpPropertyDefinition propDefn = new HttpPropertyDefinition(nt.getName(), nt.getProperties()) ; - defns[i] = propDefn; - i++; - } - } - return defns; - } - - - private boolean convertBoolean(String key ) { - String value = restnodetype.getProperty(key); - if (value == null || value.equalsIgnoreCase("false")) return false; - return true; - } - } - - protected class HttpPropertyDefinition implements PropertyDefinition { - private Properties properties = null; - private String name; - - public HttpPropertyDefinition(String name, Properties nodeTypeProperties) { - this.properties = nodeTypeProperties; - this.name = name; - } - - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#getAvailableQueryOperators() - */ - @Override - public String[] getAvailableQueryOperators() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#getDefaultValues() - */ - @Override - public Value[] getDefaultValues() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#getRequiredType() - */ - @Override - public int getRequiredType() { - return 0; -// String value = properties.getProperty("jcr:requiredType"); -// if (value == null) return PropertyDefinition. - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#getValueConstraints() - */ - @Override - public String[] getValueConstraints() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#isFullTextSearchable() - */ - @Override - public boolean isFullTextSearchable() { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#isMultiple() - */ - @Override - public boolean isMultiple() { - return false; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.PropertyDefinition#isQueryOrderable() - */ - @Override - public boolean isQueryOrderable() { - return true; - // return convertBoolean("jcr:isQueryable"); - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.ItemDefinition#getDeclaringNodeType() - */ - @Override - public NodeType getDeclaringNodeType() { - return null; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.ItemDefinition#getName() - */ - @Override - public String getName() { - return name; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.ItemDefinition#getOnParentVersion() - */ - @Override - public int getOnParentVersion() { - return 0; - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.ItemDefinition#isAutoCreated() - */ - @Override - public boolean isAutoCreated() { - return convertBoolean("jcr:autoCreated"); - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.ItemDefinition#isMandatory() - */ - @Override - public boolean isMandatory() { - return convertBoolean("jcr:mandatory"); - } - - /** - * {@inheritDoc} - * - * @see javax.jcr.nodetype.ItemDefinition#isProtected() - */ - @Override - public boolean isProtected() { - return convertBoolean("jcr:protected"); - } - - - private boolean convertBoolean(String key ) { - String value = properties.getProperty(key); - if (value == null || value.equalsIgnoreCase("false")) return false; - return true; - } - - } - + } Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/delegate/RepositoryDelegateFactory.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/delegate/RepositoryDelegateFactory.java (revision 2268) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/delegate/RepositoryDelegateFactory.java (working copy) @@ -23,57 +23,52 @@ */ package org.modeshape.jdbc.delegate; -import java.sql.DriverPropertyInfo; import java.sql.SQLException; import java.util.Properties; - import org.modeshape.jdbc.JcrDriver; import org.modeshape.jdbc.JdbcI18n; import org.modeshape.jdbc.JcrDriver.JcrContextFactory; /** - * The RepositoryDelegateFactory is used to create the required type of {@link RepositoryDelegate} based upon the url provided. - * The url must be prefixed by either {@value JcrDriver#JNDI_URL_PREFIX} or {@value JcrDriver#HTTP_URL_PREFIX}. - * + * The RepositoryDelegateFactory is used to create the required type of {@link RepositoryDelegate} based upon the url + * provided. The url must be prefixed by either {@value JcrDriver#JNDI_URL_PREFIX} or {@value JcrDriver#HTTP_URL_PREFIX}. */ public class RepositoryDelegateFactory { - - + private static final int JNDI_URL_OPTION = 1; - private static final int HTTP_URL_OPTION = 2; + private static final int HTTP_URL_OPTION = 2; + + public static RepositoryDelegate createRepositoryDelegate( String url, + Properties info, + JcrContextFactory contextFactory ) throws SQLException { + if (!acceptUrl(url)) { + throw new SQLException(JdbcI18n.invalidUrlPrefix.text(JcrDriver.JNDI_URL_PREFIX, JcrDriver.HTTP_URL_PREFIX)); + } + RepositoryDelegate jcri = create(url, info, contextFactory); - public static RepositoryDelegate createRepositoryDelegate(String url, Properties info, JcrContextFactory contextFactory) throws SQLException { - if (! acceptUrl(url)) { - throw new SQLException(JdbcI18n.invalidUrlPrefix - .text(JcrDriver.JNDI_URL_PREFIX, JcrDriver.HTTP_URL_PREFIX)); - } - RepositoryDelegate jcri = create(url, info, contextFactory); - - // TODO: an exception should be thrown if a property info is not available. - // the getPropertyInfos on the driver should return what the driver - // needs in order to connect -// DriverPropertyInfo[] infos = jcri.getConnectionInfo().getPropertyInfos(); -// if (infos != null && infos.length > 0) { -// StringBuilder missing = new StringBuilder(); -// for (int i = 0; i < infos.length; i++) { -// missing.append(infos[i].description); -// if (i + 1 < infos.length) { -// missing.append(","); -// } -// } -// -// throw new SQLException(JdbcI18n.invalidUrl.text(missing.toString())); -// } - return jcri; + // TODO: an exception should be thrown if a property info is not available. + // the getPropertyInfos on the driver should return what the driver + // needs in order to connect + // DriverPropertyInfo[] infos = jcri.getConnectionInfo().getPropertyInfos(); + // if (infos != null && infos.length > 0) { + // StringBuilder missing = new StringBuilder(); + // for (int i = 0; i < infos.length; i++) { + // missing.append(infos[i].description); + // if (i + 1 < infos.length) { + // missing.append(","); + // } + // } + // + // throw new SQLException(JdbcI18n.invalidUrl.text(missing.toString())); + // } + return jcri; } - - public static boolean acceptUrl(String url) { - return ( getUrlOption(url) > 0 ? true : false); + public static boolean acceptUrl( String url ) { + return (getUrlOption(url) > 0 ? true : false); } - - - private static int getUrlOption(String url){ + + private static int getUrlOption( String url ) { if (url == null || url.trim().length() == 0) return -1; String trimmedUrl = url.trim(); if (trimmedUrl.startsWith(JcrDriver.JNDI_URL_PREFIX) && trimmedUrl.length() > JcrDriver.JNDI_URL_PREFIX.length()) { @@ -87,18 +82,20 @@ public class RepositoryDelegateFactory { return -1; } - - private static RepositoryDelegate create(String url, Properties info, JcrContextFactory contextFactory) { - - switch (getUrlOption(url)) { - case JNDI_URL_OPTION: - return new LocalRepositoryDelegate(url, info, contextFactory); - case HTTP_URL_OPTION: - return new HttpRepositoryDelegate(url, info, contextFactory ); - - default: - return null; - } + private static RepositoryDelegate create( String url, + Properties info, + JcrContextFactory contextFactory ) { + + switch (getUrlOption(url)) { + case JNDI_URL_OPTION: + return new LocalRepositoryDelegate(url, info, contextFactory); + + case HTTP_URL_OPTION: + return new HttpRepositoryDelegate(url, info, contextFactory); + + default: + return null; + } } } Index: utils/modeshape-jdbc/src/test/java/org/modeshape/jdbc/JcrDriverIntegrationTest.java =================================================================== --- utils/modeshape-jdbc/src/test/java/org/modeshape/jdbc/JcrDriverIntegrationTest.java (revision 2268) +++ utils/modeshape-jdbc/src/test/java/org/modeshape/jdbc/JcrDriverIntegrationTest.java (working copy) @@ -541,46 +541,23 @@ public class JcrDriverIntegrationTest extends ConnectionResultsComparator { this.compareColumns = false; String[] expected = { - "TABLE_CAT[String] TABLE_SCHEM[String] TABLE_NAME[String] COLUMN_NAME[String] DATA_TYPE[Long] TYPE_NAME[String] COLUMN_SIZE[Long] BUFFER_LENGTH[Long] DECIMAL_DIGITS[Long] NUM_PREC_RADIX[Long] NULLABLE[Long] REMARKS[String] COLUMN_DEF[String] SQL_DATA_TYPE[Long] SQL_DATETIME_SUB[Long] CHAR_OCTET_LENGTH[Long] ORDINAL_POSITION[Long] IS_NULLABLE[String] SCOPE_CATLOG[String] SCOPE_SCHEMA[String] SCOPE_TABLE[String] SOURCE_DATA_TYPE[Long]", - "cars NULL car:Car car:engine 12 String 50 NULL 0 0 2 NULL 0 0 0 1 YES NULL NULL NULL 0", - "cars NULL car:Car car:lengthInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 2 YES NULL NULL NULL 0", - "cars NULL car:Car car:maker 12 String 50 NULL 0 0 2 NULL 0 0 0 3 YES NULL NULL NULL 0", - "cars NULL car:Car car:model 12 String 50 NULL 0 0 2 NULL 0 0 0 4 YES NULL NULL NULL 0", - "cars NULL car:Car car:mpgCity -5 Long 20 NULL 0 0 2 NULL 0 0 0 5 YES NULL NULL NULL 0", - "cars NULL car:Car car:mpgHighway -5 Long 20 NULL 0 0 2 NULL 0 0 0 6 YES NULL NULL NULL 0", - "cars NULL car:Car car:msrp 12 String 50 NULL 0 0 2 NULL 0 0 0 7 YES NULL NULL NULL 0", - "cars NULL car:Car car:userRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 8 YES NULL NULL NULL 0", - "cars NULL car:Car car:valueRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 9 YES NULL NULL NULL 0", - "cars NULL car:Car car:wheelbaseInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 10 YES NULL NULL NULL 0", - "cars NULL car:Car car:year 12 String 50 NULL 0 0 2 NULL 0 0 0 11 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 12 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 13 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 14 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 15 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 16 NO NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 17 NO NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 18 NO NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 19 NO NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 20 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 21 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 22 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 23 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 24 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 25 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 26 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 27 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 28 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 29 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 30 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 31 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 32 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 33 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 34 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 35 YES NULL NULL NULL 0" - }; + "TABLE_CAT[String] TABLE_SCHEM[String] TABLE_NAME[String] COLUMN_NAME[String] DATA_TYPE[Long] TYPE_NAME[String] COLUMN_SIZE[Long] BUFFER_LENGTH[Long] DECIMAL_DIGITS[Long] NUM_PREC_RADIX[Long] NULLABLE[Long] REMARKS[String] COLUMN_DEF[String] SQL_DATA_TYPE[Long] SQL_DATETIME_SUB[Long] CHAR_OCTET_LENGTH[Long] ORDINAL_POSITION[Long] IS_NULLABLE[String] SCOPE_CATLOG[String] SCOPE_SCHEMA[String] SCOPE_TABLE[String] SOURCE_DATA_TYPE[Long]", + "cars NULL car:Car car:engine 12 String 50 NULL 0 0 2 NULL 0 0 0 1 YES NULL NULL NULL 0", + "cars NULL car:Car car:lengthInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 2 YES NULL NULL NULL 0", + "cars NULL car:Car car:maker 12 String 50 NULL 0 0 2 NULL 0 0 0 3 YES NULL NULL NULL 0", + "cars NULL car:Car car:model 12 String 50 NULL 0 0 2 NULL 0 0 0 4 YES NULL NULL NULL 0", + "cars NULL car:Car car:mpgCity -5 Long 20 NULL 0 0 2 NULL 0 0 0 5 YES NULL NULL NULL 0", + "cars NULL car:Car car:mpgHighway -5 Long 20 NULL 0 0 2 NULL 0 0 0 6 YES NULL NULL NULL 0", + "cars NULL car:Car car:msrp 12 String 50 NULL 0 0 2 NULL 0 0 0 7 YES NULL NULL NULL 0", + "cars NULL car:Car car:userRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 8 YES NULL NULL NULL 0", + "cars NULL car:Car car:valueRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 9 YES NULL NULL NULL 0", + "cars NULL car:Car car:wheelbaseInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 10 YES NULL NULL NULL 0", + "cars NULL car:Car car:year 12 String 50 NULL 0 0 2 NULL 0 0 0 11 YES NULL NULL NULL 0", + "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 12 NO NULL NULL NULL 0", + "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 13 YES NULL NULL NULL 0"}; ResultSet rs = dbmd.getColumns("%", "%", "car:Car", "%"); - + assertResultsSetEquals(rs, expected); assertRowCount(17); @@ -591,47 +568,24 @@ public class JcrDriverIntegrationTest extends ConnectionResultsComparator { this.compareColumns = false; String[] expected = { - "TABLE_CAT[String] TABLE_SCHEM[String] TABLE_NAME[String] COLUMN_NAME[String] DATA_TYPE[Long] TYPE_NAME[String] COLUMN_SIZE[Long] BUFFER_LENGTH[Long] DECIMAL_DIGITS[Long] NUM_PREC_RADIX[Long] NULLABLE[Long] REMARKS[String] COLUMN_DEF[String] SQL_DATA_TYPE[Long] SQL_DATETIME_SUB[Long] CHAR_OCTET_LENGTH[Long] ORDINAL_POSITION[Long] IS_NULLABLE[String] SCOPE_CATLOG[String] SCOPE_SCHEMA[String] SCOPE_TABLE[String] SOURCE_DATA_TYPE[Long]", - "cars NULL car:Car car:engine 12 String 50 NULL 0 0 2 NULL 0 0 0 1 YES NULL NULL NULL 0", - "cars NULL car:Car car:lengthInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 2 YES NULL NULL NULL 0", - "cars NULL car:Car car:maker 12 String 50 NULL 0 0 2 NULL 0 0 0 3 YES NULL NULL NULL 0", - "cars NULL car:Car car:model 12 String 50 NULL 0 0 2 NULL 0 0 0 4 YES NULL NULL NULL 0", - "cars NULL car:Car car:mpgCity -5 Long 20 NULL 0 0 2 NULL 0 0 0 5 YES NULL NULL NULL 0", - "cars NULL car:Car car:mpgHighway -5 Long 20 NULL 0 0 2 NULL 0 0 0 6 YES NULL NULL NULL 0", - "cars NULL car:Car car:msrp 12 String 50 NULL 0 0 2 NULL 0 0 0 7 YES NULL NULL NULL 0", - "cars NULL car:Car car:userRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 8 YES NULL NULL NULL 0", - "cars NULL car:Car car:valueRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 9 YES NULL NULL NULL 0", - "cars NULL car:Car car:wheelbaseInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 10 YES NULL NULL NULL 0", - "cars NULL car:Car car:year 12 String 50 NULL 0 0 2 NULL 0 0 0 11 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 12 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 13 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 14 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:mixinTypes 12 Name 20 NULL 0 0 2 NULL 0 0 0 15 YES NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 16 NO NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 17 NO NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 18 NO NULL NULL NULL 0", - "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 19 NO NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 20 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 21 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 22 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 23 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 24 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 25 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 26 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:multiValuedProperties 12 String 50 NULL 0 0 2 NULL 0 0 0 27 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 28 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 29 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 30 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 31 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 32 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 33 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 34 YES NULL NULL NULL 0", - "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 35 YES NULL NULL NULL 0" - }; + "TABLE_CAT[String] TABLE_SCHEM[String] TABLE_NAME[String] COLUMN_NAME[String] DATA_TYPE[Long] TYPE_NAME[String] COLUMN_SIZE[Long] BUFFER_LENGTH[Long] DECIMAL_DIGITS[Long] NUM_PREC_RADIX[Long] NULLABLE[Long] REMARKS[String] COLUMN_DEF[String] SQL_DATA_TYPE[Long] SQL_DATETIME_SUB[Long] CHAR_OCTET_LENGTH[Long] ORDINAL_POSITION[Long] IS_NULLABLE[String] SCOPE_CATLOG[String] SCOPE_SCHEMA[String] SCOPE_TABLE[String] SOURCE_DATA_TYPE[Long]", + "cars NULL car:Car car:engine 12 String 50 NULL 0 0 2 NULL 0 0 0 1 YES NULL NULL NULL 0", + "cars NULL car:Car car:lengthInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 2 YES NULL NULL NULL 0", + "cars NULL car:Car car:maker 12 String 50 NULL 0 0 2 NULL 0 0 0 3 YES NULL NULL NULL 0", + "cars NULL car:Car car:model 12 String 50 NULL 0 0 2 NULL 0 0 0 4 YES NULL NULL NULL 0", + "cars NULL car:Car car:mpgCity -5 Long 20 NULL 0 0 2 NULL 0 0 0 5 YES NULL NULL NULL 0", + "cars NULL car:Car car:mpgHighway -5 Long 20 NULL 0 0 2 NULL 0 0 0 6 YES NULL NULL NULL 0", + "cars NULL car:Car car:msrp 12 String 50 NULL 0 0 2 NULL 0 0 0 7 YES NULL NULL NULL 0", + "cars NULL car:Car car:userRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 8 YES NULL NULL NULL 0", + "cars NULL car:Car car:valueRating -5 Long 20 NULL 0 0 2 NULL 0 0 0 9 YES NULL NULL NULL 0", + "cars NULL car:Car car:wheelbaseInInches 6 Double 20 NULL 0 0 2 NULL 0 0 0 10 YES NULL NULL NULL 0", + "cars NULL car:Car car:year 12 String 50 NULL 0 0 2 NULL 0 0 0 11 YES NULL NULL NULL 0", + "cars NULL car:Car jcr:primaryType 12 Name 20 NULL 0 0 1 NULL 0 0 0 12 NO NULL NULL NULL 0", + "cars NULL car:Car modeint:nodeDefinition 12 String 50 NULL 0 0 2 NULL 0 0 0 13 YES NULL NULL NULL 0"}; ResultSet rs = dbmd.getColumns("%", "%", "car%", "%"); - assertResultsSetEquals(rs, expected); + assertResultsSetEquals(rs, expected); assertRowCount(11); } Index: web/modeshape-web-jcr-rest-client/pom.xml =================================================================== --- web/modeshape-web-jcr-rest-client/pom.xml (revision 2268) +++ web/modeshape-web-jcr-rest-client/pom.xml (working copy) @@ -22,6 +22,10 @@ org.modeshape modeshape-common + + javax.jcr + jcr + org.modeshape modeshape-common Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/IRestClient.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/IRestClient.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/IRestClient.java (working copy) @@ -29,7 +29,6 @@ import java.util.Collection; import java.util.List; import java.util.Map; import org.modeshape.web.jcr.rest.client.Status.Severity; -import org.modeshape.web.jcr.rest.client.domain.NodeType; import org.modeshape.web.jcr.rest.client.domain.QueryRow; import org.modeshape.web.jcr.rest.client.domain.Repository; import org.modeshape.web.jcr.rest.client.domain.Server; @@ -53,27 +52,10 @@ public interface IRestClient { * Obtains the ModeShape node types defined within the specified workspace. * * @param workspace whose node types are being requested (never null) - * @param relativePath is the path to find node types and, optionally, at what depth - * @param nodeDepth , optional, the the depth of the structure of node types to be returned * @return the node types defined within the specified workspace (never null) * @throws Exception if there is a problem obtaining the node types */ - Collection getNodeTypes( Workspace workspace, - String relativePath, - String nodeDepth ) throws Exception; - - /** - * Obtains the ModeShape node type requested by the nodeTypeName within the specified workspace. - * - * @param workspace whose node types are being requested (never null) - * @param relativePath is the path to find node type - * @param nodeDepth , optional, the the depth of the structure of node types to be returned - * @return the node type requested by the nodeTypeName (null) - * @throws Exception if there is a problem obtaining the node type - */ - NodeType getNodeType( Workspace workspace, - String relativePath, - String nodeDepth ) throws Exception; + Map getNodeTypes( Workspace workspace ) throws Exception; /** * @param file the file whose URL is being requested (never null) Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/RestClientI18n.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/RestClientI18n.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/RestClientI18n.java (working copy) @@ -36,6 +36,9 @@ public final class RestClientI18n { public static I18n unknownHttpRequestMethodMsg; public static I18n workspaceShortDescription; public static I18n nodeTypeShortDescription; + public static I18n propertyDefinitionShortDescription; + public static I18n childNodeDefinitionShortDescription; + public static I18n unableToConvertValue; // JsonRestClient messages public static I18n connectionErrorMsg; Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/ChildNodeDefinition.java new file mode 100644 =================================================================== --- /dev/null (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/ChildNodeDefinition.java (working copy) @@ -0,0 +1,243 @@ +/* + * ModeShape (http://www.modeshape.org) + * 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. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * 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. + * + * ModeShape 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 software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.web.jcr.rest.client.domain; + +import java.util.Map; +import java.util.Set; +import javax.jcr.version.OnParentVersionAction; +import net.jcip.annotations.Immutable; + +/** + * An immutable representation of a JCR PropertyDefinition. + */ +@Immutable +public class ChildNodeDefinition extends ItemDefinition implements javax.jcr.nodetype.NodeDefinition { + + private final Id id; + private final String defaultPrimaryTypeName; + + public ChildNodeDefinition( String declaringNodeTypeName, + String name, + Set requiredTypes, + boolean isAutoCreated, + boolean isMandatory, + boolean isProtected, + boolean allowsSameNameSiblings, + int onParentVersion, + String defaultPrimaryTypeName, + Map nodeTypes ) { + super(declaringNodeTypeName, isAutoCreated, isMandatory, isProtected, onParentVersion, nodeTypes); + this.id = new Id(name, allowsSameNameSiblings, requiredTypes); + this.defaultPrimaryTypeName = defaultPrimaryTypeName; + } + + /** + * @return id + */ + protected Id id() { + return id; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#getName() + */ + @Override + public String getName() { + return id.name; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeDefinition#allowsSameNameSiblings() + */ + @Override + public boolean allowsSameNameSiblings() { + return id.isMultiple; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeDefinition#getRequiredPrimaryTypeNames() + */ + @Override + public String[] getRequiredPrimaryTypeNames() { + return toArray(id.requiredTypes); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeDefinition#getDefaultPrimaryType() + */ + @Override + public NodeType getDefaultPrimaryType() { + return nodeType(getDefaultPrimaryTypeName()); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeDefinition#getDefaultPrimaryTypeName() + */ + @Override + public String getDefaultPrimaryTypeName() { + return defaultPrimaryTypeName; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeDefinition#getRequiredPrimaryTypes() + */ + @Override + public javax.jcr.nodetype.NodeType[] getRequiredPrimaryTypes() { + return nodeTypes(id.requiredTypes, nodeTypes()); + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + return id.hashCode(); + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals( Object obj ) { + if (obj == this) return true; + if (obj instanceof ChildNodeDefinition) { + ChildNodeDefinition that = (ChildNodeDefinition)obj; + return this.id.equals(that.id); + } + return false; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(" + "); + sb.append(id.name); + if (getRequiredPrimaryTypeNames().length != 0) { + sb.append(" ("); + boolean first = true; + for (String typeName : getRequiredPrimaryTypeNames()) { + if (typeName == null) continue; + if (first) first = false; + else sb.append(','); + sb.append(typeName); + } + sb.append(')'); + } + if (getDefaultPrimaryTypeName() != null) { + sb.append(" = ").append(getDefaultPrimaryTypeName()); + } + if (isAutoCreated()) sb.append(" autocreated"); + if (isMandatory()) sb.append(" mandatory"); + if (allowsSameNameSiblings()) sb.append(" sns"); + if (isProtected()) sb.append(" protected"); + sb.append(' ').append(OnParentVersionAction.nameFromValue(getOnParentVersion())); + return sb.toString(); + } + + protected static class Id { + protected final String name; + protected final boolean isMultiple; + protected final Set requiredTypes; + + protected Id( String name, + boolean isMultiple, + Set requiredTypes ) { + this.name = name; + this.isMultiple = isMultiple; + this.requiredTypes = requiredTypes; + assert this.name != null; + assert this.requiredTypes != null; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + return name.hashCode(); + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals( Object obj ) { + if (obj == this) return true; + if (obj instanceof Id) { + Id that = (Id)obj; + if (this.isMultiple != that.isMultiple) return false; + if (!this.requiredTypes.equals(that.requiredTypes)) return false; + if (!this.name.equals(that.name)) return false; + return true; + } + return false; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(name); + sb.append('('); + boolean first = true; + for (String requiredType : requiredTypes) { + if (first) first = false; + else sb.append(','); + sb.append(requiredType); + } + sb.append(')'); + sb.append(isMultiple ? '*' : '1'); + return sb.toString(); + } + } + +} Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/ItemDefinition.java new file mode 100644 =================================================================== --- /dev/null (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/ItemDefinition.java (working copy) @@ -0,0 +1,152 @@ +/* + * ModeShape (http://www.modeshape.org) + * 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. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * 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. + * + * ModeShape 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 software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.web.jcr.rest.client.domain; + +import java.util.Collection; +import java.util.Map; +import net.jcip.annotations.Immutable; + +/** + * An immutable representation of an abstract JCR ItemDefinition. + */ +@Immutable +public abstract class ItemDefinition implements javax.jcr.nodetype.ItemDefinition { + + protected static String[] toArray( Collection values ) { + if (values == null) return null; + if (values.isEmpty()) return new String[0]; + return values.toArray(new String[values.size()]); + } + + protected static javax.jcr.nodetype.NodeType[] nodeTypes( Collection nodeTypeNames, + Map nodeTypes ) { + if (nodeTypes == null || nodeTypeNames == null || nodeTypeNames.isEmpty()) return new javax.jcr.nodetype.NodeType[0]; + int numValues = nodeTypeNames.size(); + int i = 0; + NodeType[] result = new NodeType[numValues]; + for (String requiredTypeName : nodeTypeNames) { + result[i++] = nodeTypes.get(requiredTypeName); + } + return result; + } + + private final String declaringNodeTypeName; + private final boolean isAutoCreated; + private final boolean isMandatory; + private final boolean isProtected; + private final int onParentVersion; + private final Map nodeTypes; + + protected ItemDefinition( String declaringNodeTypeName, + boolean isAutoCreated, + boolean isMandatory, + boolean isProtected, + int onParentVersion, + Map nodeTypes ) { + assert declaringNodeTypeName != null; + this.declaringNodeTypeName = declaringNodeTypeName; + this.isAutoCreated = isAutoCreated; + this.isMandatory = isMandatory; + this.isProtected = isProtected; + this.onParentVersion = onParentVersion; + this.nodeTypes = nodeTypes; + } + + /** + * Find the node type with the supplied name. + * + * @param name the name of the node type to find. + * @return the named node type, or null if the node type is not known (or there are no node types known) + */ + protected NodeType nodeType( String name ) { + return nodeTypes != null ? nodeTypes.get(name) : null; + } + + /** + * @return nodeTypes + */ + protected Map nodeTypes() { + return nodeTypes; + } + + /** + * Get the name of the node type that declares this definition. + * + * @return the node type name; never null + */ + public String getDeclaringNodeTypeName() { + return declaringNodeTypeName; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#getDeclaringNodeType() + */ + @Override + public NodeType getDeclaringNodeType() { + return nodeType(declaringNodeTypeName); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#getOnParentVersion() + */ + @Override + public int getOnParentVersion() { + return onParentVersion; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#isAutoCreated() + */ + @Override + public boolean isAutoCreated() { + return isAutoCreated; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#isMandatory() + */ + @Override + public boolean isMandatory() { + return isMandatory; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#isProtected() + */ + @Override + public boolean isProtected() { + return isProtected; + } + +} Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/NodeType.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/NodeType.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/NodeType.java (working copy) @@ -24,171 +24,353 @@ package org.modeshape.web.jcr.rest.client.domain; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; -import java.util.Properties; - +import java.util.Map; +import java.util.Set; +import javax.jcr.Value; +import javax.jcr.nodetype.NodeDefinition; +import javax.jcr.nodetype.NodeTypeIterator; import net.jcip.annotations.Immutable; - -import org.modeshape.common.util.HashCode; import org.modeshape.web.jcr.rest.client.RestClientI18n; /** * The NodeType class is the business object for a ModeShape supported node type. */ @Immutable -public class NodeType implements IModeShapeObject { - - // =========================================================================================================================== - // Fields - // =========================================================================================================================== +public class NodeType implements IModeShapeObject, javax.jcr.nodetype.NodeType { /** * The node type name. */ private final String name; - - /** - * The workspace where this node type resides. - */ - private final Workspace workspace; - - private Properties properties = null; - - private NodeType parentNodeType = null; - - private List childrenNodeType = null; - - private List propertyDefinitons = null; - - private List childNodeDefinitons = null; - - private List superTypes = null; + private final boolean isAbstract; + private final boolean isMixin; + private final boolean isQueryable; + private final boolean hasOrderableChildNodes; + private final String primaryItemName; + private final Map propertyDefinitions; + private final Map childNodeDefinitions; + private final List declaredSuperTypes; + private final Map nodeTypes; + private List allSuperTypes; + private Set allSuperTypeNames; + private Map allPropertyDefinitions; + private Map allChildNodeDefinitions; // =========================================================================================================================== // Constructors // =========================================================================================================================== /** - * Constructs a new NodeType. + * Constructs a new instance. * - * @param name the node type name (never null) - * @param workspace the workspace where this node type resides (never null) - * @param properties which are the attributes defined for this node type (nullable) - * @throws IllegalArgumentException if the name or workspace argument is null + * @param name the node type name; may not be null + * @param isMixin true if this node type is a mixin, or false otherwise + * @param isAbstract true if this node type is an abstract node type, or false otherwise + * @param superTypes the names of the declared supertypes for this node type; may be null or empty if there are none + * @param propertyDefinitions the property definitions declared on this node type; may be null or empty if there are none + * @param childNodeDefinitions the child node definitions declared on this node type; may be null or empty if there are none + * @param primaryItemName the name of the primary child item; may be null or empty + * @param hasOrderableChildNodes true if this node type's children are orderable, or false otherwise + * @param isQueryable true if this node type can be queried, or false otherwise + * @param nodeTypes the map of node types keyed by their name; may be null only if no node types will be found when needed + * @throws IllegalArgumentException if the name is null */ public NodeType( String name, - Workspace workspace, - Properties properties) { - assert name != null; - assert workspace != null; - this.name = name; - this.workspace = workspace; - this.properties = properties; + boolean isMixin, + boolean isAbstract, + List superTypes, + List propertyDefinitions, + List childNodeDefinitions, + String primaryItemName, + boolean hasOrderableChildNodes, + boolean isQueryable, + Map nodeTypes ) { + assert name != null; + this.name = name; + this.isMixin = isMixin; + this.isAbstract = isAbstract; + this.isQueryable = isQueryable; + this.hasOrderableChildNodes = hasOrderableChildNodes; + this.primaryItemName = primaryItemName; + this.declaredSuperTypes = superTypes != null ? superTypes : Collections.emptyList(); + if (propertyDefinitions != null && !propertyDefinitions.isEmpty()) { + Map propDefns = new HashMap(); + for (PropertyDefinition propDefn : propertyDefinitions) { + propDefns.put(propDefn.id(), propDefn); + } + this.propertyDefinitions = propDefns; + } else { + this.propertyDefinitions = Collections.emptyMap(); + } + if (childNodeDefinitions != null && !childNodeDefinitions.isEmpty()) { + Map nodeDefns = new HashMap(); + for (ChildNodeDefinition nodeDefn : childNodeDefinitions) { + nodeDefns.put(nodeDefn.id(), nodeDefn); + } + this.childNodeDefinitions = nodeDefns; + } else { + this.childNodeDefinitions = Collections.emptyMap(); + } + this.nodeTypes = nodeTypes != null ? nodeTypes : new HashMap(); + this.nodeTypes.put(this.name, this); + } - } + /** + * {@inheritDoc} + * + * @see org.modeshape.web.jcr.rest.client.domain.IModeShapeObject#getName() + */ + public String getName() { + return this.name; + } - // =========================================================================================================================== - // Methods - // =========================================================================================================================== + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeType#getDeclaredSupertypes() + */ + @Override + public javax.jcr.nodetype.NodeType[] getDeclaredSupertypes() { + return ItemDefinition.nodeTypes(declaredSuperTypes, nodeTypes); + } /** * {@inheritDoc} * - * @see java.lang.Object#equals(java.lang.Object) + * @see javax.jcr.nodetype.NodeType#getSupertypes() */ @Override - public boolean equals( Object obj ) { - if (this == obj) return true; - if ((obj == null) || (getClass() != obj.getClass())) return false; + public javax.jcr.nodetype.NodeType[] getSupertypes() { + List allSuperTypes = allSuperTypes(); + return allSuperTypes.toArray(new javax.jcr.nodetype.NodeType[allSuperTypes.size()]); + } - NodeType otherNodeType = (NodeType)obj; - return (this.name.equals(otherNodeType.name) && this.workspace.equals(otherNodeType.workspace)); + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredSupertypeNames() + */ + @Override + public String[] getDeclaredSupertypeNames() { + return ItemDefinition.toArray(declaredSuperTypes); } /** * {@inheritDoc} * - * @see org.modeshape.web.jcr.rest.client.domain.IModeShapeObject#getName() + * @see javax.jcr.nodetype.NodeType#getDeclaredSubtypes() */ - public String getName() { - return this.name; + @Override + public NodeTypeIterator getDeclaredSubtypes() { + List results = new ArrayList(); + for (NodeType nodeType : nodeTypes.values()) { + if (nodeType == this) continue; + if (nodeType.declaredSuperTypes.contains(name)) { + results.add(nodeType); + } + } + return new NodeTypes(results); } /** - * @return the server where this workspace is located (never null) + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeType#getSubtypes() */ - public Workspace getWorkspace() { - return this.workspace; + @Override + public NodeTypeIterator getSubtypes() { + List results = new ArrayList(); + for (NodeType nodeType : nodeTypes.values()) { + if (nodeType == this) continue; + if (nodeType.allSuperTypeNames().contains(name)) { + results.add(nodeType); + } + } + return new NodeTypes(results); + } + + protected List allSuperTypes() { + if (this.allSuperTypes == null) { + List allSuperTypes = new ArrayList(); + Set allSuperTypeNames = new HashSet(); + for (String superTypeName : declaredSuperTypes) { + NodeType superType = nodeTypes.get(superTypeName); + if (superType != null) { + allSuperTypes.add(superType); + allSuperTypeNames.add(superType.getName()); + // Add all of the supertypes ... + allSuperTypes.addAll(superType.allSuperTypes()); + allSuperTypeNames.addAll(superType.allSuperTypeNames()); + } + } + if (allSuperTypes.isEmpty()) { + NodeType ntBase = nodeTypes.get("nt:base"); + if (ntBase != null) { + allSuperTypes.add(ntBase); + allSuperTypeNames.add(ntBase.getName()); + } + } + this.allSuperTypes = allSuperTypes; + this.allSuperTypeNames = allSuperTypeNames; + } + return this.allSuperTypes; + } + + protected Set allSuperTypeNames() { + allSuperTypes(); + return allSuperTypeNames; } - + /** - * @return the node type attributes as a property set. + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredChildNodeDefinitions() */ - public Properties getProperties() { - return (this.properties != null ? properties : new Properties()); + @Override + public NodeDefinition[] getDeclaredChildNodeDefinitions() { + return childNodeDefinitions.values().toArray(new NodeDefinition[childNodeDefinitions.size()]); } - - public void setProperties(Properties properties ){ - this.properties = properties; + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeType#getChildNodeDefinitions() + */ + @Override + public NodeDefinition[] getChildNodeDefinitions() { + Collection allDefns = allChildNodeDefinitions(); + return allDefns.toArray(new javax.jcr.nodetype.NodeDefinition[allDefns.size()]); } - - public String getProperty(String key) { - return (this.properties != null ? this.properties.getProperty(key) : null); + + protected Collection declaredChildNodeDefinitions() { + return childNodeDefinitions.values(); } - - @SuppressWarnings("unchecked") - public List getChildren() { - return (List) (this.childrenNodeType != null ? this.childrenNodeType : Collections.emptyList()); + + protected Collection allChildNodeDefinitions() { + if (this.allChildNodeDefinitions == null) { + Map allDefns = new HashMap(); + // Add the declared child node definitions for this node ... + allDefns.putAll(childNodeDefinitions); + for (NodeType superType : allSuperTypes()) { + for (ChildNodeDefinition childDefn : superType.declaredChildNodeDefinitions()) { + if (!allDefns.containsKey(childDefn.id())) { + allDefns.put(childDefn.id(), childDefn); + } + } + } + this.allChildNodeDefinitions = allDefns; + } + return this.allChildNodeDefinitions.values(); } - - public void addChildNodeType(NodeType childNodeType) { - if (this.childrenNodeType == null) this.childrenNodeType = new ArrayList(); - this.childrenNodeType.add(childNodeType); - - childNodeType.setParentNodeType(this); + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredPropertyDefinitions() + */ + @Override + public javax.jcr.nodetype.PropertyDefinition[] getDeclaredPropertyDefinitions() { + return propertyDefinitions.values().toArray(new javax.jcr.nodetype.PropertyDefinition[propertyDefinitions.size()]); } - - public void addPropertyDefinitionNodeType(NodeType propertyDefinitionNodeType) { - if (this.propertyDefinitons == null) this.propertyDefinitons = new ArrayList(); - propertyDefinitons.add(propertyDefinitionNodeType); - propertyDefinitionNodeType.setParentNodeType(this); + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeType#getPropertyDefinitions() + */ + @Override + public javax.jcr.nodetype.PropertyDefinition[] getPropertyDefinitions() { + Collection allDefns = allPropertyDefinitions(); + return allDefns.toArray(new javax.jcr.nodetype.PropertyDefinition[allDefns.size()]); } - - public void addChildNodeDefinitionNodeType(NodeType childNodeDefinitionNodeType) { - if (this.childNodeDefinitons == null) this.childNodeDefinitons = new ArrayList(); - childNodeDefinitons.add(childNodeDefinitionNodeType); - childNodeDefinitionNodeType.setParentNodeType(this); + protected Collection declaredPropertyDefinitions() { + return propertyDefinitions.values(); } - - public void addSuperNodeType(NodeType superNodeType) { - if (this.superTypes == null) this.superTypes = new ArrayList(); - superTypes.add(superNodeType); - } - - @SuppressWarnings("unchecked") - public List getPropertyDefinitions() { - return (List) (this.propertyDefinitons != null ? this.propertyDefinitons : Collections.emptyList()); + + protected Collection allPropertyDefinitions() { + if (this.allPropertyDefinitions == null) { + Map allDefns = new HashMap(); + // Add the declared child node definitions for this node ... + allDefns.putAll(propertyDefinitions); + for (NodeType superType : allSuperTypes()) { + for (PropertyDefinition propDefn : superType.declaredPropertyDefinitions()) { + if (!allDefns.containsKey(propDefn.id())) { + allDefns.put(propDefn.id(), propDefn); + } + } + } + this.allPropertyDefinitions = allDefns; + } + return this.allPropertyDefinitions.values(); } - - @SuppressWarnings("unchecked") - public List getChildNodeDefinitions() { - return (List) (this.childNodeDefinitons != null ? this.childNodeDefinitons : Collections.emptyList()); + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#getPrimaryItemName() + */ + @Override + public String getPrimaryItemName() { + return primaryItemName; } - - @SuppressWarnings("unchecked") - public List getSuperNodeTypes() { - return (List) (this.superTypes != null ? this.superTypes : Collections.emptyList()); + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#hasOrderableChildNodes() + */ + @Override + public boolean hasOrderableChildNodes() { + return hasOrderableChildNodes; } - - public NodeType getParentNodeType() { - return this.parentNodeType; + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#isAbstract() + */ + @Override + public boolean isAbstract() { + return isAbstract; } - - public void setParentNodeType(NodeType parent) { - this.parentNodeType = parent; + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#isMixin() + */ + @Override + public boolean isMixin() { + return isMixin; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeDefinition#isQueryable() + */ + @Override + public boolean isQueryable() { + return isQueryable; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeType#isNodeType(java.lang.String) + */ + @Override + public boolean isNodeType( String nodeTypeName ) { + if (nodeTypeName == null) return false; + if (this.name.equals(nodeTypeName)) return true; + return allSuperTypeNames().contains(nodeTypeName); } /** @@ -197,7 +379,98 @@ public class NodeType implements IModeShapeObject { * @see org.modeshape.web.jcr.rest.client.domain.IModeShapeObject#getShortDescription() */ public String getShortDescription() { - return RestClientI18n.nodeTypeShortDescription.text(this.name, this.workspace.getServer()); + return RestClientI18n.nodeTypeShortDescription.text(this.name); + } + + /** + * {@inheritDoc} + *

+ * This implementation always returns false. + *

+ * + * @see javax.jcr.nodetype.NodeType#canAddChildNode(java.lang.String) + */ + @Override + public boolean canAddChildNode( String childNodeName ) { + return false; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeType#canAddChildNode(java.lang.String, java.lang.String) + */ + @Override + public boolean canAddChildNode( String childNodeName, + String nodeTypeName ) { + return false; + } + + /** + * {@inheritDoc} + *

+ * This implementation always returns false. + *

+ * + * @see javax.jcr.nodetype.NodeType#canRemoveItem(java.lang.String) + */ + @Override + public boolean canRemoveItem( String itemName ) { + return false; + } + + /** + * {@inheritDoc} + *

+ * This implementation always returns false. + *

+ * + * @see javax.jcr.nodetype.NodeType#canRemoveNode(java.lang.String) + */ + @Override + public boolean canRemoveNode( String nodeName ) { + return false; + } + + /** + * {@inheritDoc} + *

+ * This implementation always returns false. + *

+ * + * @see javax.jcr.nodetype.NodeType#canRemoveProperty(java.lang.String) + */ + @Override + public boolean canRemoveProperty( String propertyName ) { + return false; + } + + /** + * {@inheritDoc} + *

+ * This implementation always returns false. + *

+ * + * @see javax.jcr.nodetype.NodeType#canSetProperty(java.lang.String, javax.jcr.Value) + */ + @Override + public boolean canSetProperty( String propertyName, + Value value ) { + return false; + } + + /** + * {@inheritDoc} + *

+ * This implementation always returns false. + *

+ * + * @see javax.jcr.nodetype.NodeType#canSetProperty(java.lang.String, javax.jcr.Value[]) + */ + @Override + public boolean canSetProperty( String propertyName, + Value[] values ) { + return false; } /** @@ -207,7 +480,21 @@ public class NodeType implements IModeShapeObject { */ @Override public int hashCode() { - return HashCode.compute(this.name, this.workspace); + return name.hashCode(); + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals( Object obj ) { + if (this == obj) return true; + if (obj instanceof NodeType) { + + } + return false; } /** @@ -217,7 +504,123 @@ public class NodeType implements IModeShapeObject { */ @Override public String toString() { - return getShortDescription(); + StringBuilder sb = new StringBuilder(); + sb.append('['); + sb.append(name); + sb.append(']'); + if (getDeclaredSupertypeNames().length != 0) { + sb.append(" > "); + boolean first = true; + for (String typeName : getDeclaredSupertypeNames()) { + if (typeName == null) continue; + if (first) first = false; + else sb.append(','); + sb.append(typeName); + } + } + if (isAbstract()) sb.append(" abstract"); + if (isMixin()) sb.append(" mixin"); + if (!isQueryable()) sb.append(" noquery"); + if (hasOrderableChildNodes()) sb.append(" orderable"); + if (getPrimaryItemName() != null) { + sb.append(" primaryitem ").append(getPrimaryItemName()); + } + for (PropertyDefinition propDefn : declaredPropertyDefinitions()) { + sb.append('\n').append(propDefn); + } + for (ChildNodeDefinition childDefn : declaredChildNodeDefinitions()) { + sb.append('\n').append(childDefn); + } + sb.append('\n'); + return sb.toString(); + } + + protected static class NodeTypes implements NodeTypeIterator { + private final List nodeTypes; + private final Iterator iter; + private long position; + + protected NodeTypes( List nodeTypes ) { + this.nodeTypes = nodeTypes; + this.iter = nodeTypes.iterator(); + this.position = 0L; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.NodeTypeIterator#nextNodeType() + */ + @Override + public javax.jcr.nodetype.NodeType nextNodeType() { + NodeType next = iter.next(); + ++position; + return next; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.RangeIterator#getPosition() + */ + @Override + public long getPosition() { + return position; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.RangeIterator#getSize() + */ + @Override + public long getSize() { + return nodeTypes.size(); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.RangeIterator#skip(long) + */ + @Override + public void skip( long skipNum ) { + for (long i = 0; i != skipNum; ++i) { + if (!hasNext()) return; + nextNodeType(); + } + } + + /** + * {@inheritDoc} + * + * @see java.util.Iterator#hasNext() + */ + @Override + public boolean hasNext() { + return iter.hasNext(); + } + + /** + * {@inheritDoc} + * + * @see java.util.Iterator#next() + */ + @Override + public Object next() { + return nextNodeType(); + } + + /** + * {@inheritDoc} + * + * @see java.util.Iterator#remove() + */ + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + } - + } Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/PropertyDefinition.java new file mode 100644 =================================================================== --- /dev/null (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/domain/PropertyDefinition.java (working copy) @@ -0,0 +1,562 @@ +/* + * ModeShape (http://www.modeshape.org) + * 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. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * 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. + * + * ModeShape 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 software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.web.jcr.rest.client.domain; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; +import javax.jcr.Binary; +import javax.jcr.PropertyType; +import javax.jcr.RepositoryException; +import javax.jcr.Value; +import javax.jcr.ValueFormatException; +import javax.jcr.version.OnParentVersionAction; +import net.jcip.annotations.Immutable; +import org.modeshape.web.jcr.rest.client.RestClientI18n; + +/** + * An immutable representation of a JCR PropertyDefinition. + */ +@Immutable +public class PropertyDefinition extends ItemDefinition implements javax.jcr.nodetype.PropertyDefinition { + + private static final String DATE_PATTERN1 = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private static final String DATE_PATTERN2 = "yyyy-MM-dd'T'HH:mm:ss.SSSz"; + private static final String DATE_PATTERN3 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + + public static Calendar parseDate( String dateString ) throws ParseException { + try { + Date date = new SimpleDateFormat(DATE_PATTERN1).parse(dateString); + Calendar result = Calendar.getInstance(); + result.setTime(date); + return result; + } catch (ParseException t) { + try { + // JCR allows the time zone to use ':' between hours and minutes, but this is not handled by SimpleDateFormat, + // so remove the ':' in the time zone ... + dateString = dateString.replaceAll("([.]\\d{1,3}[+-]?\\d{1,2})[:](\\d{1,2})$", "$1$2"); + Date date = new SimpleDateFormat(DATE_PATTERN2).parse(dateString); + Calendar result = Calendar.getInstance(); + result.setTime(date); + return result; + } catch (ParseException t2) { + try { + Date date = new SimpleDateFormat(DATE_PATTERN3).parse(dateString); + Calendar result = Calendar.getInstance(); + result.setTime(date); + result.setTimeZone(TimeZone.getTimeZone("UTC")); + return result; + } catch (ParseException t3) { + throw t; + } + } + } + } + + private final Id id; + private final List queryOps; + private final List defaultValues; + private final List valueConstraints; + private final boolean isFullTextSearchable; + private final boolean isQueryOrderable; + + public PropertyDefinition( String declaringNodeTypeName, + String name, + int requiredType, + boolean isAutoCreated, + boolean isMandatory, + boolean isProtected, + boolean isFullTextSearchable, + boolean isMultiple, + boolean isQueryOrderable, + int onParentVersion, + List defaultValues, + List valueConstraints, + List availableQueryOperations, + Map nodeTypes ) { + super(declaringNodeTypeName, isAutoCreated, isMandatory, isProtected, onParentVersion, nodeTypes); + this.id = new Id(name, isMultiple, requiredType); + this.isFullTextSearchable = isFullTextSearchable; + this.isQueryOrderable = isQueryOrderable; + this.defaultValues = defaultValues != null ? defaultValues : Collections.emptyList(); + this.valueConstraints = valueConstraints != null ? valueConstraints : Collections.emptyList(); + this.queryOps = availableQueryOperations != null ? availableQueryOperations : Collections.emptyList(); + } + + /** + * @return id + */ + protected Id id() { + return id; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.ItemDefinition#getName() + */ + @Override + public String getName() { + return id.name; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#getAvailableQueryOperators() + */ + @Override + public String[] getAvailableQueryOperators() { + return toArray(queryOps); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#getDefaultValues() + */ + @Override + public Value[] getDefaultValues() { + if (defaultValues == null || defaultValues.isEmpty()) return new Value[0]; + int numValues = defaultValues.size(); + int i = 0; + Value[] result = new Value[numValues]; + for (String value : defaultValues) { + result[i++] = new StringValue(value); + } + return result; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#getRequiredType() + */ + @Override + public int getRequiredType() { + return id.requiredType; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#getValueConstraints() + */ + @Override + public String[] getValueConstraints() { + return toArray(valueConstraints); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#isFullTextSearchable() + */ + @Override + public boolean isFullTextSearchable() { + return isFullTextSearchable; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#isMultiple() + */ + @Override + public boolean isMultiple() { + return id.isMultiple; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.nodetype.PropertyDefinition#isQueryOrderable() + */ + @Override + public boolean isQueryOrderable() { + return isQueryOrderable; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + return id.hashCode(); + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals( Object obj ) { + if (obj == this) return true; + if (obj instanceof PropertyDefinition) { + PropertyDefinition that = (PropertyDefinition)obj; + return this.id.equals(that.id); + } + return false; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(" - "); + sb.append(id.name); + sb.append(" ("); + sb.append(PropertyType.nameFromValue(id.requiredType)); + sb.append(')'); + if (getDefaultValues().length != 0) { + sb.append(" = "); + boolean first = true; + for (Value defaultValue : getDefaultValues()) { + if (defaultValue == null) continue; + if (first) first = false; + else sb.append(','); + sb.append(defaultValue); + } + } + if (isAutoCreated()) sb.append(" autocreated"); + if (isMandatory()) sb.append(" mandatory"); + if (!isFullTextSearchable()) sb.append(" nofulltext"); + if (!isQueryOrderable()) sb.append(" noqueryorder"); + if (isMultiple()) sb.append(" multiple"); + if (isProtected()) sb.append(" protected"); + sb.append(' ').append(OnParentVersionAction.nameFromValue(getOnParentVersion())); + if (getAvailableQueryOperators().length != 0) { + sb.append(" queryops "); + boolean first = true; + for (String constraint : getAvailableQueryOperators()) { + if (constraint == null) continue; + if (first) first = false; + else sb.append(','); + sb.append('\''); + sb.append(constraint); + sb.append('\''); + } + } + if (getValueConstraints().length != 0) { + sb.append(" < "); + boolean first = true; + for (String constraint : getValueConstraints()) { + if (constraint == null) continue; + if (first) first = false; + else sb.append(','); + sb.append(constraint); + } + } + return sb.toString(); + } + + protected class StringValue implements Value { + + private final String value; + + protected StringValue( String value ) { + this.value = value; + assert this.value != null; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getBoolean() + */ + @Override + public boolean getBoolean() throws ValueFormatException, RepositoryException { + if (value.equals(Boolean.TRUE.toString())) return true; + if (value.equals(Boolean.FALSE.toString())) return true; + String lower = value.toLowerCase(); + if (lower.equals(Boolean.TRUE.toString())) return true; + if (lower.equals(Boolean.FALSE.toString())) return true; + throw new ValueFormatException(); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getDate() + */ + @Override + public Calendar getDate() throws ValueFormatException, RepositoryException { + try { + return parseDate(value); + } catch (ParseException e) { + String from = PropertyType.nameFromValue(getType()); + String to = PropertyType.nameFromValue(PropertyType.LONG); + throw new ValueFormatException(RestClientI18n.unableToConvertValue.text(value, from, to), e); + } + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getDecimal() + */ + @Override + public BigDecimal getDecimal() throws ValueFormatException, RepositoryException { + try { + if (getRequiredType() == PropertyType.DATE) { + return new BigDecimal(getDate().getTime().getTime()); + } + return new BigDecimal(value); + } catch (NumberFormatException t) { + String from = PropertyType.nameFromValue(getType()); + String to = PropertyType.nameFromValue(PropertyType.DECIMAL); + throw new ValueFormatException(RestClientI18n.unableToConvertValue.text(value, from, to), t); + } + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getDouble() + */ + @Override + public double getDouble() throws ValueFormatException, RepositoryException { + try { + if (getRequiredType() == PropertyType.DATE) { + return getDate().getTime().getTime(); + } + return Double.parseDouble(value); + } catch (NumberFormatException t) { + String from = PropertyType.nameFromValue(getType()); + String to = PropertyType.nameFromValue(PropertyType.DOUBLE); + throw new ValueFormatException(RestClientI18n.unableToConvertValue.text(value, from, to), t); + } + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getLong() + */ + @Override + public long getLong() throws ValueFormatException, RepositoryException { + try { + if (getRequiredType() == PropertyType.DATE) { + return getDate().getTime().getTime(); + } + return Long.parseLong(value); + } catch (NumberFormatException t) { + String from = PropertyType.nameFromValue(getType()); + String to = PropertyType.nameFromValue(PropertyType.LONG); + throw new ValueFormatException(RestClientI18n.unableToConvertValue.text(value, from, to), t); + } + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getStream() + */ + @Override + public InputStream getStream() throws RepositoryException { + return getBinary().getStream(); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getString() + */ + @Override + public String getString() { + return value; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getType() + */ + @Override + public int getType() { + int type = getRequiredType(); + return type == PropertyType.UNDEFINED ? PropertyType.STRING : type; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Value#getBinary() + */ + @Override + public Binary getBinary() { + final byte[] bytes = value.getBytes(); + return new Binary() { + /** + * {@inheritDoc} + * + * @see javax.jcr.Binary#dispose() + */ + @Override + public void dispose() { + // do nothing + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Binary#getSize() + */ + @Override + public long getSize() { + return bytes.length; + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Binary#getStream() + */ + @Override + public InputStream getStream() { + return new ByteArrayInputStream(bytes); + } + + /** + * {@inheritDoc} + * + * @see javax.jcr.Binary#read(byte[], long) + */ + @Override + public int read( byte[] b, + long position ) throws IOException { + if (getSize() <= position) return -1; + InputStream stream = null; + IOException error = null; + try { + stream = getStream(); + // Read/skip the next 'position' bytes ... + long skip = position; + while (skip > 0) { + long skipped = stream.skip(skip); + if (skipped <= 0) return -1; + skip -= skipped; + } + return stream.read(b); + } catch (IOException e) { + error = e; + throw e; + } finally { + if (stream != null) { + try { + stream.close(); + } catch (RuntimeException t) { + // Only throw if we've not already thrown an exception ... + if (error == null) throw t; + } catch (IOException t) { + // Only throw if we've not already thrown an exception ... + if (error == null) throw t; + } + } + } + } + }; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return value; + } + } + + protected static class Id { + protected final String name; + protected final boolean isMultiple; + protected final int requiredType; + + protected Id( String name, + boolean isMultiple, + int requiredType ) { + this.name = name; + this.isMultiple = isMultiple; + this.requiredType = requiredType; + assert this.name != null; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + return name.hashCode(); + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals( Object obj ) { + if (obj == this) return true; + if (obj instanceof Id) { + Id that = (Id)obj; + if (this.isMultiple != that.isMultiple) return false; + if (this.requiredType != that.requiredType) return false; + if (!this.name.equals(that.name)) return false; + return true; + } + return false; + } + + /** + * {@inheritDoc} + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return name + "(" + PropertyType.nameFromValue(requiredType) + ")" + (isMultiple ? '*' : '1'); + } + } + +} Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/json/JsonRestClient.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/json/JsonRestClient.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/json/JsonRestClient.java (working copy) @@ -43,7 +43,6 @@ import org.modeshape.web.jcr.rest.client.IRestClient; import org.modeshape.web.jcr.rest.client.RestClientI18n; import org.modeshape.web.jcr.rest.client.Status; import org.modeshape.web.jcr.rest.client.Status.Severity; -import org.modeshape.web.jcr.rest.client.domain.NodeType; import org.modeshape.web.jcr.rest.client.domain.QueryRow; import org.modeshape.web.jcr.rest.client.domain.Repository; import org.modeshape.web.jcr.rest.client.domain.Server; @@ -230,17 +229,14 @@ public final class JsonRestClient implements IRestClient { /** * {@inheritDoc} * - * @see org.modeshape.web.jcr.rest.client.IRestClient#getNodeTypes(org.modeshape.web.jcr.rest.client.domain.Workspace, - * java.lang.String, java.lang.String) + * @see org.modeshape.web.jcr.rest.client.IRestClient#getNodeTypes(org.modeshape.web.jcr.rest.client.domain.Workspace) */ @Override - public Collection getNodeTypes( Workspace workspace, - String relativePath, - String nodeDepth ) throws Exception { + public Map getNodeTypes( Workspace workspace ) throws Exception { assert workspace != null; - LOGGER.trace("getNodeTypes: workspace={0}, relativePath{1}, depth{2}", workspace, relativePath, nodeDepth); + LOGGER.trace("getNodeTypes: workspace={0}", workspace); - NodeTypeNode nodetypeNode = new NodeTypeNode(workspace, relativePath, nodeDepth); + NodeTypeNode nodetypeNode = new NodeTypeNode(workspace); HttpClientConnection connection = connect(workspace.getServer(), nodetypeNode.getUrl(), RequestMethod.GET); try { @@ -265,41 +261,6 @@ public final class JsonRestClient implements IRestClient { /** * {@inheritDoc} * - * @see org.modeshape.web.jcr.rest.client.IRestClient#getNodeType(Workspace, java.lang.String, java.lang.String) - */ - @Override - public NodeType getNodeType( Workspace workspace, - String relativePath, - String nodeDepth ) throws Exception { - assert workspace != null; - assert relativePath != null; - LOGGER.trace("getNodeType: workspace={0}, relativePath={1}", workspace, relativePath); - - NodeTypeNode nodetypeNode = new NodeTypeNode(workspace, relativePath, nodeDepth); - HttpClientConnection connection = connect(workspace.getServer(), nodetypeNode.getUrl(), RequestMethod.GET); - - try { - int responseCode = connection.getResponseCode(); - - if (responseCode == HttpURLConnection.HTTP_OK) { - return nodetypeNode.getNodeType(connection.read()); - } - - // not a good response code - LOGGER.error(RestClientI18n.connectionErrorMsg, responseCode, "getNodeType"); - String msg = RestClientI18n.getNodeTypeFailedMsg.text(relativePath, nodetypeNode.getUrl(), responseCode); - throw new RuntimeException(msg); - } finally { - if (connection != null) { - LOGGER.trace("getNodeTypes: leaving"); - connection.disconnect(); - } - } - } - - /** - * {@inheritDoc} - * * @see org.modeshape.web.jcr.rest.client.IRestClient#getUrl(java.io.File, java.lang.String, * org.modeshape.web.jcr.rest.client.domain.Workspace) */ Index: web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/json/NodeTypeNode.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/json/NodeTypeNode.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/java/org/modeshape/web/jcr/rest/client/json/NodeTypeNode.java (working copy) @@ -24,88 +24,111 @@ package org.modeshape.web.jcr.rest.client.json; import java.net.URL; -import java.util.Collection; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Set; - +import javax.jcr.PropertyType; +import javax.jcr.version.OnParentVersionAction; import net.jcip.annotations.Immutable; - import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONObject; import org.modeshape.common.util.CheckArg; +import org.modeshape.web.jcr.rest.client.domain.ChildNodeDefinition; import org.modeshape.web.jcr.rest.client.domain.NodeType; +import org.modeshape.web.jcr.rest.client.domain.PropertyDefinition; import org.modeshape.web.jcr.rest.client.domain.Workspace; /** - * The NodeTypeNode class is responsible for knowing how to obtain a NodeType based - * on the Workspace. - *
- * - * An example URL to obtain all the node types would look like: - *
- * {context root}/{repository name}/{workspace name}/items/jcr:system/jcr:nodeTypes" - *
- * And an example url to obtain a specific node type would look like: - *
- * {context root}/{repository name}/{workspace name}/items/jcr:system/jcr:nodeTypes/{node type name} - * - *
- * A Node Type will not be created if: - *
  • jcr:isMixin is true
  • - *
  • jcr:multiple is true
  • + * The NodeTypeNode class is responsible for knowing how to obtain a NodeType based on the Workspace.
    + * An example URL to obtain all the node types would look like:
    + * {context root}/{repository name}/{workspace name}/items/jcr:system/jcr:nodeTypes"
    + * And an example url to obtain a specific node type would look like:
    + * {context root}/{repository name}/{workspace name}/items/jcr:system/jcr:nodeTypes/{node type name}
    + * A Node Type will not be created if:
  • jcr:isMixin is true
  • jcr:multiple is true
  • */ @Immutable public final class NodeTypeNode extends JsonNode { - + + protected static final String NODE_TYPES_PATH = "jcr:system/jcr:nodeTypes"; + protected static final int NODE_TYPE_DEPTH = 5; + private static final Map PROPERTY_TYPES_BY_LOWERCASE_NAME; + + static { + Map types = new HashMap(); + registerType(types, PropertyType.BINARY); + registerType(types, PropertyType.BOOLEAN); + registerType(types, PropertyType.DATE); + registerType(types, PropertyType.DECIMAL); + registerType(types, PropertyType.DOUBLE); + registerType(types, PropertyType.LONG); + registerType(types, PropertyType.NAME); + registerType(types, PropertyType.PATH); + registerType(types, PropertyType.REFERENCE); + registerType(types, PropertyType.STRING); + registerType(types, PropertyType.UNDEFINED); + registerType(types, PropertyType.URI); + registerType(types, PropertyType.WEAKREFERENCE); + PROPERTY_TYPES_BY_LOWERCASE_NAME = Collections.unmodifiableMap(types); + } + + private static void registerType( Map typesByLowerCaseName, + int propertyType ) { + String name = PropertyType.nameFromValue(propertyType); + typesByLowerCaseName.put(name.toLowerCase(), propertyType); + } + // =========================================================================================================================== // Fields // =========================================================================================================================== - /** - * EXCLUDE_TYEPS are those node types that are to be excluded from the inclusion - * in the node types returned. - */ - private static Set EXCLUDE_TYPES = new HashSet() ; + /** + * EXCLUDE_TYEPS are those node types that are to be excluded from the inclusion in the node types returned. + */ + private static Set EXCLUDE_TYPES = Collections.singleton("mode:defined"); /** * The workspace from where the node type is being obtained. */ private final Workspace workspace; - - private final String depth; - - private MapnodeTypeMap = new HashMap(); - - { - EXCLUDE_TYPES.add("mode:defined"); - EXCLUDE_TYPES.add("*"); - } - + + private Map nodeTypeMap = new HashMap(); + // =========================================================================================================================== // Constructors // =========================================================================================================================== /** * Use this constructor if wanting all node types for a workspace + * * @param workspace the workspace being used (never null) - * @param relative_path is the relative location after the workspace - * @param nodeDepth , nullable, can specify the depth of the node types to be returned * @throws Exception if there is a problem creating the folder node */ - public NodeTypeNode( Workspace workspace, String relative_path, String nodeDepth) throws Exception { - super(relative_path); + public NodeTypeNode( Workspace workspace ) throws Exception { + super(NODE_TYPES_PATH); - assert workspace != null; - + assert workspace != null; this.workspace = workspace; - this.depth = nodeDepth; - } - + } + + /** + * Use this constructor if wanting all node types for a workspace + * + * @param workspace the workspace being used (never null) + * @param nodeTypeName the node type name; may not be null + * @throws Exception if there is a problem creating the folder node + */ + public NodeTypeNode( Workspace workspace, + String nodeTypeName ) throws Exception { + super(NODE_TYPES_PATH + "/" + nodeTypeName); + + assert workspace != null; + this.workspace = workspace; + } + // =========================================================================================================================== // Methods // =========================================================================================================================== @@ -128,257 +151,236 @@ public final class NodeTypeNode extends JsonNode { public URL getUrl() throws Exception { WorkspaceNode workspaceNode = new WorkspaceNode(this.workspace); StringBuilder url = new StringBuilder(workspaceNode.getUrl().toString()); - + // make sure path starts with a '/' String path = getPath(); - - if (!path.startsWith("/")) { - path = '/' + path; - } - - // make sure path does NOT end with a '/' - if (path.endsWith("/")) { - path = path.substring(0, path.length() - 1); - } + if (!path.startsWith("/")) path = '/' + path; + path = path.replaceAll("[/]+$", ""); // path should not end in with '/' // path needs to be encoded - url.append(JsonUtils.encode(path)); - - if (this.depth != null) { - url.append(this.depth); - } + url.append(JsonUtils.encode(path)); + url.append("?depth=").append(NODE_TYPE_DEPTH); return new URL(url.toString()); } - + /** * @param jsonResponse the HTTP connection JSON response (never null) containing the NodeTypes * @return the node types for this workspace (never null) * @throws Exception if there is a problem obtaining the node types */ - public Collection getNodeTypes( String jsonResponse ) throws Exception { + public Map getNodeTypes( String jsonResponse ) throws Exception { CheckArg.isNotNull(jsonResponse, "jsonResponse"); + Map nodeTypesByName = new HashMap(); JSONObject body = new JSONObject(jsonResponse); - NodeType parent = createNodeType(null, body, null); - processBody(body, parent); - return nodeTypeMap.values(); - } - - @SuppressWarnings("unchecked") - protected void processBody(JSONObject body, NodeType parentNodeType) throws Exception { - NodeType parent = parentNodeType; - - if (body.has("children")) { - Object obj = body.get("children"); - - if (obj instanceof JSONObject) { - - JSONObject children = (JSONObject) obj; - for (Iterator itr = children.keys(); itr.hasNext();) { - String key = JsonUtils.decode(itr.next()); - Object child = children.get(key); - if (child != null) { - - if (child instanceof JSONObject) { - JSONObject jsonchild = (JSONObject) child; - createNodeType(key, jsonchild, parent); - - } else if (child instanceof JSONArray) { - JSONArray childarray = (JSONArray) child; - for (int idx=0; idx itr = children.keys(); itr.hasNext();) { + String key = JsonUtils.decode(itr.next().toString()); + Object child = children.get(key); + if (child != null) { + // and that means that each child is a JSONObject ... + createNodeType(key, (JSONObject)child, nodeTypesByName); + } + } } - - Object cobj = childNode.get("properties"); - assert cobj != null; - jsonProperties = (JSONObject) cobj; - String nodeName = childkey; - - // determine if the node should be excluded - - // exclude if its a multi-valued definition - if (jsonProperties.has("jcr:multiple")) { - String isMultipleValue = jsonProperties.getString("jcr:multiple"); - // do not add nodetypes where it represents a multivalue - if (isMultipleValue!= null && isMultipleValue.equalsIgnoreCase("true")) { - return null; - } - } - - // exclude if the definition is a mixin - if (jsonProperties.has("jcr:isMixin")) { - String isMixin = jsonProperties.getString("jcr:isMixin"); - // do not add mixins - if (isMixin!= null && isMixin.equalsIgnoreCase("true")) { - return null; - } - } - - boolean propDefn = false; - if (childkey == null) { - if (jsonProperties.has("jcr:nodeTypeName")) { - nodeName = jsonProperties.getString("jcr:nodeTypeName"); - } else if (jsonProperties.has("jcr:name")) { - nodeName = jsonProperties.getString("jcr:name"); - } else { - return null; - } - } else if (childkey.startsWith("jcr:propertyDefinition")) { - if (jsonProperties.has("jcr:name")) { - nodeName = jsonProperties.getString("jcr:name"); - propDefn = true; - } else { - // exlude when no jcr:name is present - return null; - } - } else if (childkey.startsWith("jcr:childNodeDefinition")) { - // exclude childNodeDefinitions - return null; - - } - - CheckArg.isNotNull(nodeName, "nodeName ends up in null state for childkey: " + childkey); - - if (EXCLUDE_TYPES.contains(nodeName)) return null; - - Set superTypes = new HashSet(3); - - Properties properties = new Properties(); - for (Iterator itr = jsonProperties.keys(); itr.hasNext();) { - String key = JsonUtils.decode(itr.next()); - Object obj = jsonProperties.get(key); - if (obj != null) { - if (obj instanceof JSONObject) { - throw new Exception("Program Error: didnt handle object type: " + obj.getClass().getName()); - } - - if (key.equalsIgnoreCase("jcr:supertypes")) { - - JSONArray superArray = jsonProperties.getJSONArray(key); - - for (int i=0; i it=superTypes.iterator(); it.hasNext();) { - childnodeType.addSuperNodeType(it.next()); + + // Convert to a map of JCR node types ... + Map result = new HashMap(); + for (NodeType nodeType : nodeTypesByName.values()) { + result.put(nodeType.getName(), nodeType); } - - this.nodeTypeMap.put(childnodeType.getName(), childnodeType); - - if (childNode != null) { - processBody(childNode, childnodeType); - } + nodeTypeMap = result; + return nodeTypeMap; + } + + protected void createNodeType( String name, + JSONObject body, + Map nodeTypes ) throws Exception { + JSONObject props = (JSONObject)body.get("properties"); - return childnodeType; + // [nt:nodeType] + // - jcr:nodeTypeName (name) mandatory protected copy + // - jcr:supertypes (name) multiple protected copy + // - jcr:isAbstract (boolean) mandatory protected copy + // - jcr:isMixin (boolean) mandatory protected copy + // - jcr:isQueryable (boolean) mandatory protected copy + // - jcr:hasOrderableChildNodes (boolean) mandatory protected copy + // - jcr:primaryItemName (name) protected copy + // + jcr:propertyDefinition (nt:propertyDefinition) = nt:propertyDefinition sns protected copy + // + jcr:childNodeDefinition (nt:childNodeDefinition) = nt:childNodeDefinition sns protected copy + + String nodeTypeName = valueFrom(props, "jcr:nodeTypeName"); + if (EXCLUDE_TYPES.contains(nodeTypeName)) return; + boolean isMixin = valueFrom(props, "jcr:isMixin", false); + boolean isAbstract = valueFrom(props, "jcr:isAbstract", false); + boolean orderableChildren = valueFrom(props, "jcr:hasOrderableChildNodes", false); + boolean queryable = valueFrom(props, "jcr:isQueryable", false); + String primaryItemName = valueFrom(props, "jcr:primaryItemName"); + List superTypeNames = valuesFrom(props, "jcr:supertypes"); + superTypeNames.removeAll(EXCLUDE_TYPES); + + List propDefns = new ArrayList(); + List childDefns = new ArrayList(); + + // Process the children (the property definition and child node definition objects) ... + if (body.has("children")) { + Object obj = body.get("children"); + JSONObject children = (JSONObject)obj; + for (Iterator itr = children.keys(); itr.hasNext();) { + String key = JsonUtils.decode(itr.next().toString()); + Object child = children.get(key); + if (child != null) { + // and that means that each child is a JSONObject ... + if (key.startsWith("jcr:propertyDefinition")) { // may contain a SNS index + PropertyDefinition defn = createPropertyDefinition(key, (JSONObject)child, nodeTypeName, nodeTypes); + if (defn != null) propDefns.add(defn); + } else if (key.startsWith("jcr:childNodeDefinition")) { // may contain a SNS index + ChildNodeDefinition defn = createChildNodeDefinition(key, (JSONObject)child, nodeTypeName, nodeTypes); + if (defn != null) childDefns.add(defn); + } + } + } + } + // Create the node, which is automatically added to the map ... + new NodeType(nodeTypeName, isMixin, isAbstract, superTypeNames, propDefns, childDefns, primaryItemName, + orderableChildren, queryable, nodeTypes); } - - /** - * @param jsonResponse the HTTP connection JSON response (never null) containing the NodeTypes - * @return the node types for this workspace (never null) - * @throws Exception if there is a problem obtaining the node types - */ - @SuppressWarnings("unchecked") - public NodeType getNodeType( String jsonResponse ) throws Exception { - CheckArg.isNotNull(jsonResponse, "jsonResponse"); - JSONObject jsonChild = new JSONObject(jsonResponse); - - NodeType nodetype = createNodeType(null, jsonChild, null); + protected PropertyDefinition createPropertyDefinition( String defnName, + JSONObject body, + String declaringNodeTypeName, + Map nodeTypes ) throws Exception { + JSONObject props = (JSONObject)body.get("properties"); + + // [nt:propertyDefinition] + // - jcr:name (name) protected + // - jcr:autoCreated (boolean) mandatory protected + // - jcr:mandatory (boolean) mandatory protected + // - jcr:isFullTextSearchable (boolean) mandatory protected + // - jcr:isQueryOrderable (boolean) mandatory protected + // - jcr:onParentVersion (string) mandatory protected + // < 'COPY', 'VERSION', 'INITIALIZE', 'COMPUTE', + // 'IGNORE', 'ABORT' + // - jcr:protected (boolean) mandatory protected + // - jcr:requiredType (string) mandatory protected + // < 'STRING', 'BINARY', 'LONG', 'DOUBLE', 'BOOLEAN', + // 'DATE', 'NAME', 'PATH', 'REFERENCE', 'UNDEFINED' + // - jcr:valueConstraints (string) multiple protected + // - jcr:availableQueryOperators (name) mandatory multiple protected + // - jcr:defaultValues (undefined) multiple protected + // - jcr:multiple (boolean) mandatory protected + + String name = valueFrom(props, "jcr:name", "*"); + int requiredType = typeValueFrom(props, "jcr:requiredType", PropertyType.UNDEFINED); + boolean isAutoCreated = valueFrom(props, "jcr:autoCreated", false); + boolean isMandatory = valueFrom(props, "jcr:mandatory", false); + boolean isProtected = valueFrom(props, "jcr:protected", false); + boolean isFullTextSearchable = valueFrom(props, "jcr:isFullTextSearchable", false); + boolean isMultiple = valueFrom(props, "jcr:multiple", false); + boolean isQueryOrderable = valueFrom(props, "jcr:isQueryOrderable", false); + int onParentVersion = OnParentVersionAction.valueFromName(props.getString("jcr:onParentVersion")); + List defaultValues = valuesFrom(props, "jcr:defaultValues"); + List valueConstraints = valuesFrom(props, "jcr:valueConstraints"); + List availableQueryOperations = valuesFrom(props, "jcr:availableQueryOperators"); - return nodetype; + return new PropertyDefinition(declaringNodeTypeName, name, requiredType, isAutoCreated, isMandatory, isProtected, + isFullTextSearchable, isMultiple, isQueryOrderable, onParentVersion, defaultValues, + valueConstraints, availableQueryOperations, nodeTypes); } - - /** - * The Super Type weak reference is used because there's no guaranteed order for loading - * all the node types, therefore, a referenced super type might not have been loaded - * at the time of loading its child. Therefore, the findSuperTypeMap - * is used to find the super type after the fact. - * - */ - class WeakSuperTypeReference extends NodeType { - private MapfindSuperTypeMap = null; - - public WeakSuperTypeReference( String name, - Workspace workspace, - Properties properties, - MapnodeTypeMap) { - super(name, workspace, properties); - findSuperTypeMap = nodeTypeMap; - } - - @SuppressWarnings("unchecked") - @Override - public List getPropertyDefinitions() { - NodeType superType = findSuperTypeMap.get(getName()); - return (List) (superType != null ? superType.getPropertyDefinitions() : Collections.emptyList()); + + protected ChildNodeDefinition createChildNodeDefinition( String defnName, + JSONObject body, + String declaringNodeTypeName, + Map nodeTypes ) throws Exception { + JSONObject props = (JSONObject)body.get("properties"); + + // [nt:childNodeDefinition] + // - jcr:name (name) protected + // - jcr:autoCreated (boolean) mandatory protected + // - jcr:mandatory (boolean) mandatory protected + // - jcr:onParentVersion (string) mandatory protected + // < 'COPY', 'VERSION', 'INITIALIZE', 'COMPUTE', + // 'IGNORE', 'ABORT' + // - jcr:protected (boolean) mandatory protected + // - jcr:requiredPrimaryTypes (name) = 'nt:base' mandatory protected multiple + // - jcr:defaultPrimaryType (name) protected + // - jcr:sameNameSiblings (boolean) mandatory protected + + String name = valueFrom(props, "jcr:name", "*"); + boolean isAutoCreated = valueFrom(props, "jcr:autoCreated", false); + boolean isMandatory = valueFrom(props, "jcr:mandatory", false); + boolean isProtected = valueFrom(props, "jcr:protected", false); + boolean allowsSns = valueFrom(props, "jcr:sameNameSiblings", false); + Set requiredTypes = new HashSet(valuesFrom(props, "jcr:requiredPrimaryTypes")); + String defaultPrimaryType = valueFrom(props, "jcr:defaultPrimaryType"); + int onParentVersion = OnParentVersionAction.valueFromName(props.getString("jcr:onParentVersion")); + + return new ChildNodeDefinition(declaringNodeTypeName, name, requiredTypes, isAutoCreated, isMandatory, isProtected, + allowsSns, onParentVersion, defaultPrimaryType, nodeTypes); + } + + protected List valuesFrom( JSONObject properties, + String name ) throws Exception { + if (!properties.has(name)) { + // Just an empty collection ... + return Collections.emptyList(); } - - @SuppressWarnings("unchecked") - @Override - public List getChildNodeDefinitions() { - NodeType superType = findSuperTypeMap.get(getName()); - return (List) (superType != null ? superType.getChildNodeDefinitions() : Collections.emptyList()); + Object prop = properties.get(name); + if (prop instanceof JSONArray) { + // There are multple values ... + JSONArray superArray = (JSONArray)prop; + int length = superArray.length(); + if (length == 0) return Collections.emptyList(); + List result = new ArrayList(length); + for (int i = 0; i < length; i++) { + String value = superArray.getString(i); + result.add(value); + } + return result; } - + // Just a single value ... + return Collections.singletonList(prop.toString()); } + protected boolean valueFrom( JSONObject properties, + String name, + boolean defaultValue ) throws Exception { + if (!properties.has(name)) { + return defaultValue; + } + return properties.getBoolean(name); + } + + protected String valueFrom( JSONObject properties, + String name ) throws Exception { + return valueFrom(properties, name, (String)null); + } + + protected String valueFrom( JSONObject properties, + String name, + String defaultValue ) throws Exception { + if (!properties.has(name)) { + return defaultValue; + } + return properties.getString(name); + } + + protected int typeValueFrom( JSONObject properties, + String name, + int defaultType ) throws Exception { + if (!properties.has(name)) return defaultType; + String typeName = properties.getString(name); + Integer result = PROPERTY_TYPES_BY_LOWERCASE_NAME.get(typeName.toLowerCase()); + return result != null ? result.intValue() : defaultType; + } } Index: web/modeshape-web-jcr-rest-client/src/main/resources/org/modeshape/web/jcr/rest/client/RestClientI18n.properties =================================================================== --- web/modeshape-web-jcr-rest-client/src/main/resources/org/modeshape/web/jcr/rest/client/RestClientI18n.properties (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/main/resources/org/modeshape/web/jcr/rest/client/RestClientI18n.properties (working copy) @@ -31,7 +31,10 @@ unknownHttpRequestMethodMsg = The "{0}" HTTP request method is not valid. workspaceShortDescription = ModeShape Workspace - Name: {0}, Repository: {1} -nodeTypeShortDescription = ModeShape NodeType: {0}, Server: {1} +nodeTypeShortDescription = Node type: {0} +propertyDefinitionShortDescription = Property definition: {0} +childNodeDefinitionShortDescription = Child node definition: {0} +unableToConvertValue = Unable to convert '{0}' from type {1} to {2} # JsonRestClient messages Index: web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/MockRestClient.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/MockRestClient.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/MockRestClient.java (working copy) @@ -28,7 +28,7 @@ import java.net.URL; import java.util.Collection; import java.util.List; import java.util.Map; -import org.modeshape.web.jcr.rest.client.domain.NodeType; +import javax.jcr.nodetype.NodeType; import org.modeshape.web.jcr.rest.client.domain.QueryRow; import org.modeshape.web.jcr.rest.client.domain.Repository; import org.modeshape.web.jcr.rest.client.domain.Server; @@ -142,27 +142,10 @@ public final class MockRestClient implements IRestClient { /** * {@inheritDoc} * - * @see org.modeshape.web.jcr.rest.client.IRestClient#getNodeTypes(org.modeshape.web.jcr.rest.client.domain.Workspace, - * java.lang.String, java.lang.String) + * @see org.modeshape.web.jcr.rest.client.IRestClient#getNodeTypes(org.modeshape.web.jcr.rest.client.domain.Workspace) */ @Override - public Collection getNodeTypes( Workspace workspace, - String relativePath, - String nodeDepth ) throws Exception { + public Map getNodeTypes( Workspace workspace ) throws Exception { return null; } - - /** - * {@inheritDoc} - * - * @see org.modeshape.web.jcr.rest.client.IRestClient#getNodeType(org.modeshape.web.jcr.rest.client.domain.Workspace, - * java.lang.String, java.lang.String) - */ - @Override - public NodeType getNodeType( Workspace workspace, - String relativePath, - String nodeDepth ) throws Exception { - return null; - } - } Index: web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/NodeTypeTest.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/NodeTypeTest.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/NodeTypeTest.java (working copy) @@ -23,13 +23,7 @@ */ package org.modeshape.web.jcr.rest.client.domain; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.hamcrest.core.IsNot.not; -import static org.junit.Assert.assertThat; -import java.util.HashSet; -import java.util.Properties; -import java.util.Set; +import org.junit.Before; import org.junit.Test; /** @@ -37,61 +31,24 @@ import org.junit.Test; */ public final class NodeTypeTest { - // =========================================================================================================================== - // Constants - // =========================================================================================================================== - - private static final String NAME1 = "name1"; - - private static final String NAME2 = "name2"; - - private static final Server SERVER1 = new Server("file:/tmp/temp.txt/resources", "user", "pswd"); - - private static final Repository REPOSITORY1 = new Repository(NAME1, SERVER1); - - private static final Workspace WORKSPACE1 = new Workspace(NAME1, REPOSITORY1); - - private static final Workspace WORKSPACE2 = new Workspace(NAME2, REPOSITORY1); - - private static final NodeType NODETYPE1 = new NodeType(NAME1, WORKSPACE1, new Properties()); - - - - // =========================================================================================================================== - // Tests - // =========================================================================================================================== + @Before + public void beforeEach() { + } @Test public void shouldBeEqualIfHavingSameProperies() { - assertThat(NODETYPE1, equalTo(new NodeType(NODETYPE1.getName(), WORKSPACE1, new Properties()))); } @Test public void shouldHashToSameValueIfEquals() { - Set set = new HashSet(); - set.add(NODETYPE1); - set.add(new NodeType(NODETYPE1.getName(), WORKSPACE1, null)); - assertThat(set.size(), equalTo(1)); - } - - @Test( expected = java.lang.AssertionError.class ) - public void shouldNotAllowNullName() { - new NodeType(null, WORKSPACE1, null); - } - - @Test( expected = java.lang.AssertionError.class ) - public void shouldNotAllowNullWorkspace() { - new NodeType(NAME1, null, null); } @Test public void shouldNotBeEqualIfSameNameButDifferentWorkspace() { - assertThat(NODETYPE1, is(not(equalTo(new NodeType(NODETYPE1.getName(), WORKSPACE2, null))))); } @Test public void shouldNotBeEqualIfSameWorkspaceButDifferentName() { - assertThat(NODETYPE1, is(not(equalTo(new NodeType(NAME2, WORKSPACE1, null))))); } } Index: web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/PropertyDefinitionTest.java new file mode 100644 =================================================================== --- /dev/null (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/PropertyDefinitionTest.java (working copy) @@ -0,0 +1,276 @@ +/* + * ModeShape (http://www.modeshape.org) + * 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. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * 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. + * + * ModeShape 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 software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.web.jcr.rest.client.domain; + +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsNull.nullValue; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.jcr.Binary; +import javax.jcr.PropertyType; +import javax.jcr.RepositoryException; +import javax.jcr.Value; +import javax.jcr.ValueFormatException; +import javax.jcr.version.OnParentVersionAction; +import org.junit.Before; +import org.junit.Test; +import org.modeshape.common.util.IoUtil; + +public class PropertyDefinitionTest { + + private String declaringNodeTypeName; + private String name; + private int requiredType; + private boolean isAutoCreated; + private boolean isMandatory; + private boolean isProtected; + private boolean isFullTextSearchable; + private boolean isMultiple; + private boolean isQueryOrderable; + private int onParentVersion; + private List defaultValues; + private List valueConstraints; + private List availableQueryOperations; + private Map nodeTypes; + private PropertyDefinition defn; + private PropertyDefinition defn2; + + // private PropertyDefinition defn; + + @Before + public void beforeEach() { + declaringNodeTypeName = "my:nodeType"; + nodeTypes = new HashMap(); + name = "my:prop"; + requiredType = PropertyType.DOUBLE; + isAutoCreated = true; + isMandatory = true; + isProtected = true; + isFullTextSearchable = true; + isMultiple = true; + isQueryOrderable = true; + onParentVersion = OnParentVersionAction.COPY; + defaultValues = new ArrayList(); + valueConstraints = new ArrayList(); + availableQueryOperations = new ArrayList(); + } + + @Test + public void shouldCreateInstance() { + createPropertyDefinition(); + } + + @Test + public void shouldCreateWithNullDefaultValueList() { + defaultValues = null; + createPropertyDefinition(); + } + + @Test + public void shouldCreateWithEmptyDefaultValueList() { + defaultValues.clear(); + createPropertyDefinition(); + } + + @Test + public void shouldCreateWithOneDefaultValue() { + defaultValues.add("3"); + createPropertyDefinition(); + } + + @Test + public void shouldCreateWithTwoDefaultValues() { + defaultValues.add("3"); + defaultValues.add("5"); + createPropertyDefinition(); + } + + @Test + public void shouldCreateWithThreeDefaultValues() { + defaultValues.add("3"); + defaultValues.add("5"); + defaultValues.add("8"); + createPropertyDefinition(); + } + + @Test + public void shouldReturnNullDeclaringNodeTypeIfNotFoundInMap() { + nodeTypes.clear(); + defn = createPropertyDefinition(); + assertThat(defn.getDeclaringNodeType(), is(nullValue())); + } + + @Test + public void shouldReturnNullDeclaringNodeTypeIfNoMapIsFound() { + nodeTypes = null; + defn = createPropertyDefinition(); + assertThat(defn.getDeclaringNodeType(), is(nullValue())); + } + + @Test + public void shouldConsiderEqualIfSameNameAndRequiredTypeAndMultiplicity() { + defn = createPropertyDefinition(); + defn2 = createPropertyDefinition(); + assertThat(defn.equals(defn2), is(true)); + } + + @Test + public void shouldConsiderNotEqualIfDifferentName() { + defn = createPropertyDefinition(); + name = "other:name"; + defn2 = createPropertyDefinition(); + assertThat(defn.equals(defn2), is(false)); + } + + @Test + public void shouldConsiderNotEqualIfDifferentRequiredType() { + defn = createPropertyDefinition(); + requiredType = requiredType == PropertyType.PATH ? PropertyType.BOOLEAN : PropertyType.PATH; + defn2 = createPropertyDefinition(); + assertThat(defn.equals(defn2), is(false)); + } + + @Test + public void shouldConsiderNotEqualIfDifferentMultiplicity() { + defn = createPropertyDefinition(); + isMultiple = !isMultiple; + defn2 = createPropertyDefinition(); + assertThat(defn.equals(defn2), is(false)); + } + + @Test + public void shouldAllowConversionOfDefaultValueFromDateToCompatibleTypes() throws Exception { + defaultValues.add("2010-03-22T01:02:03.456Z"); + requiredType = PropertyType.DATE; + defn = createPropertyDefinition(); + assertThat(defn.getDefaultValues()[0].getString(), is("2010-03-22T01:02:03.456Z")); + assertThat(defn.getDefaultValues()[0].getDate(), is(dateFrom("2010-03-22T01:02:03.456Z"))); + assertThat(defn.getDefaultValues()[0].getLong(), is(1269237723456L)); + } + + @SuppressWarnings( "deprecation" ) + @Test + public void shouldAllowConversionOfDefaultValueFromDoubleToCompatibleTypes() throws Exception { + defaultValues.add("8"); + requiredType = PropertyType.DOUBLE; + defn = createPropertyDefinition(); + assertThat(defn.getDefaultValues()[0].getString(), is("8")); + assertThat(defn.getDefaultValues()[0].getDouble(), is(8.0)); + assertThat(defn.getDefaultValues()[0].getLong(), is(8L)); + assertThat(defn.getDefaultValues()[0].getDecimal(), is(new BigDecimal(8))); + assertThat(toString(defn.getDefaultValues()[0].getBinary()), is("8")); + assertThat(toString(defn.getDefaultValues()[0].getStream()), is("8")); + } + + @Test( expected = ValueFormatException.class ) + public void shouldFailToConvertDefaultValueFromDoubleToBoolean() throws Exception { + defaultValues.add("8"); + requiredType = PropertyType.DOUBLE; + defn = createPropertyDefinition(); + defn.getDefaultValues()[0].getBoolean(); + } + + @Test( expected = ValueFormatException.class ) + public void shouldFailToConvertDefaultValueFromDoubleToDate() throws Exception { + defaultValues.add("8"); + requiredType = PropertyType.DOUBLE; + defn = createPropertyDefinition(); + defn.getDefaultValues()[0].getDate(); + } + + @Test + public void shouldParseDate() throws ParseException { + PropertyDefinition.parseDate("2010-03-22T01:02:03.456-0800"); + PropertyDefinition.parseDate("2010-03-22T01:02:03.456-08:00"); + PropertyDefinition.parseDate("2010-03-22T01:02:03.456+0800"); + PropertyDefinition.parseDate("2010-03-22T01:02:03.456+08:00"); + PropertyDefinition.parseDate("2010-03-22T01:02:03.456Z"); + PropertyDefinition.parseDate("2010-03-22T01:02:03.456UTC"); + } + + protected Calendar dateFrom( String dateStr ) throws ParseException { + return PropertyDefinition.parseDate(dateStr); + } + + protected String toString( Binary binary ) throws IOException, RepositoryException { + return toString(binary.getStream()); + } + + protected String toString( InputStream stream ) throws IOException { + return IoUtil.read(stream); + } + + protected PropertyDefinition createPropertyDefinition() { + PropertyDefinition defn = new PropertyDefinition(declaringNodeTypeName, name, requiredType, isAutoCreated, isMandatory, + isProtected, isFullTextSearchable, isMultiple, isQueryOrderable, + onParentVersion, defaultValues, valueConstraints, + availableQueryOperations, nodeTypes); + assertValidDefinition(defn); + return defn; + } + + protected void assertValidDefinition( PropertyDefinition defn ) { + if (defaultValues == null) defaultValues = new ArrayList(); + if (valueConstraints == null) valueConstraints = new ArrayList(); + if (availableQueryOperations == null) availableQueryOperations = new ArrayList(); + assertThat(defn.isAutoCreated(), is(isAutoCreated)); + assertThat(defn.isFullTextSearchable(), is(isFullTextSearchable)); + assertThat(defn.isMandatory(), is(isMandatory)); + assertThat(defn.isMultiple(), is(isMultiple)); + assertThat(defn.isProtected(), is(isProtected)); + assertThat(defn.isQueryOrderable(), is(isQueryOrderable)); + assertThat(defn.getName(), is(name)); + assertThat(defn.getDeclaringNodeTypeName(), is(declaringNodeTypeName)); + assertThat(defn.getAvailableQueryOperators(), is(arrayOf(availableQueryOperations))); + assertThat(defn.getValueConstraints(), is(arrayOf(valueConstraints))); + assertThat(arrayOf(defn.getDefaultValues()), is(arrayOf(defaultValues))); + assertThat(defn.isAutoCreated(), is(isAutoCreated)); + } + + protected String[] arrayOf( Collection values ) { + return values.toArray(new String[values.size()]); + } + + protected String[] arrayOf( Value[] values ) { + String[] result = new String[values.length]; + try { + for (int i = 0; i != values.length; ++i) { + result[i] = values[i].getString(); + } + } catch (RepositoryException e) { + fail(e.getMessage()); + } + return result; + } +} Index: web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/WorkspaceTest.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/WorkspaceTest.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/domain/WorkspaceTest.java (working copy) @@ -24,12 +24,9 @@ package org.modeshape.web.jcr.rest.client.domain; import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.core.IsSame.sameInstance; import static org.junit.Assert.assertThat; -import java.util.HashSet; -import java.util.Properties; -import java.util.Set; +import org.junit.Before; import org.junit.Test; /** @@ -37,61 +34,30 @@ import org.junit.Test; */ public final class WorkspaceTest { - // =========================================================================================================================== - // Constants - // =========================================================================================================================== - private static final String NAME1 = "nt:file"; - private static final String NAME2 = "nt:resource"; - private static final Server SERVER1 = new Server("file:/tmp/temp.txt/resources", "user", "pswd"); - private static final Repository REPOSITORY1 = new Repository(NAME1, SERVER1); - - private static final Workspace WORKSPACE1 = new Workspace(NAME1, REPOSITORY1); - private static final Workspace WORKSPACE2 = new Workspace(NAME2, REPOSITORY1); - - private static final NodeType NODETYPE1 = new NodeType(NAME1, WORKSPACE1, null); - - private static final NodeType NODETYPE2 = new NodeType(NAME1, WORKSPACE1, new Properties()); - - - // =========================================================================================================================== - // Tests - // =========================================================================================================================== - - @Test - public void shouldBeEqualIfHavingSameProperies() { - assertThat(NODETYPE2, equalTo(new NodeType(NAME1, WORKSPACE1, new Properties()))); - } - - @Test - public void shouldHashToSameValueIfEquals() { - Set set = new HashSet(); - set.add(NODETYPE1); - set.add(new NodeType("nt:file", WORKSPACE1, null)); - assertThat(set.size(), equalTo(1)); - } + private Repository repository; + private Workspace workspace1; + private Workspace workspace2; - @Test( expected = java.lang.AssertionError.class ) - public void shouldNotAllowNullName() { - new NodeType(null, WORKSPACE1, new Properties()); - } - - @Test( expected = java.lang.AssertionError.class ) - public void shouldNotAllowNullRepository() { - new NodeType(NAME1, null, null); + @Before + public void beforeEach() { + repository = new Repository(NAME1, SERVER1); + workspace1 = new Workspace(NAME1, repository); + workspace2 = new Workspace(NAME2, repository); } @Test - public void shouldNotBeEqualIfSameNameButDifferentWorkspace() { - assertThat(NODETYPE2, is(not(equalTo(new NodeType(NAME1, WORKSPACE2, new Properties()))))); + public void shouldHaveRepository() { + assertThat(workspace1.getRepository(), is(sameInstance(repository))); + assertThat(workspace2.getRepository(), is(sameInstance(repository))); } @Test - public void shouldNotBeEqualIfSameWorkspaceButDifferentName() { - assertThat(NODETYPE2, is(not(equalTo(new NodeType(NAME2, WORKSPACE1, new Properties()))))); + public void shouldHaveName() { + assertThat(workspace1.getName(), is(NAME1)); + assertThat(workspace2.getName(), is(NAME2)); } - } Index: web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/json/JsonRestClientTest.java =================================================================== --- web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/json/JsonRestClientTest.java (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/json/JsonRestClientTest.java (working copy) @@ -32,13 +32,14 @@ import java.net.URL; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Map; +import javax.jcr.nodetype.NodeType; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.modeshape.web.jcr.rest.client.IJcrConstants; import org.modeshape.web.jcr.rest.client.IRestClient; import org.modeshape.web.jcr.rest.client.Status; -import org.modeshape.web.jcr.rest.client.domain.NodeType; import org.modeshape.web.jcr.rest.client.domain.QueryRow; import org.modeshape.web.jcr.rest.client.domain.Repository; import org.modeshape.web.jcr.rest.client.domain.Server; @@ -107,36 +108,20 @@ public final class JsonRestClientTest { @Test public void shouldGetNodeTypes() throws Exception { Workspace ws = new Workspace(WORKSPACE_NAME, REPOSITORY1); - Collection results = this.restClient.getNodeTypes(ws, "jcr:system", "?depth=5"); + Map nodeTypes = this.restClient.getNodeTypes(ws); + // this is currently the number returned from the default jbossas installation // assertThat(results.size(), is(2)); - for (Iterator it = results.iterator(); it.hasNext();) { + for (Iterator it = nodeTypes.values().iterator(); it.hasNext();) { NodeType nt = it.next(); System.out.println("NODETYPE: " + nt.getName()); - List children = nt.getChildren(); - if (children != null) { - for (Iterator itc = children.iterator(); itc.hasNext();) { - NodeType ntc = itc.next(); - System.out.println("NODETYPECHILD: " + ntc.getName()); - } - } - + System.out.println(" declared supertypes: " + nt.getSupertypes()); + System.out.println(" declared property definitions: " + nt.getDeclaredPropertyDefinitions()); + System.out.println(" declared child node definitions: " + nt.getDeclaredPropertyDefinitions()); } } - // Test is not currently working as a unit test, cause it throws an exception when using the default cargo setup - // but does work when pointed at a local jbossas server - // TODO: determine how to add/setup the local cargo server with cnd files - @Ignore - @Test - public void shouldGetNodeType() throws Exception { - Workspace ws = new Workspace(WORKSPACE_NAME, REPOSITORY1); - NodeType nt = this.restClient.getNodeType(ws, "mode:system/nodeTypes/nt:base", "?depth=2"); - - assertThat(nt, is(notNullValue())); - } - @Test public void shouldGetWorkspaces() throws Exception { Collection workspaces = this.restClient.getWorkspaces(REPOSITORY1); Index: web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/json/NodeTypeNodeTest.java new file mode 100644 =================================================================== --- /dev/null (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/java/org/modeshape/web/jcr/rest/client/json/NodeTypeNodeTest.java (working copy) @@ -0,0 +1,97 @@ +/* + * ModeShape (http://www.modeshape.org) + * 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. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * 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. + * + * ModeShape 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 software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.web.jcr.rest.client.json; + +import java.io.File; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import javax.jcr.nodetype.NodeType; +import org.junit.Before; +import org.junit.Test; +import org.modeshape.common.util.IoUtil; +import org.modeshape.web.jcr.rest.client.domain.Repository; +import org.modeshape.web.jcr.rest.client.domain.Server; +import org.modeshape.web.jcr.rest.client.domain.Workspace; + +public class NodeTypeNodeTest { + + private NodeTypeNode factory; + private Repository repository; + private Workspace workspace; + private boolean print; + + @Before + public void beforeEach() throws Exception { + print = false; + Server server = new Server("file:/tmp/temp.txt/resources", "user", "pswd"); + repository = new Repository("repo", server); + workspace = new Workspace("myWorkspace", repository); + factory = new NodeTypeNode(workspace); + } + + @Test + public void shouldParseJSONResponseContainingNodeTypes() throws Exception { + String response = IoUtil.read(new File("src/test/resources/jcr_nodeTypes.txt")); + Map nodeTypes = factory.getNodeTypes(response); + // print = true; + printNodeTypes(nodeTypes); + } + + protected void printNodeTypes( Map nodeTypes ) { + if (!print) return; + List types = new LinkedList(nodeTypes.values()); + Collections.sort(types, new Comparator() { + @Override + public int compare( NodeType o1, + NodeType o2 ) { + String name1 = o1.getName(); + String name2 = o2.getName(); + if (name1.startsWith("jcr:")) return -1; + if (name2.startsWith("jcr:")) return 1; + if (name1.startsWith("mix:")) return -1; + if (name2.startsWith("mix:")) return 1; + if (name1.startsWith("nt:")) return -1; + if (name2.startsWith("nt:")) return 1; + if (name1.startsWith("mode:")) return -1; + if (name2.startsWith("mode:")) return 1; + if (name1.startsWith("modeint:")) return -1; + if (name2.startsWith("modeint:")) return 1; + return o1.getName().compareTo(o2.getName()); + } + }); + printNodeTypes(types); + } + + protected void printNodeTypes( Iterable nodeTypes ) { + if (print) { + for (NodeType nodeType : nodeTypes) { + System.out.println(nodeType); + } + } + } + +} Index: web/modeshape-web-jcr-rest-client/src/test/resources/jcr_nodeTypes.txt new file mode 100644 =================================================================== --- /dev/null (revision 2268) +++ web/modeshape-web-jcr-rest-client/src/test/resources/jcr_nodeTypes.txt (working copy) @@ -0,0 +1 @@ +{"properties":{"jcr:primaryType":"mode:nodeTypes"},"children":{"mode:defined":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:defined","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"modeint:nodeDefinition","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"modeint:multiValuedProperties","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"nt:base":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"nt:base","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["mode:defined"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:primaryType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COMPUTE","jcr:mandatory":"true","jcr:requiredType":"NAME","jcr:autoCreated":"true","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:mixinTypes","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COMPUTE","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"nt:unstructured":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:unstructured","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:base"],"jcr:defaultPrimaryType":"nt:unstructured","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mix:created":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:created","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:created","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"DATE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:createdBy","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:hierarchyNode":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"nt:hierarchyNode","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:created"]}},"nt:file":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:file","jcr:primaryItemName":"jcr:content","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:hierarchyNode"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:base"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:name":"jcr:content","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:autoCreated":"false"}}}},"nt:linkedFile":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:linkedFile","jcr:primaryItemName":"jcr:content","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:hierarchyNode"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:content","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:folder":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:folder","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:hierarchyNode"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:hierarchyNode"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mix:referenceable":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:referenceable","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:uuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"INITIALIZE","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"true","jcr:multiple":"false"}}}},"mix:mimeType":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:mimeType","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:mimeType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:encoding","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mix:lastModified":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:lastModified","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:lastModified","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"DATE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:lastModifiedBy","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:resource":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:resource","jcr:primaryItemName":"jcr:data","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:referenceable","mix:mimeType","mix:lastModified"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:data","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BINARY","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:nodeType":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:nodeType","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:nodeTypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:supertypes","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isAbstract","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isMixin","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isQueryable","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:hasOrderableChildNodes","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:primaryItemName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:propertyDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"true","jcr:name":"jcr:propertyDefinition","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["nt:childNodeDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"true","jcr:name":"jcr:childNodeDefinition","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"nt:propertyDefinition":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:propertyDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:name","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:autoCreated","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:mandatory","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isFullTextSearchable","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isQueryOrderable","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:onParentVersion","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["COPY","VERSION","INITIALIZE","COMPUTE","IGNORE","ABORT"],"jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:protected","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:requiredType","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["STRING","BINARY","LONG","DOUBLE","BOOLEAN","DATE","NAME","PATH","REFERENCE","UNDEFINED"],"jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:valueConstraints","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[10]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:availableQueryOperators","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[11]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:defaultValues","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[12]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:multiple","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:childNodeDefinition":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:childNodeDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:name","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:autoCreated","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:mandatory","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:onParentVersion","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["COPY","VERSION","INITIALIZE","COMPUTE","IGNORE","ABORT"],"jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:protected","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:requiredPrimaryTypes","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["nt:base"],"jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:defaultPrimaryType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:sameNameSiblings","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:versionHistory":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:versionHistory","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:versionableUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"true","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:copiedFrom","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:version"],"jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"jcr:rootVersion","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:autoCreated":"true"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["nt:versionLabels"],"jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"jcr:versionLabels","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:autoCreated":"true"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["nt:version"],"jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"nt:versionLabels":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:versionLabels","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:version":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:version","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:created","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:requiredType":"DATE","jcr:autoCreated":"true","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:predecessors","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:successors","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:activity","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:activity"],"jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:frozenNode"],"jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"jcr:frozenNode","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"nt:frozenNode":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:frozenNode","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:base","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:frozenPrimaryType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:requiredType":"NAME","jcr:autoCreated":"true","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:frozenMixinTypes","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"NAME","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:frozenUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"true","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"true","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:base"],"jcr:sameNameSiblings":"true","jcr:protected":"true","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"nt:versionedChild":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:versionedChild","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:childVersionHistory","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:versionHistory"],"jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"true","jcr:multiple":"false"}}}},"nt:query":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:query","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:statement","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:language","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:activity":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:activity","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:activityTitle","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"true","jcr:multiple":"false"}}}},"mix:simpleVersionable":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:simpleVersionable","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isCheckedOut","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"IGNORE","jcr:mandatory":"true","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"true","jcr:multiple":"false"}}}},"mix:versionable":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:versionable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["mix:simpleVersionable","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:versionHistory","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:versionHistory"],"jcr:onParentVersion":"IGNORE","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:baseVersion","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"IGNORE","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:predecessors","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"IGNORE","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:mergeFailed","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:activity","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:version"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:configuration","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["nt:configuration"],"jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:configuration":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:configuration","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:versionable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:root","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"true","jcr:multiple":"false"}}}},"nt:address":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:address","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:protocol","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:host","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:port","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:repository","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:workspace","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:path","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"PATH","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:id","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"false"}}}},"nt:naturalText":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"nt:naturalText","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:text","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:messageId","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mix:etag":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:etag","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:etag","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"true","jcr:multiple":"false"}}}},"mix:lockable":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:lockable","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:lockOwner","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:lockIsDeep","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mix:lifecycle":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:lifecycle","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:lifecyclePolicy","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"INITIALIZE","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:currentLifecycleState","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"INITIALIZE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mix:managedRetention":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:managedRetention","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"jcr:hold","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isDeep","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:retentionPolicy","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mix:shareable":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:shareable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["mix:referenceable"]}},"mix:title":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:title","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:title","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jcr:description","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mix:language":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mix:language","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:language","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mode:namespace":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:namespace","jcr:primaryItemName":"mode:uri","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"mode:uri","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mode:namespaces":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:namespaces","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["mode:namespace"],"jcr:defaultPrimaryType":"mode:namespace","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mode:nodeTypes":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:nodeTypes","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:nodeType"],"jcr:defaultPrimaryType":"nt:nodeType","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mode:lock":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:lock","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"mode:lockedUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:lockOwner","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"true","jcr:name":"mode:lockingSession","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"true","jcr:name":"mode:expirationDate","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"DATE","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"true","jcr:name":"mode:sessionScope","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"true","jcr:name":"jcr:isDeep","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"true","jcr:name":"mode:isHeldBySession","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"true","jcr:name":"mode:workspace","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mode:locks":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:locks","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["mode:lock"],"jcr:defaultPrimaryType":"mode:lock","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mode:versionStorage":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:versionStorage","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:versionHistory"],"jcr:defaultPrimaryType":"nt:versionHistory","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mode:system":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:system","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["mode:namespaces"],"jcr:defaultPrimaryType":"mode:namespaces","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"mode:namespaces","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:autoCreated":"true"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["mode:locks"],"jcr:defaultPrimaryType":"mode:locks","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"mode:locks","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:autoCreated":"true"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["mode:nodeTypes"],"jcr:defaultPrimaryType":"mode:nodeTypes","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"jcr:nodeTypes","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:autoCreated":"true"}},"jcr:childNodeDefinition[4]":{"properties":{"jcr:requiredPrimaryTypes":["mode:versionStorage"],"jcr:defaultPrimaryType":"mode:versionStorage","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"jcr:versionStorage","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"ABORT","jcr:mandatory":"true","jcr:autoCreated":"true"}}}},"mode:root":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:root","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:base","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["mode:system"],"jcr:defaultPrimaryType":"mode:system","jcr:sameNameSiblings":"false","jcr:protected":"true","jcr:name":"jcr:system","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"IGNORE","jcr:mandatory":"true","jcr:autoCreated":"true"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["nt:base"],"jcr:defaultPrimaryType":"nt:unstructured","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"VERSION","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"mode:resource":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:resource","jcr:primaryItemName":"jcr:data","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:mimeType","mix:lastModified"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jcr:data","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"BINARY","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mode:share":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:share","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","mix:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"true","jcr:name":"mode:sharedUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"INITIALIZE","jcr:mandatory":"true","jcr:requiredType":"REFERENCE","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mode:hashed":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mode:hashed","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"mode:sha1","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"xmi:referenceable":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"xmi:referenceable","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"xmi:uuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"xmi:model":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"xmi:model","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","xmi:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"xmi:version","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["2.0"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mmcore:model":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mmcore:model","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["xmi:referenceable","mode:hashed"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:modelType","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["UNKNOWN"],"jcr:valueConstraints":["PHYSICAL","VIRTUAL","TYPE","VDB_ARCHIVE","UNKNOWN","FUNCTION","CONFIGURATION","METAMODEL","EXTENSION","LOGICAL","MATERIALIZATION"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:primaryMetamodelUri","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:description","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:nameInSource","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:maxSetSize","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["100"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:visible","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:supportsDistinct","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:supportsJoin","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:supportsOrderBy","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[10]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:supportsOuterJoin","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[11]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:supportsWhereAll","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[12]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:producerName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[13]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:producerVersion","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[14]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:originalFile","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mmcore:import":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mmcore:import","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","xmi:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:modelType","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["UNKNOWN"],"jcr:valueConstraints":["PHYSICAL","VIRTUAL","TYPE","VDB_ARCHIVE","UNKNOWN","FUNCTION","CONFIGURATION","METAMODEL","EXTENSION","LOGICAL","MATERIALIZATION"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:primaryMetamodelUri","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:path","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:name","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:modelLocation","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"mmcore:annotated":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mmcore:annotated","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:description","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"mmcore:keywords","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"mmcore:tags":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"mmcore:tags","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"vdb:virtualDatabase":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"vdb:virtualDatabase","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mode:hashed"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"vdb:description","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:version","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["1"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:preview","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:originalFile","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"vdb:model":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"vdb:model","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["xmi:model","mmcore:model"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"vdb:visible","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:checksum","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:builtIn","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:pathInVdb","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:sourceTranslator","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:sourceJndiName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:sourceName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["vdb:markers"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:name":"vdb:markers","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"vdb:markers":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"vdb:markers","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["vdb:marker"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"vdb:marker","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"vdb:marker":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"vdb:marker","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"vdb:severity","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["WARNING"],"jcr:valueConstraints":["WARNING","ERROR","INFO"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:path","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"vdb:message","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"relational:relationalEntity":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"relational:relationalEntity","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["xmi:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:nameInSource","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"relational:relationship":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"relational:relationship","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]}},"relational:column":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:column","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:nativeType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:type","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:typeHref","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:typeXmiUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:typeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"relational:length","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"relational:fixedLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"relational:precision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"relational:scale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[10]":{"properties":{"jcr:protected":"false","jcr:name":"relational:nullable","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["NULLABLE"],"jcr:valueConstraints":["NO_NULLS","NULLABLE","NULLABLE_UNKNOWN"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[11]":{"properties":{"jcr:protected":"false","jcr:name":"relational:autoIncremented","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[12]":{"properties":{"jcr:protected":"false","jcr:name":"relational:defaultValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[13]":{"properties":{"jcr:protected":"false","jcr:name":"relational:minimumValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[14]":{"properties":{"jcr:protected":"false","jcr:name":"relational:maximumValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[15]":{"properties":{"jcr:protected":"false","jcr:name":"relational:format","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[16]":{"properties":{"jcr:protected":"false","jcr:name":"relational:characterSetName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[17]":{"properties":{"jcr:protected":"false","jcr:name":"relational:collationName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[18]":{"properties":{"jcr:protected":"false","jcr:name":"relational:selectable","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[19]":{"properties":{"jcr:protected":"false","jcr:name":"relational:updateable","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[20]":{"properties":{"jcr:protected":"false","jcr:name":"relational:caseSensitive","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[21]":{"properties":{"jcr:protected":"false","jcr:name":"relational:searchability","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["SEARCHABLE"],"jcr:valueConstraints":["SEARCHABLE","ALL_EXCEPT_LIKE","LIKE_ONLY","UNSEARCHABLE"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[22]":{"properties":{"jcr:protected":"false","jcr:name":"relational:currency","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[23]":{"properties":{"jcr:protected":"false","jcr:name":"relational:radix","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["10"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[24]":{"properties":{"jcr:protected":"false","jcr:name":"relational:signed","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[25]":{"properties":{"jcr:protected":"false","jcr:name":"relational:distinctValueCount","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["-1"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[26]":{"properties":{"jcr:protected":"false","jcr:name":"relational:nullValueCount","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["-1"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[27]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeys","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[28]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeyHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[29]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeyXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[30]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeyNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[31]":{"properties":{"jcr:protected":"false","jcr:name":"relational:indexes","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[32]":{"properties":{"jcr:protected":"false","jcr:name":"relational:indexHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[33]":{"properties":{"jcr:protected":"false","jcr:name":"relational:indexXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[34]":{"properties":{"jcr:protected":"false","jcr:name":"relational:indexNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[35]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeys","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[36]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[37]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[38]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[39]":{"properties":{"jcr:protected":"false","jcr:name":"relational:accessPatterns","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[40]":{"properties":{"jcr:protected":"false","jcr:name":"relational:accessPatternHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[41]":{"properties":{"jcr:protected":"false","jcr:name":"relational:accessPatternXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[42]":{"properties":{"jcr:protected":"false","jcr:name":"relational:accessPatternNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"relational:columnSet":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"relational:columnSet","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["relational:column"],"jcr:defaultPrimaryType":"relational:column","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"relational:uniqueKey":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"relational:uniqueKey","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:columns","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columnXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columnNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeys","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"relational:uniqueConstraint":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:uniqueConstraint","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["relational:uniqueKey"]}},"relational:primaryKey":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:primaryKey","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["relational:uniqueKey"]}},"relational:foreignKey":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:foreignKey","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["relational:relationship"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:foreignKeyMultiplicity","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["ZERO_TO_MANY"],"jcr:valueConstraints":["ONE","MANY","ZERO_TO_ONE","ZERO_TO_MANY","UNSPECIFIED"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:primaryKeyMultiplicity","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["ONE"],"jcr:valueConstraints":["ONE","MANY","ZERO_TO_ONE","ZERO_TO_MANY","UNSPECIFIED"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columns","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columnXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columnNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeys","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeyHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeyXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"relational:uniqueKeyNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"relational:index":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:index","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:filterCondition","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:nullable","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:autoUpdate","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:unique","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columns","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columnXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"relational:columnNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"relational:accessPattern":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:accessPattern","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:columns","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"UNDEFINED","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"relational:table":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"relational:table","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["relational:columnSet"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:system","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:cardinality","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:supportsUpdate","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:materialized","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:logicalRelationships","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"relational:logicalRelationshipHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"relational:logicalRelationshipXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"relational:logicalRelationshipNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["relational:primaryKey"],"jcr:defaultPrimaryType":"relational:primaryKey","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["relational:foreignKey"],"jcr:defaultPrimaryType":"relational:foreignKey","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["relational:accessPattern"],"jcr:defaultPrimaryType":"relational:accessPattern","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"relational:baseTable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:baseTable","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["relational:table"]}},"relational:view":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:view","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["relational:table"]}},"relational:procedureParameter":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:procedureParameter","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:direction","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["IN","OUT","INOUT","RETURN","UNKNOWN"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:defaultValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:nativeType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:type","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:typeXmiUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"relational:typeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"relational:length","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"relational:precision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"relational:scale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[10]":{"properties":{"jcr:protected":"false","jcr:name":"relational:nullable","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["NULLABLE"],"jcr:valueConstraints":["NO_NULLS","NULLABLE","NULLABLE_UNKNOWN"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[11]":{"properties":{"jcr:protected":"false","jcr:name":"relational:radix","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["10"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"relational:procedureResult":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:procedureResult","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["relational:columnSet"]}},"relational:procedure":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:procedure","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:function","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:updateCount","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["AUTO","ZERO","ONE","MULTIPLE"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["relational:procedureParameter"],"jcr:defaultPrimaryType":"relational:procedureParameter","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["relational:procedureResult"],"jcr:defaultPrimaryType":"relational:procedureResult","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"relational:logicalRelationshipEnd":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:logicalRelationshipEnd","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"relational:multiplicity","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["ONE","MANY","ZERO_TO_ONE","ZERO_TO_MANY","UNSPECIFIED"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"relational:table","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"relational:tableHref","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"relational:tableXmiUuid","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"relational:tableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"relational:logicalRelationship":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:logicalRelationship","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["relational:relationship"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["relational:logicalRelationshipEnd"],"jcr:defaultPrimaryType":"relational:logicalRelationshipEnd","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"relational:schema":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:schema","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["relational:table"],"jcr:defaultPrimaryType":"relational:baseTable","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["relational:procedure"],"jcr:defaultPrimaryType":"relational:procedure","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["relational:index"],"jcr:defaultPrimaryType":"relational:index","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[4]":{"properties":{"jcr:requiredPrimaryTypes":["relational:logicalRelationship"],"jcr:defaultPrimaryType":"relational:logicalRelationship","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"relational:catalog":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"relational:catalog","jcr:hasOrderableChildNodes":"true","jcr:supertypes":["nt:unstructured","relational:relationalEntity"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["relational:schema"],"jcr:defaultPrimaryType":"relational:schema","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["relational:table"],"jcr:defaultPrimaryType":"relational:baseTable","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["relational:procedure"],"jcr:defaultPrimaryType":"relational:procedure","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[4]":{"properties":{"jcr:requiredPrimaryTypes":["relational:index"],"jcr:defaultPrimaryType":"relational:index","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[5]":{"properties":{"jcr:requiredPrimaryTypes":["relational:logicalRelationship"],"jcr:defaultPrimaryType":"relational:logicalRelationship","jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"transform:transformed":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"transform:transformed","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"transform:transformedFrom","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":["WEAKREFERENCE"],"jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"transform:transformedFromHrefs","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"transform:transformedFromXmiUuids","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"transform:transformedFromNames","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"transform:withSql":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"transform:withSql","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"transform:selectSql","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"transform:insertSql","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"transform:updateSql","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"transform:deleteSql","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"transform:insertAllowed","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"transform:updateAllowed","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"transform:deleteAllowed","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"transform:outputLocked","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"transform:insertSqlDefault","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[10]":{"properties":{"jcr:protected":"false","jcr:name":"transform:updateSqlDefault","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[11]":{"properties":{"jcr:protected":"false","jcr:name":"transform:deleteSqlDefault","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"jdbcs:source":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"jdbcs:source","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","xmi:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:name","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:driverName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:driverClass","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:username","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:url","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"jdbcs:imported":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"jdbcs:imported","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","xmi:referenceable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:createCatalogsInModel","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:createSchemasInModel","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:convertCaseInModel","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["NONE","TO_UPPERCASE","TO_LOWERCASE"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:generateSourceNamesInModel","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["UNQUALIFIED"],"jcr:valueConstraints":["NONE","UNQUALIFIED","FULLY_QUALIFIED"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includedCatalogPaths","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includedSchemaPaths","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:excludedObjectPaths","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includeForeignKeys","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includeIndexes","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[10]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includeProcedures","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[11]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includeApproximateIndexes","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["true"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[12]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includeUniqueIndexes","jcr:primaryType":"nt:propertyDefinition","jcr:defaultValues":["false"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[13]":{"properties":{"jcr:protected":"false","jcr:name":"jdbcs:includedTableTypes","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"true"}}}},"text:column":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"text:column","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"text:data","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"dnaxml:document":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"dnaxml:document","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:cDataContent","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"dnaxml:comment":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"dnaxml:comment","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:commentContent","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"dnaxml:element":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"dnaxml:element","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:elementContent","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"dnaxml:cData":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"dnaxml:cData","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:cDataContent","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"dnaxml:processingInstruction":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"dnaxml:processingInstruction","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:processingInstruction","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:target","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"dnadtd:entity":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"dnadtd:entity","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:name","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:value","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:publicId","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"dnaxml:systemId","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"zip:content":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"zip:content","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:unstructured","mix:mimeType"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["nt:folder"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["nt:file"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:operation":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:operation","jcr:hasOrderableChildNodes":"false"}},"ddl:operand":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:operand","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:name","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:statement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:statement","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:expression","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:originalExpression","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:startLineNumber","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:startColumnNumber","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:startCharIndex","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:length","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:ddlProblem"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:problem","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:creatable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:creatable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]}},"ddl:alterable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:alterable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]}},"ddl:droppable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:droppable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:dropBehavior","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:statementOption"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:dropOption","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:insertable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:insertable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]}},"ddl:settable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:settable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]}},"ddl:grantable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:grantable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]}},"ddl:revokable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:revokable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]}},"ddl:renamable":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:renamable","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operation"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:newName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:schemaOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:schemaOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:tableOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:tableOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:domainOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:domainOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:viewOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:viewOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:assertionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:assertionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:characterSetOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:characterSetOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:collationOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:collationOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:translationOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:translationOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:columnOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:columnOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:tableConstraintOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:tableConstraintOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:referenceOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"ddl:referenceOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"ddl:columnDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:columnDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:columnOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypePrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeScale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:nullable","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultOption","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["LITERAL","DATETIME","USER","CURRENT_USER","SESSION_USER","SYSTEM_USER","NULL"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultPrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:collationName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:simpleProperty"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:name":"ddl:dropBehavior","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:simpleProperty"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:columnAttribute","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:tableConstraintDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:tableConstraintDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:tableConstraintOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:constraintType","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["UNIQUE","PRIMARY KEY","FOREIGN KEY","CHECK"],"jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:deferrable","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["DEFERRABLE","NOT DEFERRABLE"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:checkSearchCondition","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["INITIALLY DEFERRED","INITIALLY IMMEDIATE"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:columnReference"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:tableReference"],"jcr:sameNameSiblings":"false","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:fkColumnReference"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[4]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:simpleProperty"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:constraintAttribute","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:columnReference":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:columnReference","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:referenceOperand"]}},"ddl:tableReference":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:tableReference","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:referenceOperand"]}},"ddl:fkColumnReference":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:fkColumnReference","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:referenceOperand"]}},"ddl:grantee":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantee","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:referenceOperand"]}},"ddl:simpleProperty":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:simpleProperty","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:propValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:statementOption":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:statementOption","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:value","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:ddlProblem":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:ddlProblem","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:problemLevel","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:message","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:schemaDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:schemaDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:schemaOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultCharacterSetName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:statement"],"jcr:defaultPrimaryType":"ddl:statement","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:createTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:tableOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:temporary","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["GLOBAL","LOCAL"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:onCommitValue","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["DELETE ROWS","PRESERVE ROWS"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:columnDefinition"],"jcr:defaultPrimaryType":"ddl:columnDefinition","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:tableConstraintDefinition"],"jcr:defaultPrimaryType":"ddl:tableConstraintDefinition","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:statementOption"],"jcr:defaultPrimaryType":"ddl:statementOption","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:createViewStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createViewStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:viewOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:sqlExpression","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:checkOption","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:columnReference"],"jcr:defaultPrimaryType":"ddl:columnReference","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:createDomainStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createDomainStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:domainOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypePrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeScale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:nullable","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultOption","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["LITERAL","DATETIME","USER","CURRENT_USER","SESSION_USER","SYSTEM_USER","NULL"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultValue","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[8]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultPrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[9]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:collationName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:tableConstraintDefinition"],"jcr:defaultPrimaryType":"ddl:tableConstraintDefinition","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:domainConstraintDefinition","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:createAssertionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createAssertionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:assertionOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:constraintName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:searchCondition","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:simpleProperty"],"jcr:defaultPrimaryType":"ddl:simpleProperty","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:constraintAttribute","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:createCharacterSetStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createCharacterSetStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:characterSetOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:existingName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:collateClause","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:limitedCollationDefinition","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:createCollationStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createCollationStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:collationOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:characterSetName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:collationSource","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:padAttribute","jcr:primaryType":"nt:propertyDefinition","jcr:valueConstraints":["NO PAD","PAD SPACE"],"jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:createTranslationStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:createTranslationStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","ddl:translationOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:sourceCharacterSetName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:targetCharacterSetName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:translationSource","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:alterTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:alterTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:alterable","ddl:tableOperand"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:addColumnDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:dropColumnDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[3]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:alterColumnDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[4]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:addTableConstraintDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[5]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:dropTableConstraintDefinition"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[6]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:statementOption"],"jcr:defaultPrimaryType":"ddl:statementOption","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:alterDomainStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:alterDomainStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:alterable","ddl:domainOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:alterDomainAction","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"ddl:dropSchemaStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropSchemaStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:schemaOperand"]}},"ddl:dropTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:tableOperand"]}},"ddl:dropViewStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropViewStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:viewOperand"]}},"ddl:dropDomainStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropDomainStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:domainOperand"]}},"ddl:dropCharacterSetStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropCharacterSetStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:characterSetOperand"]}},"ddl:dropCollationStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropCollationStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:collationOperand"]}},"ddl:dropTranslationStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropTranslationStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:translationOperand"]}},"ddl:dropAssertionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropAssertionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:droppable","ddl:assertionOperand"]}},"ddl:alterColumnDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:alterColumnDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:columnDefinition","ddl:alterable"]}},"ddl:addColumnDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:addColumnDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:columnDefinition","ddl:creatable"]}},"ddl:dropColumnDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropColumnDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:columnDefinition","ddl:droppable"]}},"ddl:addTableConstraintDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:addTableConstraintDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:tableConstraintDefinition","ddl:creatable"]}},"ddl:dropTableConstraintDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:dropTableConstraintDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:tableConstraintDefinition","ddl:droppable"]}},"ddl:setStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:setStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:settable"]}},"ddl:insertStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:insertStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:insertable"]}},"ddl:grantPrivilege":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantPrivilege","jcr:hasOrderableChildNodes":"false"},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:type","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:columnReference"],"jcr:defaultPrimaryType":"ddl:columnReference","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:grantStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:grantable"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:allPrivileges","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:grantPrivilege"],"jcr:defaultPrimaryType":"ddl:grantPrivilege","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:grantee"],"jcr:defaultPrimaryType":"ddl:grantee","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"ddl:grantOnTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantOnTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:tableOperand"]}},"ddl:grantOnDomainStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantOnDomainStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:domainOperand"]}},"ddl:grantOnCollationStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantOnCollationStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:collationOperand"]}},"ddl:grantOnCharacterSetStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantOnCharacterSetStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:characterSetOperand"]}},"ddl:grantOnTranslationStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"ddl:grantOnTranslationStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:translationOperand"]}},"derbyddl:functionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"derbyddl:functionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"derbyddl:indexOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"derbyddl:indexOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"derbyddl:procedureOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"derbyddl:procedureOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"derbyddl:roleOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"derbyddl:roleOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"derbyddl:synonymOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"derbyddl:synonymOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"derbyddl:triggerOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"derbyddl:triggerOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"derbyddl:roleName":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:roleName","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["derbyddl:roleOperand"]}},"derbyddl:columnDefinition":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:columnDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:columnDefinition"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"derbyddl:dropDefault","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"derbyddl:functionParameter":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:functionParameter","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:columnDefinition"]}},"derbyddl:indexColumnReference":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:indexColumnReference","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:columnReference"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"derbyddl:order","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"derbyddl:createFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:createFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","derbyddl:functionOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypePrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeScale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:isTableType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["derbyddl:functionParameter"],"jcr:defaultPrimaryType":"derbyddl:functionParameter","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:statementOption"],"jcr:defaultPrimaryType":"ddl:statementOption","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"derbyddl:createIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:createIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:creatable","derbyddl:indexOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"derbyddl:tableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"derbyddl:unique","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["derbyddl:indexColumnReference"],"jcr:defaultPrimaryType":"derbyddl:indexColumnReference","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"derbyddl:createProcedureStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:createProcedureStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","derbyddl:procedureOperand"]}},"derbyddl:createRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:createRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","derbyddl:roleOperand"]}},"derbyddl:createSynonymStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:createSynonymStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","derbyddl:synonymOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"derbyddl:tableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"derbyddl:createTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:createTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","derbyddl:triggerOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"derbyddl:tableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:sql","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:columnReference"],"jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"derbyddl:declareGlobalTemporaryTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:declareGlobalTemporaryTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:createTableStatement"]}},"derbyddl:dropFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:dropFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","derbyddl:functionOperand"]}},"derbyddl:dropIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:dropIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","derbyddl:indexOperand"]}},"derbyddl:dropProcedureStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:dropProcedureStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","derbyddl:procedureOperand"]}},"derbyddl:dropRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:dropRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","derbyddl:roleOperand"]}},"derbyddl:dropSynonymStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:dropSynonymStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","derbyddl:synonymOperand"]}},"derbyddl:dropTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:dropTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","derbyddl:triggerOperand"]}},"derbyddl:lockTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:lockTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:tableOperand"]}},"derbyddl:renameTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:renameTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:renamable","ddl:tableOperand"]}},"derbyddl:grantOnFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:grantOnFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","derbyddl:functionOperand"]}},"derbyddl:grantOnProcedureStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:grantOnProcedureStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","derbyddl:procedureOperand"]}},"derbyddl:grantRolesStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"derbyddl:grantRolesStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["derbyddl:roleName"],"jcr:defaultPrimaryType":"derbyddl:roleName","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"ddl:name","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"oracleddl:clusterOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:clusterOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:commentOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:commentOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:contextOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:contextOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:controlfileOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:controlfileOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:databaseOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:databaseOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:dimensionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:dimensionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:directoryOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:directoryOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:diskgroupOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:diskgroupOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:functionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:functionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:indexOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:indexOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:indextypeOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:indextypeOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:javaOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:javaOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:libraryOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:libraryOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:materializedOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:materializedOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:operatorOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:operatorOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:outlineOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:outlineOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:packageOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:packageOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:parameterOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:parameterOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:pfileOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:pfileOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:procedureOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:procedureOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:profileOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:profileOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:resourceOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:resourceOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:roleOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:roleOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:rollbackOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:rollbackOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:sequenceOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:sequenceOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:sessionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:sessionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:spfileOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:spfileOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:systemOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:systemOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:synonymOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:synonymOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:tablespaceOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:tablespaceOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:triggerOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:triggerOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:typeOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:typeOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:userOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"oracleddl:userOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"oracleddl:columnDefinition":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:columnDefinition","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:columnDefinition"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:dropDefault","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"oracleddl:functionParameter":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:functionParameter","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["oracleddl:parameterOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypePrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeScale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:default","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:defaultExpresssion","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:inOutNoCopy","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"oracleddl:alterClusterStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterClusterStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:clusterOperand"]}},"oracleddl:alterDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:databaseOperand"]}},"oracleddl:alterDimensionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterDimensionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:dimensionOperand"]}},"oracleddl:alterDiskgroupStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterDiskgroupStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:diskgroupOperand"]}},"oracleddl:alterFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:functionOperand"]}},"oracleddl:alterIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:indexOperand"]}},"oracleddl:alterIndextypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterIndextypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:indextypeOperand"]}},"oracleddl:alterJavaStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterJavaStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:javaOperand"]}},"oracleddl:alterMaterializedStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterMaterializedStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:materializedOperand"]}},"oracleddl:alterOperatorStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterOperatorStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:operatorOperand"]}},"oracleddl:alterOutlineStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterOutlineStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:outlineOperand"]}},"oracleddl:alterPackageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterPackageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:packageOperand"]}},"oracleddl:alterProcedureStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterProcedureStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:procedureOperand"]}},"oracleddl:alterProfileStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterProfileStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:profileOperand"]}},"oracleddl:alterResourceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterResourceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:resourceOperand"]}},"oracleddl:alterRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:roleOperand"]}},"oracleddl:alterRollbackStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterRollbackStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:rollbackOperand"]}},"oracleddl:alterSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:sequenceOperand"]}},"oracleddl:alterSessionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterSessionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:sessionOperand"]}},"oracleddl:alterSystemStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterSystemStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:systemOperand"]}},"oracleddl:alterTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:tablespaceOperand"]}},"oracleddl:alterTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:triggerOperand"]}},"oracleddl:alterTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:typeOperand"]}},"oracleddl:alterUserStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterUserStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","oracleddl:userOperand"]}},"oracleddl:alterViewStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterViewStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","ddl:viewOperand"]}},"oracleddl:alterTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:alterTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterTableStatement"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:newTableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:renamable"],"jcr:defaultPrimaryType":"ddl:renamable","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"oracleddl:renameColumn","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}},"jcr:childNodeDefinition[2]":{"properties":{"jcr:requiredPrimaryTypes":["ddl:renamable"],"jcr:defaultPrimaryType":"ddl:renamable","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"oracleddl:renameConstraint","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"oracleddl:createClusterStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createClusterStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:clusterOperand"]}},"oracleddl:createContextStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createContextStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:contextOperand"]}},"oracleddl:createControlfileStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createControlfileStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:controlfileOperand"]}},"oracleddl:createDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:databaseOperand"]}},"oracleddl:createDimensionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createDimensionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:dimensionOperand"]}},"oracleddl:createDirectoryStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createDirectoryStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:directoryOperand"]}},"oracleddl:createDiskgroupStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createDiskgroupStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:diskgroupOperand"]}},"oracleddl:createFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:functionOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypePrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeScale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["oracleddl:functionParameter"],"jcr:defaultPrimaryType":"oracleddl:functionParameter","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"oracleddl:parameter","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"oracleddl:createIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:indexOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:tableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:unique","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:bitmap","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"BOOLEAN","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["ddl:columnReference"],"jcr:defaultPrimaryType":"ddl:columnReference","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"oracleddl:createIndexTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createIndexTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:indextypeOperand"]}},"oracleddl:createJavaStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createJavaStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:javaOperand"]}},"oracleddl:createLibraryStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createLibraryStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:libraryOperand"]}},"oracleddl:createMaterializedStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createMaterializedStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:materializedOperand"]}},"oracleddl:createOperatorStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createOperatorStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:operatorOperand"]}},"oracleddl:createOutlineStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createOutlineStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:outlineOperand"]}},"oracleddl:createPackageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createPackageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:packageOperand"]}},"oracleddl:createPfileStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createPfileStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:pfileOperand"]}},"oracleddl:createProcedureStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createProcedureStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:procedureOperand"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["oracleddl:functionParameter"],"jcr:defaultPrimaryType":"oracleddl:functionParameter","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"oracleddl:parameter","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"oracleddl:createRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:roleOperand"]}},"oracleddl:createRollbackStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createRollbackStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:rollbackOperand"]}},"oracleddl:createSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:sequenceOperand"]}},"oracleddl:createSpfileStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createSpfileStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:spfileOperand"]}},"oracleddl:createSynonymStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createSynonymStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:synonymOperand"]}},"oracleddl:createTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:tablespaceOperand"]}},"oracleddl:createTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:triggerOperand"]}},"oracleddl:createTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:typeOperand"]}},"oracleddl:createUserStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:createUserStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","oracleddl:userOperand"]}},"oracleddl:dropClusterStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropClusterStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:clusterOperand"]}},"oracleddl:dropContextStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropContextStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:contextOperand"]}},"oracleddl:dropDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:databaseOperand"]}},"oracleddl:dropDimensionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropDimensionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:dimensionOperand"]}},"oracleddl:dropDirectoryStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropDirectoryStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:directoryOperand"]}},"oracleddl:dropDiskgroupStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropDiskgroupStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:diskgroupOperand"]}},"oracleddl:dropFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:functionOperand"]}},"oracleddl:dropIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:indexOperand"]}},"oracleddl:dropIndextypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropIndextypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:indextypeOperand"]}},"oracleddl:dropJavaStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropJavaStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:javaOperand"]}},"oracleddl:dropLibraryStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropLibraryStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:libraryOperand"]}},"oracleddl:dropMaterializedStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropMaterializedStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:materializedOperand"]}},"oracleddl:dropOperatorStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropOperatorStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:operatorOperand"]}},"oracleddl:dropOutlineStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropOutlineStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:outlineOperand"]}},"oracleddl:dropPackageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropPackageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:packageOperand"]}},"oracleddl:dropProcedureStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropProcedureStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:procedureOperand"]}},"oracleddl:dropProfileStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropProfileStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:profileOperand"]}},"oracleddl:dropRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:roleOperand"]}},"oracleddl:dropRollbackStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropRollbackStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:rollbackOperand"]}},"oracleddl:dropSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:sequenceOperand"]}},"oracleddl:dropSynonymStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropSynonymStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:synonymOperand"]}},"oracleddl:dropTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:tablespaceOperand"]}},"oracleddl:dropTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:triggerOperand"]}},"oracleddl:dropTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:typeOperand"]}},"oracleddl:dropUserStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:dropUserStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","oracleddl:userOperand"]}},"oracleddl:analyzeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:analyzeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:associateStatisticsStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:associateStatisticsStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:auditStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:auditStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:commitStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:commitStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:commentOnStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:commentOnStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","oracleddl:commentOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:targetObjectType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:targetObjectName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"oracleddl:comment","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"oracleddl:disassociateStatisticsStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:disassociateStatisticsStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:explainPlanStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:explainPlanStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:flashbackStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:flashbackStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:lockTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:lockTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:mergeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:mergeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:nestedTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:nestedTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:noauditStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:noauditStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:purgeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:purgeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:renameStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:renameStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:revokeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:revokeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:rollbackStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:rollbackStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"oracleddl:setConstraintsStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:setConstraintsStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:settable"]}},"oracleddl:setRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:setRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:settable"]}},"oracleddl:setTransactionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:setTransactionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","ddl:settable"]}},"oracleddl:truncateStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"oracleddl:truncateStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:aggregateOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:aggregateOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:castOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:castOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:commentOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:commentOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:constraintTriggerOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:constraintTriggerOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:conversionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:conversionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:databaseOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:databaseOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:foreignDataOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:foreignDataOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:groupOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:groupOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:functionOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:functionOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:indexOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:indexOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:languageOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:languageOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:operatorOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:operatorOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:ownedByOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:ownedByOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:roleOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:roleOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:ruleOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:ruleOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:sequenceOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:sequenceOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:serverOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:serverOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:tablespaceOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:tablespaceOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:textSearchOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:textSearchOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:triggerOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:triggerOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:typeOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:typeOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:userOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:userOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:userMappingOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:userMappingOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:parameterOperand":{"properties":{"jcr:isMixin":"false","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"true","jcr:nodeTypeName":"postgresddl:parameterOperand","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["nt:base","ddl:operand"]}},"postgresddl:functionParameter":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:functionParameter","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["postgresddl:parameterOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeLength","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypePrecision","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[4]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:datatypeScale","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"LONG","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[5]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:nullable","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[6]":{"properties":{"jcr:protected":"false","jcr:name":"ddl:defaultOption","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[7]":{"properties":{"jcr:protected":"false","jcr:name":"postgresddl:mode","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"postgresddl:role":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:role","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["postgresddl:roleOperand"]}},"postgresddl:renamedColumn":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:renamedColumn","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:renamable"]}},"postgresddl:alterAggregateStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterAggregateStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:aggregateOperand"]}},"postgresddl:alterConversionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterConversionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:conversionOperand"]}},"postgresddl:alterDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:databaseOperand"]}},"postgresddl:alterForeignDataWrapperStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterForeignDataWrapperStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:foreignDataOperand"]}},"postgresddl:alterFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:functionOperand"]}},"postgresddl:alterGroupStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterGroupStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:groupOperand"]}},"postgresddl:alterIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:indexOperand"]}},"postgresddl:alterLanguageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterLanguageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:languageOperand"]}},"postgresddl:alterOperatorStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterOperatorStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:operatorOperand"]}},"postgresddl:alterRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:roleOperand"]}},"postgresddl:alterSchemaStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterSchemaStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","ddl:schemaOperand"]}},"postgresddl:alterSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:sequenceOperand"]}},"postgresddl:alterServerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterServerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:serverOperand"]}},"postgresddl:alterTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:tablespaceOperand"]}},"postgresddl:alterTextSearchStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterTextSearchStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:textSearchOperand"]}},"postgresddl:alterTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:triggerOperand"]}},"postgresddl:alterTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:typeOperand"]}},"postgresddl:alterUserStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterUserStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:userOperand"]}},"postgresddl:alterUserMappingStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterUserMappingStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","postgresddl:userMappingOperand"]}},"postgresddl:alterViewStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterViewStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterable","ddl:statement","ddl:viewOperand"]}},"postgresddl:alterTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:alterTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:alterTableStatement"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"postgresddl:newTableName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"postgresddl:schemaName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["postgresddl:renamedColumn"],"jcr:defaultPrimaryType":"postgresddl:renamedColumn","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"postgresddl:renameColumn","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"postgresddl:createAggregateStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createAggregateStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:aggregateOperand"]}},"postgresddl:createCastStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createCastStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:castOperand"]}},"postgresddl:createConstraintTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createConstraintTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:constraintTriggerOperand"]}},"postgresddl:createConversionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createConversionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:conversionOperand"]}},"postgresddl:createDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:databaseOperand"]}},"postgresddl:createForeignDataWrapperStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createForeignDataWrapperStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:foreignDataOperand"]}},"postgresddl:createFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:functionOperand"]}},"postgresddl:createGroupStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createGroupStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:groupOperand"]}},"postgresddl:createIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:indexOperand"]}},"postgresddl:createLanguageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createLanguageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:languageOperand"]}},"postgresddl:createOperatorStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createOperatorStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:operatorOperand"]}},"postgresddl:createRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:roleOperand"]}},"postgresddl:createRuleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createRuleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:ruleOperand"]}},"postgresddl:createSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:sequenceOperand"]}},"postgresddl:createServerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createServerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:serverOperand"]}},"postgresddl:createTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:tablespaceOperand"]}},"postgresddl:createTextSearchStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createTextSearchStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:textSearchOperand"]}},"postgresddl:createTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:triggerOperand"]}},"postgresddl:createTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:typeOperand"]}},"postgresddl:createUserStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createUserStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:userOperand"]}},"postgresddl:createUserMappingStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:createUserMappingStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:creatable","ddl:statement","postgresddl:userMappingOperand"]}},"postgresddl:dropAggregateStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropAggregateStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:aggregateOperand"]}},"postgresddl:dropCastStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropCastStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:castOperand"]}},"postgresddl:dropConstraintTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropConstraintTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:constraintTriggerOperand"]}},"postgresddl:dropConversionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropConversionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:conversionOperand"]}},"postgresddl:dropDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:databaseOperand"]}},"postgresddl:dropForeignDataWrapperStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropForeignDataWrapperStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:foreignDataOperand"]}},"postgresddl:dropFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:functionOperand"]}},"postgresddl:dropGroupStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropGroupStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:groupOperand"]}},"postgresddl:dropIndexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropIndexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:indexOperand"]}},"postgresddl:dropLanguageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropLanguageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:languageOperand"]}},"postgresddl:dropOperatorStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropOperatorStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:operatorOperand"]}},"postgresddl:dropOwnedByStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropOwnedByStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:ownedByOperand"]}},"postgresddl:dropRoleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropRoleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:roleOperand"]}},"postgresddl:dropRuleStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropRuleStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:ruleOperand"]}},"postgresddl:dropSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:sequenceOperand"]}},"postgresddl:dropServerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropServerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:serverOperand"]}},"postgresddl:dropTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:tablespaceOperand"]}},"postgresddl:dropTextSearchStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropTextSearchStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:textSearchOperand"]}},"postgresddl:dropTriggerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropTriggerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:triggerOperand"]}},"postgresddl:dropTypeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropTypeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:typeOperand"]}},"postgresddl:dropUserStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropUserStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:userOperand"]}},"postgresddl:dropUserMappingStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:dropUserMappingStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:droppable","ddl:statement","postgresddl:userMappingOperand"]}},"postgresddl:abortStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:abortStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:analyzeStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:analyzeStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:clusterStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:clusterStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:commentOnStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:commentOnStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement","postgresddl:commentOperand"]},"children":{"jcr:propertyDefinition":{"properties":{"jcr:protected":"false","jcr:name":"postgresddl:targetObjectType","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[2]":{"properties":{"jcr:protected":"false","jcr:name":"postgresddl:targetObjectName","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}},"jcr:propertyDefinition[3]":{"properties":{"jcr:protected":"false","jcr:name":"postgresddl:comment","jcr:primaryType":"nt:propertyDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"true","jcr:requiredType":"STRING","jcr:autoCreated":"false","jcr:multiple":"false"}}}},"postgresddl:copyStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:copyStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:deallocateStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:deallocateStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:declareStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:declareStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:discardStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:discardStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:explainStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:explainStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:fetchStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:fetchStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:listenStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:listenStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:loadStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:loadStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:lockTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:lockTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:moveStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:moveStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:notifyStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:notifyStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:prepareStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:prepareStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:reassignOwnedStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:reassignOwnedStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:reindexStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:reindexStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:releaseSavepointStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:releaseSavepointStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:rollbackStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:rollbackStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:selectIntoStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:selectIntoStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:showStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:showStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:truncateStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:truncateStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:unlistenStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:unlistenStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:vacuumStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:vacuumStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:statement"]}},"postgresddl:grantOnTableStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnTableStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:tableOperand"]}},"postgresddl:grantOnSequenceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnSequenceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:sequenceOperand"]}},"postgresddl:grantOnDatabaseStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnDatabaseStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:databaseOperand"]}},"postgresddl:grantOnForeignDataWrapperStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnForeignDataWrapperStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:foreignDataOperand"]}},"postgresddl:grantOnForeignServerStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnForeignServerStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:serverOperand"]}},"postgresddl:grantOnFunctionStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnFunctionStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:functionOperand"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["postgresddl:functionParameter"],"jcr:defaultPrimaryType":"postgresddl:functionParameter","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"postgresddl:parameter","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}},"postgresddl:grantOnLanguageStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnLanguageStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:languageOperand"]}},"postgresddl:grantOnSchemaStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnSchemaStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","ddl:schemaOperand"]}},"postgresddl:grantOnTablespaceStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantOnTablespaceStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement","postgresddl:tablespaceOperand"]}},"postgresddl:grantRolesStatement":{"properties":{"jcr:isMixin":"true","jcr:isQueryable":"true","jcr:primaryType":"nt:nodeType","jcr:isAbstract":"false","jcr:nodeTypeName":"postgresddl:grantRolesStatement","jcr:hasOrderableChildNodes":"false","jcr:supertypes":["ddl:grantStatement"]},"children":{"jcr:childNodeDefinition":{"properties":{"jcr:requiredPrimaryTypes":["postgresddl:role"],"jcr:defaultPrimaryType":"postgresddl:role","jcr:sameNameSiblings":"true","jcr:protected":"false","jcr:name":"postgresddl:grantRole","jcr:primaryType":"nt:childNodeDefinition","jcr:onParentVersion":"COPY","jcr:mandatory":"false","jcr:autoCreated":"false"}}}}}} \ No newline at end of file