blob: 9b3e461298dee06656ed8aa9a3586ac971b51e3b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. 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.session.nodetype;
import javax.jcr.Value;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.PropertyDefinition;
import org.apache.jackrabbit.session.SessionHelper;
import org.apache.jackrabbit.state.nodetype.PropertyDefinitionState;
/**
* Immutable and session-bound property definition frontend. An instance
* of this class presents the underlying property definition state using
* the JCR PropertyDef interface.
* <p>
* By not exposing the setter methods of the underlying state instance,
* this class intentionally makes it impossible for a JCR client to modify
* property definition information.
*/
final class SessionPropertyDefinition extends SessionItemDefinition
implements PropertyDefinition {
/** The underlying property definition state. */
private final PropertyDefinitionState state;
/**
* Creates a property definition frontend that is bound to the
* given node type, session, and underlying property definition state.
*
* @param helper helper for accessing the current session
* @param type declaring node type
* @param state underlying property definition state
*/
public SessionPropertyDefinition(
SessionHelper helper, NodeType type, PropertyDefinitionState state) {
super(helper, type, state);
this.state = state;
}
/**
* Returns the required type of the defined property. The returned value
* is retrieved from the underlying property definition state.
*
* @return required property type
* @see PropertyDef#getRequiredType()
*/
public int getRequiredType() {
return state.getRequiredType();
}
/**
* Returns the constraint strings that specify the value constraint
* of the defined property. The returned string array is retrieved
* from the underlying property definition state, but is not by itself
* a part of the state and can thus be modified freely.
*
* @return value constraint strings
* @see PropertyDef#getValueConstraints()
*/
public String[] getValueConstraints() {
return null; // TODO: See PropertyDefinitionState
}
/**
* Returns the value of the Multiple property definition property.
* The returned value is retrieved from the underlying property
* definition state.
*
* @return Multiple property value
* @see PropertyDef#isMultiple()
*/
public boolean isMultiple() {
return state.isMultiple();
}
/** Not implemented. */
public Value[] getDefaultValues() {
return null; // TODO
}
}