You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/07/19 20:16:11 UTC
svn commit: r1363452 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type:
DefBuilderFactory.java NodeDefinitionTemplateImpl.java
NodeTypeTemplateImpl.java PropertyDefinitionTemplateImpl.java
Author: jukka
Date: Thu Jul 19 18:16:10 2012
New Revision: 1363452
URL: http://svn.apache.org/viewvc?rev=1363452&view=rev
Log:
OAK-66: JCR Node Type Management
Add type templates based on the CND reader code from jcr-commons
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/DefBuilderFactory.java (with props)
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java (with props)
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java (with props)
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java (with props)
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/DefBuilderFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/DefBuilderFactory.java?rev=1363452&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/DefBuilderFactory.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/DefBuilderFactory.java Thu Jul 19 18:16:10 2012
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.type;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeTemplate;
+
+import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory;
+
+class DefBuilderFactory extends
+ DefinitionBuilderFactory<NodeTypeTemplate, Map<String, String>> {
+
+ private Map<String, String> namespaces = new HashMap<String, String>();
+
+ @Override
+ public NodeTypeTemplateImpl newNodeTypeDefinitionBuilder()
+ throws RepositoryException {
+ return new NodeTypeTemplateImpl() {
+ @Override
+ protected NodeType getNodeType(String name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ protected Value createValue(String value)
+ throws RepositoryException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ @Override
+ public Map<String, String> getNamespaceMapping() {
+ return namespaces;
+ }
+
+ @Override
+ public void setNamespaceMapping(Map<String, String> namespaces) {
+ this.namespaces = namespaces;
+ }
+
+ @Override
+ public void setNamespace(String prefix, String uri) {
+ namespaces.put(prefix, uri);
+ }
+
+}
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/DefBuilderFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java?rev=1363452&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java Thu Jul 19 18:16:10 2012
@@ -0,0 +1,192 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.type;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeTemplate;
+
+import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeDefinitionBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+abstract class NodeDefinitionTemplateImpl
+ extends AbstractNodeDefinitionBuilder<NodeTypeTemplate>
+ implements NodeDefinitionTemplate {
+
+ private static final Logger log =
+ LoggerFactory.getLogger(NodeDefinitionTemplateImpl.class);
+
+ private String defaultPrimaryTypeName = null;
+
+ private String[] requiredPrimaryTypeNames = null;
+
+ protected NodeType getNodeType(String name) throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
+ @Override
+ public void build() {
+ // do nothing by default
+ }
+
+ @Override
+ public NodeType getDeclaringNodeType() {
+ return null;
+ }
+
+ @Override
+ public void setDeclaringNodeType(String name) {
+ // ignore
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public boolean isAutoCreated() {
+ return autocreate;
+ }
+
+ @Override
+ public void setAutoCreated(boolean autocreate) {
+ this.autocreate = autocreate;
+ }
+
+ @Override
+ public boolean isProtected() {
+ return isProtected;
+ }
+
+ @Override
+ public void setProtected(boolean isProtected) {
+ this.isProtected = isProtected;
+ }
+
+ @Override
+ public boolean isMandatory() {
+ return isMandatory;
+ }
+
+ @Override
+ public void setMandatory(boolean isMandatory) {
+ this.isMandatory = isMandatory;
+ }
+
+ @Override
+ public int getOnParentVersion() {
+ return onParent;
+ }
+
+ @Override
+ public void setOnParentVersion(int onParent) {
+ this.onParent = onParent;
+ }
+
+ @Override
+ public boolean allowsSameNameSiblings() {
+ return allowSns;
+ }
+
+ @Override
+ public void setSameNameSiblings(boolean allowSns) {
+ this.allowSns = allowSns;
+ }
+
+ @Override
+ public void setAllowsSameNameSiblings(boolean allowSns) {
+ setSameNameSiblings(allowSns);
+ }
+
+ @Override
+ public NodeType getDefaultPrimaryType() {
+ if (defaultPrimaryTypeName != null) {
+ try {
+ return getNodeType(defaultPrimaryTypeName);
+ } catch (RepositoryException e) {
+ log.warn("Unable to access default primary type "
+ + defaultPrimaryTypeName + " of " + name, e);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public String getDefaultPrimaryTypeName() {
+ return defaultPrimaryTypeName;
+ }
+
+ @Override
+ public void setDefaultPrimaryTypeName(String name) {
+ this.defaultPrimaryTypeName = name;
+ }
+
+ @Override
+ public void setDefaultPrimaryType(String name) {
+ setDefaultPrimaryTypeName(name);
+ }
+
+ @Override
+ public NodeType[] getRequiredPrimaryTypes() {
+ if (requiredPrimaryTypeNames == null) {
+ return new NodeType[0];
+ } else {
+ List<NodeType> types =
+ new ArrayList<NodeType>(requiredPrimaryTypeNames.length);
+ for (int i = 0; i < requiredPrimaryTypeNames.length; i++) {
+ try {
+ types.add(getNodeType(requiredPrimaryTypeNames[i]));
+ } catch (RepositoryException e) {
+ log.warn("Unable to required primary primary type "
+ + requiredPrimaryTypeNames[i] + " of " + name, e);
+ }
+ }
+ return types.toArray(new NodeType[types.size()]);
+ }
+ }
+
+ @Override
+ public String[] getRequiredPrimaryTypeNames() {
+ return requiredPrimaryTypeNames;
+ }
+
+ @Override
+ public void setRequiredPrimaryTypeNames(String[] names) {
+ this.requiredPrimaryTypeNames = names;
+ }
+
+ @Override
+ public void addRequiredPrimaryType(String name) {
+ if (requiredPrimaryTypeNames == null) {
+ requiredPrimaryTypeNames = new String[] { name };
+ } else {
+ String[] names = new String[requiredPrimaryTypeNames.length + 1];
+ System.arraycopy(requiredPrimaryTypeNames, 0, names, 0, requiredPrimaryTypeNames.length);
+ names[requiredPrimaryTypeNames.length] = name;
+ requiredPrimaryTypeNames = names;
+ }
+
+ }
+
+}
\ No newline at end of file
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java?rev=1363452&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java Thu Jul 19 18:16:10 2012
@@ -0,0 +1,232 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.type;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeDefinition;
+import javax.jcr.nodetype.NodeTypeTemplate;
+import javax.jcr.nodetype.PropertyDefinition;
+import javax.jcr.nodetype.PropertyDefinitionTemplate;
+
+import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder;
+
+abstract class NodeTypeTemplateImpl
+ extends AbstractNodeTypeDefinitionBuilder<NodeTypeTemplate>
+ implements NodeTypeTemplate {
+
+ private String primaryItemName = null;
+
+ private String[] superTypeNames = new String[0];
+
+ private final List<PropertyDefinitionTemplate> propertyDefinitionTemplates =
+ new ArrayList<PropertyDefinitionTemplate>();
+
+ private final List<NodeDefinitionTemplate> nodeDefinitionTemplates =
+ new ArrayList<NodeDefinitionTemplate>();
+
+ public NodeTypeTemplateImpl() {
+ }
+
+ public NodeTypeTemplateImpl(NodeTypeDefinition ntd) {
+ setName(ntd.getName());
+ setAbstract(ntd.isAbstract());
+ setMixin(ntd.isMixin());
+ setOrderableChildNodes(ntd.hasOrderableChildNodes());
+ setQueryable(ntd.isQueryable());
+ setPrimaryItemName(ntd.getPrimaryItemName());
+ setDeclaredSuperTypeNames(ntd.getDeclaredSupertypeNames());
+
+ for (PropertyDefinition pd : getDeclaredPropertyDefinitions()) {
+ PropertyDefinitionTemplateImpl pdt = newPropertyDefinitionBuilder();
+ pdt.setDeclaringNodeType(pd.getDeclaringNodeType().getName());
+ pdt.setName(pd.getName());
+ pdt.setProtected(pd.isProtected());
+ pdt.setMandatory(pd.isMandatory());
+ pdt.setAutoCreated(pd.isAutoCreated());
+ pdt.setOnParentVersion(pd.getOnParentVersion());
+ pdt.setMultiple(pd.isMultiple());
+ pdt.setRequiredType(pd.getRequiredType());
+ pdt.setDefaultValues(pd.getDefaultValues());
+ pdt.setValueConstraints(pd.getValueConstraints());
+ pdt.setFullTextSearchable(pd.isFullTextSearchable());
+ pdt.setAvailableQueryOperators(pd.getAvailableQueryOperators());
+ pdt.setQueryOrderable(pd.isQueryOrderable());
+ pdt.build();
+ }
+
+ for (NodeDefinition nd : getDeclaredChildNodeDefinitions()) {
+ NodeDefinitionTemplateImpl ndt = newNodeDefinitionBuilder();
+ ndt.setDeclaringNodeType(nd.getDeclaringNodeType().getName());
+ ndt.setName(nd.getName());
+ ndt.setProtected(nd.isProtected());
+ ndt.setMandatory(nd.isMandatory());
+ ndt.setAutoCreated(nd.isAutoCreated());
+ ndt.setOnParentVersion(nd.getOnParentVersion());
+ ndt.setSameNameSiblings(nd.allowsSameNameSiblings());
+ ndt.setDefaultPrimaryTypeName(nd.getDefaultPrimaryTypeName());
+ ndt.setRequiredPrimaryTypeNames(nd.getRequiredPrimaryTypeNames());
+ ndt.build();
+ }
+ }
+
+ protected abstract Value createValue(String value)
+ throws RepositoryException;
+
+ protected abstract NodeType getNodeType(String name);
+
+ @Override
+ public NodeTypeTemplate build() {
+ return this;
+ }
+
+ @Override
+ public PropertyDefinitionTemplateImpl newPropertyDefinitionBuilder() {
+ return new PropertyDefinitionTemplateImpl() {
+ @Override
+ protected Value createValue(String value)
+ throws RepositoryException {
+ return NodeTypeTemplateImpl.this.createValue(value);
+ }
+ @Override
+ public void build() {
+ getPropertyDefinitionTemplates().add(this);
+ }
+ };
+ }
+
+ @Override
+ public NodeDefinitionTemplateImpl newNodeDefinitionBuilder() {
+ return new NodeDefinitionTemplateImpl() {
+ @Override
+ protected NodeType getNodeType(String name) {
+ return NodeTypeTemplateImpl.this.getNodeType(name);
+ }
+ @Override
+ public void build() {
+ getNodeDefinitionTemplates().add(this);
+ }
+ };
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public boolean isAbstract() {
+ return isAbstract;
+ }
+
+ @Override
+ public void setAbstract(boolean abstractStatus) {
+ this.isAbstract = abstractStatus;
+ }
+
+ @Override
+ public boolean isMixin() {
+ return isMixin;
+ }
+
+ @Override
+ public void setMixin(boolean mixin) {
+ this.isMixin = mixin;
+ }
+
+ @Override
+ public boolean hasOrderableChildNodes() {
+ return isOrderable ;
+ }
+
+ @Override
+ public void setOrderableChildNodes(boolean orderable) {
+ this.isOrderable = orderable;
+ }
+
+ @Override
+ public boolean isQueryable() {
+ return queryable;
+ }
+
+ @Override
+ public void setQueryable(boolean queryable) {
+ this.queryable = queryable;
+ }
+
+ @Override
+ public String getPrimaryItemName() {
+ return primaryItemName ;
+ }
+
+ @Override
+ public void setPrimaryItemName(String name) {
+ this.primaryItemName = name;
+ }
+
+ @Override
+ public String[] getDeclaredSupertypeNames() {
+ return superTypeNames;
+ }
+
+ @Override
+ public void setDeclaredSuperTypeNames(String[] names) {
+ this.superTypeNames = names;
+ }
+
+ @Override
+ public void addSupertype(String name) throws RepositoryException {
+ String[] names = new String[superTypeNames.length + 1];
+ System.arraycopy(superTypeNames, 0, names, 0, superTypeNames.length);
+ names[superTypeNames.length] = name;
+ superTypeNames = names;
+ }
+
+ @Override
+ public List<PropertyDefinitionTemplate> getPropertyDefinitionTemplates() {
+ return propertyDefinitionTemplates;
+ }
+
+ @Override
+ public List<NodeDefinitionTemplate> getNodeDefinitionTemplates() {
+ return nodeDefinitionTemplates;
+ }
+
+ @Override
+ public PropertyDefinition[] getDeclaredPropertyDefinitions() {
+ return propertyDefinitionTemplates.toArray(
+ new PropertyDefinition[propertyDefinitionTemplates.size()]);
+ }
+
+ @Override
+ public NodeDefinition[] getDeclaredChildNodeDefinitions() {
+ return nodeDefinitionTemplates.toArray(
+ new NodeDefinition[nodeDefinitionTemplates.size()]);
+ }
+
+}
\ No newline at end of file
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java?rev=1363452&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java Thu Jul 19 18:16:10 2012
@@ -0,0 +1,189 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.type;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.Value;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeTemplate;
+import javax.jcr.nodetype.PropertyDefinitionTemplate;
+
+import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractPropertyDefinitionBuilder;
+
+abstract class PropertyDefinitionTemplateImpl
+ extends AbstractPropertyDefinitionBuilder<NodeTypeTemplate>
+ implements PropertyDefinitionTemplate {
+
+ private String[] valueConstraints = null;
+
+ private Value[] defaultValues = null;
+
+ protected Value createValue(String value) throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
+ @Override
+ public void build() {
+ // do nothing by default
+ }
+
+ @Override
+ public NodeType getDeclaringNodeType() {
+ return null;
+ }
+
+ @Override
+ public void setDeclaringNodeType(String name) {
+ // ignore
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public boolean isAutoCreated() {
+ return autocreate;
+ }
+
+ @Override
+ public void setAutoCreated(boolean autocreate) {
+ this.autocreate = autocreate;
+ }
+
+ @Override
+ public boolean isProtected() {
+ return isProtected;
+ }
+
+ @Override
+ public void setProtected(boolean isProtected) {
+ this.isProtected = isProtected;
+ }
+
+ @Override
+ public boolean isMandatory() {
+ return isMandatory;
+ }
+
+ @Override
+ public void setMandatory(boolean isMandatory) {
+ this.isMandatory = isMandatory;
+ }
+
+ @Override
+ public int getOnParentVersion() {
+ return onParent;
+ }
+
+ @Override
+ public void setOnParentVersion(int onParent) {
+ this.onParent = onParent;
+ }
+
+ @Override
+ public void setRequiredType(int requiredType) {
+ this.requiredType = requiredType;
+ }
+
+ @Override
+ public boolean isMultiple() {
+ return isMultiple;
+ }
+
+ @Override
+ public void setMultiple(boolean isMultiple) {
+ this.isMultiple = isMultiple;
+ }
+
+ @Override
+ public boolean isQueryOrderable() {
+ return queryOrderable;
+ }
+
+ @Override
+ public void setQueryOrderable(boolean queryOrderable) {
+ this.queryOrderable = queryOrderable;
+ }
+
+ @Override
+ public boolean isFullTextSearchable() {
+ return fullTextSearchable;
+ }
+
+ @Override
+ public void setFullTextSearchable(boolean fullTextSearchable) {
+ this.fullTextSearchable = fullTextSearchable;
+ }
+
+ @Override
+ public String[] getAvailableQueryOperators() {
+ return queryOperators;
+ }
+
+ @Override
+ public void setAvailableQueryOperators(String[] queryOperators) {
+ this.queryOperators = queryOperators;
+ }
+
+ @Override
+ public Value[] getDefaultValues() {
+ return defaultValues;
+ }
+
+ @Override
+ public void setDefaultValues(Value[] defaultValues) {
+ this.defaultValues = defaultValues;
+ }
+
+ @Override
+ public void addDefaultValues(String value) throws RepositoryException {
+ if (defaultValues == null) {
+ defaultValues = new Value[] { createValue(value) };
+ } else {
+ Value[] values = new Value[defaultValues.length + 1];
+ System.arraycopy(defaultValues, 0, values, 0, defaultValues.length);
+ values[defaultValues.length] = createValue(value);
+ defaultValues = values;
+ }
+ }
+
+ @Override
+ public String[] getValueConstraints() {
+ return valueConstraints;
+ }
+
+ @Override
+ public void setValueConstraints(String[] constraints) {
+ this.valueConstraints = constraints;
+ }
+
+ @Override
+ public void addValueConstraint(String constraint) {
+ if (valueConstraints == null) {
+ valueConstraints = new String[] { constraint };
+ } else {
+ String[] constraints = new String[valueConstraints.length + 1];
+ System.arraycopy(valueConstraints, 0, constraints, 0, valueConstraints.length);
+ constraints[valueConstraints.length] = constraint;
+ valueConstraints = constraints;
+ }
+ }
+
+}
\ No newline at end of file
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java
------------------------------------------------------------------------------
svn:eol-style = native