You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/05/08 12:35:31 UTC
svn commit: r772929 - in /jackrabbit/trunk:
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/
jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/
jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/ jackrab...
Author: angela
Date: Fri May 8 10:35:31 2009
New Revision: 772929
URL: http://svn.apache.org/viewvc?rev=772929&view=rev
Log:
JCR-2105: JSR 283 NodeType Management (work in progress)
Modified:
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/PropertyDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QPropertyDefinition.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/QPropertyDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QPropertyDefinitionImpl.java
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeDefinitionImpl.java?rev=772929&r1=772928&r2=772929&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeDefinitionImpl.java Fri May 8 10:35:31 2009
@@ -26,6 +26,7 @@
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeType;
+import javax.jcr.NamespaceException;
/**
* This class implements the <code>NodeDefinition</code> interface.
@@ -100,12 +101,46 @@
return ((QNodeDefinition) itemDef).allowsSameNameSiblings();
}
+ /**
+ * @see NodeDefinition#getDefaultPrimaryTypeName()
+ * @since JCR 2.0
+ */
public String getDefaultPrimaryTypeName() {
- throw new UnsupportedOperationException("JCR-1591");
+ Name ntName = ((QNodeDefinition) itemDef).getDefaultPrimaryType();
+ if (ntName == null) {
+ return null;
+ }
+ try {
+ return resolver.getJCRName(ntName);
+ } catch (NamespaceException e) {
+ // should never get here
+ log.error("invalid default node type " + ntName, e);
+ return null;
+ }
}
+ /**
+ * @see NodeDefinition#getRequiredPrimaryTypeNames()
+ * @since JCR 2.0
+ */
public String[] getRequiredPrimaryTypeNames() {
- throw new UnsupportedOperationException("JCR-1591");
+ Name[] ntNames = ((QNodeDefinition) itemDef).getRequiredPrimaryTypes();
+ try {
+ if (ntNames == null || ntNames.length == 0) {
+ // return "nt:base"
+ return new String[] { resolver.getJCRName(NameConstants.NT_BASE) };
+ } else {
+ String[] jcrNames = new String[ntNames.length];
+ for (int i = 0; i < ntNames.length; i++) {
+ jcrNames[i] = resolver.getJCRName(ntNames[i]);
+ }
+ return jcrNames;
+ }
+ } catch (NamespaceException e) {
+ // should never get here
+ log.error("required node type does not exist", e);
+ return new String[0];
+ }
}
}
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/PropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/PropertyDefinitionImpl.java?rev=772929&r1=772928&r2=772929&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/PropertyDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/PropertyDefinitionImpl.java Fri May 8 10:35:31 2009
@@ -19,14 +19,15 @@
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
+import javax.jcr.NamespaceException;
import javax.jcr.nodetype.PropertyDefinition;
import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
import org.apache.jackrabbit.spi.commons.nodetype.InvalidConstraintException;
import org.apache.jackrabbit.spi.commons.nodetype.ValueConstraint;
-import org.apache.jackrabbit.spi.commons.query.qom.Operator;
import org.apache.jackrabbit.spi.commons.value.ValueFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -120,17 +121,36 @@
return ((QPropertyDefinition) itemDef).isMultiple();
}
+ /**
+ * @see javax.jcr.nodetype.PropertyDefinition#getAvailableQueryOperators()
+ */
public String[] getAvailableQueryOperators() {
- // TODO: JCR-2091
- return Operator.getAllQueryOperators();
+ Name[] names = ((QPropertyDefinition) itemDef).getAvailableQueryOperators();
+ String[] aqos = new String[names.length];
+ for (int i = 0; i < names.length; i++) {
+ try {
+ aqos[i] = resolver.getJCRName(names[i]);
+ } catch (NamespaceException e) {
+ // should not occure. fallback
+ log.warn(e.getMessage());
+ aqos[i] = names[i].toString();
+ }
+ }
+ return aqos;
}
+ /**
+ * @see javax.jcr.nodetype.PropertyDefinition#isFullTextSearchable()
+ */
public boolean isFullTextSearchable() {
- return true; // TODO: JCR-2091
+ return ((QPropertyDefinition) itemDef).isFullTextSearcheable();
}
+ /**
+ * @see javax.jcr.nodetype.PropertyDefinition#isQueryOrderable()
+ */
public boolean isQueryOrderable() {
- return true; // TODO: JCR-2091
+ return ((QPropertyDefinition) itemDef).isQueryOrderable();
}
}
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java?rev=772929&r1=772928&r2=772929&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java Fri May 8 10:35:31 2009
@@ -51,6 +51,21 @@
private final boolean multiple;
/**
+ * The 'multiple' flag
+ */
+ private final Name[] availableQueryOperators;
+
+ /**
+ * The 'fullTextSearcheable' flag
+ */
+ private final boolean fullTextSearcheable;
+
+ /**
+ * The 'queryOrderable' flag
+ */
+ private final boolean queryOrderable;
+
+ /**
* Copy constructor.
*
* @param propDef some other property definition.
@@ -60,7 +75,10 @@
propDef.isAutoCreated(), propDef.isMandatory(),
propDef.getOnParentVersion(), propDef.isProtected(),
propDef.getDefaultValues(), propDef.isMultiple(),
- propDef.getRequiredType(), propDef.getValueConstraints());
+ propDef.getRequiredType(), propDef.getValueConstraints(),
+ propDef.getAvailableQueryOperators(),
+ propDef.isFullTextSearcheable(),
+ propDef.isQueryOrderable());
}
/**
@@ -80,12 +98,50 @@
* exist an empty array must be passed.
* @throws NullPointerException if <code>valueConstraints</code> is
* <code>null</code>.
+ * @deprecated Use {@link #QPropertyDefinitionImpl(Name, Name,
+ boolean, boolean, int, boolean, QValue[], boolean,
+ int, String[], Name[], boolean, boolean)} instead.
*/
public QPropertyDefinitionImpl(Name name, Name declaringNodeType,
boolean isAutoCreated, boolean isMandatory,
int onParentVersion, boolean isProtected,
QValue[] defaultValues, boolean isMultiple,
int requiredType, String[] valueConstraints) {
+ this(name, declaringNodeType, isAutoCreated, isMandatory,
+ onParentVersion, isProtected, defaultValues, isMultiple,
+ requiredType, valueConstraints, null, false, false);
+ }
+
+ /**
+ * Creates a new serializable qualified property definition.
+ *
+ * @param name the name of the child item.
+ * @param declaringNodeType the delaring node type
+ * @param isAutoCreated if this item is auto created.
+ * @param isMandatory if this is a mandatory item.
+ * @param onParentVersion the on parent version behaviour.
+ * @param isProtected if this item is protected.
+ * @param defaultValues the default values or <code>null</code> if there
+ * are none.
+ * @param isMultiple if this property is multi-valued.
+ * @param requiredType the required type for this property.
+ * @param valueConstraints the value constraints for this property. If none
+ * exist an empty array must be passed.
+ * @param availableQueryOperators
+ * @param isFullTextSearcheable
+ * @param isQueryOrderable
+ * @throws NullPointerException if <code>valueConstraints</code> is
+ * <code>null</code>.
+ * @since JCR 2.0
+ */
+ public QPropertyDefinitionImpl(Name name, Name declaringNodeType,
+ boolean isAutoCreated, boolean isMandatory,
+ int onParentVersion, boolean isProtected,
+ QValue[] defaultValues, boolean isMultiple,
+ int requiredType, String[] valueConstraints,
+ Name[] availableQueryOperators,
+ boolean isFullTextSearcheable,
+ boolean isQueryOrderable) {
super(name, declaringNodeType, isAutoCreated, isMandatory,
onParentVersion, isProtected);
if (valueConstraints == null) {
@@ -95,6 +151,9 @@
this.multiple = isMultiple;
this.requiredType = requiredType;
this.valueConstraints = valueConstraints;
+ this.availableQueryOperators = availableQueryOperators;
+ this.fullTextSearcheable = isFullTextSearcheable;
+ this.queryOrderable = isQueryOrderable;
}
//------------------------------------------------< QPropertyDefinition >---
@@ -128,6 +187,27 @@
/**
* {@inheritDoc}
+ */
+ public Name[] getAvailableQueryOperators() {
+ return availableQueryOperators;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFullTextSearcheable() {
+ return fullTextSearcheable;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isQueryOrderable() {
+ return queryOrderable;
+ }
+
+ /**
+ * {@inheritDoc}
*
* @return always <code>false</code>
*/
Modified: jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QPropertyDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QPropertyDefinition.java?rev=772929&r1=772928&r2=772929&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QPropertyDefinition.java (original)
+++ jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QPropertyDefinition.java Fri May 8 10:35:31 2009
@@ -61,4 +61,28 @@
* @return the 'multiple' flag.
*/
public boolean isMultiple();
+
+ /**
+ * Returns the availabe query operators.
+ *
+ * @return the availabe query operators.
+ * @since JCR 2.0
+ */
+ public Name[] getAvailableQueryOperators();
+
+ /**
+ * Reports whether this property definition is full text searchable.
+ *
+ * @return <code>true</code> if this property definition is full text searchable.
+ * @since JCR 2.0
+ */
+ public boolean isFullTextSearcheable();
+
+ /**
+ * Reports whether this property definition is query-orderable.
+ *
+ * @return <code>true</code> if this property definition is query-orderable.
+ * @since JCR 2.0
+ */
+ public boolean isQueryOrderable();
}
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/QPropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/QPropertyDefinitionImpl.java?rev=772929&r1=772928&r2=772929&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/QPropertyDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/QPropertyDefinitionImpl.java Fri May 8 10:35:31 2009
@@ -158,6 +158,30 @@
/**
* {@inheritDoc}
+ */
+ public Name[] getAvailableQueryOperators() {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2003 Add support for JCR 2.0. Implementation missing");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFullTextSearcheable() {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2003 Add support for JCR 2.0. Implementation missing");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isQueryOrderable() {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2003 Add support for JCR 2.0. Implementation missing");
+ }
+
+ /**
+ * {@inheritDoc}
*
* @return always <code>false</code>
*/
Modified: jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QPropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QPropertyDefinitionImpl.java?rev=772929&r1=772928&r2=772929&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QPropertyDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QPropertyDefinitionImpl.java Fri May 8 10:35:31 2009
@@ -18,14 +18,17 @@
import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.QValueFactory;
+import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
import org.apache.jackrabbit.spi.commons.conversion.NameException;
+import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
import org.apache.jackrabbit.spi.commons.value.ValueFormat;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.PropertyType;
+import javax.jcr.NamespaceException;
/**
* <code>QPropertyDefinitionImpl</code> implements a qualified property
@@ -54,7 +57,9 @@
propDef.getOnParentVersion(), propDef.isProtected(),
convertValues(propDef.getDefaultValues(), resolver, qValueFactory),
propDef.isMultiple(), propDef.getRequiredType(),
- convertConstraints(propDef.getValueConstraints(), resolver, qValueFactory, propDef.getRequiredType()));
+ convertConstraints(propDef.getValueConstraints(), resolver, qValueFactory, propDef.getRequiredType()),
+ convertQueryOperators(propDef.getAvailableQueryOperators(), resolver),
+ propDef.isFullTextSearchable(), propDef.isQueryOrderable());
}
/**
@@ -110,4 +115,21 @@
}
return constraints;
}
+
+ /**
+ * Convert String jcr names to Name objects.
+ *
+ * @param aqos
+ * @param resolver
+ * @return
+ * @throws NamespaceException
+ * @throws IllegalNameException
+ */
+ private static Name[] convertQueryOperators(String[] aqos, NamePathResolver resolver) throws NamespaceException, IllegalNameException {
+ Name[] names = new Name[aqos.length];
+ for (int i = 0; i < aqos.length; i++) {
+ names[i] = resolver.getQName(aqos[i]);
+ }
+ return names;
+ }
}