示例#1
0
  /**
   * Gets the list of properties available to the given node.
   *
   * @param node the node instance.
   * @return list of property names.
   * @throws RepositoryException
   */
  private String[] propertyDefs(Node node) throws RepositoryException {
    ArrayList<String> list = new ArrayList();

    NodeType primaryType = node.getPrimaryNodeType();
    PropertyDefinition[] defs = primaryType.getPropertyDefinitions();

    for (PropertyDefinition def : defs) {
      if (!def.isProtected()) {
        list.add(def.getName());
      }
    }

    NodeType[] mixinType = node.getMixinNodeTypes();
    for (NodeType type : mixinType) {
      defs = type.getPropertyDefinitions();
      for (PropertyDefinition def : defs) {
        if (!def.isProtected()) {
          list.add(def.getName());
        }
      }
    }

    String[] res = new String[list.size()];
    list.toArray(res);
    return res;
  }
示例#2
0
  /**
   * Returns a {@code NodeTypeTemplate} based on the definition given in {@code ntd}. This template
   * can then be used to define a node type and passed to {@link
   * JcrNodeTypeManager#registerNodeType(NodeTypeDefinition, boolean)}
   *
   * @param ntd an existing node type definition; null values will be ignored
   * @return an empty {@code NodeTypeTemplate} which can then be used to define a node type and
   *     passed to {@link JcrNodeTypeManager#registerNodeType(NodeTypeDefinition, boolean)}.
   * @throws RepositoryException if another error occurs
   */
  @Override
  @SuppressWarnings("unchecked")
  public NodeTypeTemplate createNodeTypeTemplate(NodeTypeDefinition ntd)
      throws RepositoryException {
    NodeTypeTemplate ntt = new JcrNodeTypeTemplate(context(), true);

    if (ntd != null) {
      ntt.setName(ntd.getName());
      ntt.setAbstract(ntd.isAbstract());
      ntt.setDeclaredSuperTypeNames(ntd.getDeclaredSupertypeNames());
      ntt.setMixin(ntd.isMixin());
      ntt.setOrderableChildNodes(ntd.hasOrderableChildNodes());
      ntt.setPrimaryItemName(ntd.getPrimaryItemName());
      ntt.setQueryable(ntd.isQueryable());

      // copy child nodes and props
      for (NodeDefinition nodeDefinition : ntd.getDeclaredChildNodeDefinitions()) {
        JcrNodeDefinitionTemplate ndt = new JcrNodeDefinitionTemplate(context());

        ndt.setAutoCreated(nodeDefinition.isAutoCreated());
        ndt.setDefaultPrimaryTypeName(nodeDefinition.getDefaultPrimaryTypeName());
        ndt.setMandatory(nodeDefinition.isMandatory());
        if (nodeDefinition.getName() != null) {
          ndt.setName(nodeDefinition.getName());
        }
        ndt.setOnParentVersion(nodeDefinition.getOnParentVersion());
        ndt.setProtected(nodeDefinition.isProtected());
        ndt.setRequiredPrimaryTypeNames(nodeDefinition.getRequiredPrimaryTypeNames());
        ndt.setSameNameSiblings(nodeDefinition.allowsSameNameSiblings());

        ntt.getNodeDefinitionTemplates().add(ndt);
      }

      for (PropertyDefinition propertyDefinition : ntd.getDeclaredPropertyDefinitions()) {
        JcrPropertyDefinitionTemplate pdt = new JcrPropertyDefinitionTemplate(context());

        pdt.setAutoCreated(propertyDefinition.isAutoCreated());
        pdt.setAvailableQueryOperators(propertyDefinition.getAvailableQueryOperators());
        pdt.setDefaultValues(propertyDefinition.getDefaultValues());
        pdt.setFullTextSearchable(propertyDefinition.isFullTextSearchable());
        pdt.setMandatory(propertyDefinition.isMandatory());
        pdt.setMultiple(propertyDefinition.isMultiple());
        if (propertyDefinition.getName() != null) {
          pdt.setName(propertyDefinition.getName());
        }
        pdt.setOnParentVersion(propertyDefinition.getOnParentVersion());
        pdt.setProtected(propertyDefinition.isProtected());
        pdt.setQueryOrderable(propertyDefinition.isQueryOrderable());
        pdt.setRequiredType(propertyDefinition.getRequiredType());
        pdt.setValueConstraints(propertyDefinition.getValueConstraints());

        ntt.getPropertyDefinitionTemplates().add(pdt);
      }
    }

    return ntt;
  }
示例#3
0
  private int type(Node node, String propertyName) throws RepositoryException {
    PropertyDefinition[] defs = node.getPrimaryNodeType().getPropertyDefinitions();
    for (PropertyDefinition def : defs) {
      if (def.getName().equals(propertyName)) {
        return def.getRequiredType();
      }
    }

    NodeType[] mixins = node.getMixinNodeTypes();
    for (NodeType type : mixins) {
      defs = type.getPropertyDefinitions();
      for (PropertyDefinition def : defs) {
        if (def.getName().equals(propertyName)) {
          return def.getRequiredType();
        }
      }
    }

    return -1;
  }
示例#4
0
  /**
   * Given a node type and a property name, figure out an appropraite jcr value type
   *
   * @param nodeType
   * @param propertyName
   * @return
   */
  public int getPropertyType(final NodeType nodeType, final String propertyName) {
    final PropertyDefinition[] propertyDefinitions = nodeType.getPropertyDefinitions();
    int type = UNDEFINED;
    for (final PropertyDefinition propertyDefinition : propertyDefinitions) {
      if (propertyDefinition.getName().equals(propertyName)) {
        if (type != UNDEFINED) {
          return UNDEFINED;
        }

        type = propertyDefinition.getRequiredType();
      }
    }

    return type;
  }
  private JcrPropertyDefinition propertyDefinitionFrom(PropertyDefinition propDefn)
      throws RepositoryException {
    Name propertyName = nameFactory.create(propDefn.getName());
    int onParentVersionBehavior = propDefn.getOnParentVersion();
    int requiredType = propDefn.getRequiredType();
    boolean mandatory = propDefn.isMandatory();
    boolean multiple = propDefn.isMultiple();
    boolean autoCreated = propDefn.isAutoCreated();
    boolean isProtected = propDefn.isProtected();
    boolean fullTextSearchable = propDefn.isFullTextSearchable();
    boolean queryOrderable = propDefn.isQueryOrderable();

    Value[] defaultValues = propDefn.getDefaultValues();
    JcrValue[] jcrDefaultValues = null;
    if (defaultValues != null) {
      jcrDefaultValues = new JcrValue[defaultValues.length];
      for (int i = 0; i != defaultValues.length; ++i) {
        Value value = defaultValues[i];
        jcrDefaultValues[i] = new JcrValue(this.context.getValueFactories(), value);
      }
    }

    String[] valueConstraints = propDefn.getValueConstraints();
    String[] queryOperators = propDefn.getAvailableQueryOperators();
    if (valueConstraints == null) valueConstraints = new String[0];
    NodeKey prototypeKey = repository.repositoryCache().getSystemKey();
    return new JcrPropertyDefinition(
        this.context,
        null,
        prototypeKey,
        propertyName,
        onParentVersionBehavior,
        autoCreated,
        mandatory,
        isProtected,
        jcrDefaultValues,
        requiredType,
        valueConstraints,
        multiple,
        fullTextSearchable,
        queryOrderable,
        queryOperators);
  }