private void writeIndexProviders(XMLExtendedStreamWriter writer, ModelNode repository)
      throws XMLStreamException {
    if (has(repository, ModelKeys.INDEX_PROVIDER)) {
      writer.writeStartElement(Element.INDEX_PROVIDERS.getLocalName());
      ModelNode providerNode = repository.get(ModelKeys.INDEX_PROVIDER);
      for (Property provider : providerNode.asPropertyList()) {
        writer.writeStartElement(Element.INDEX_PROVIDER.getLocalName());
        writer.writeAttribute(Attribute.NAME.getLocalName(), provider.getName());
        ModelNode prop = provider.getValue();
        ModelAttributes.CLASSNAME.marshallAsAttribute(prop, writer);
        ModelAttributes.MODULE.marshallAsAttribute(prop, writer);
        ModelAttributes.RELATIVE_TO.marshallAsAttribute(prop, writer);
        ModelAttributes.PATH.marshallAsAttribute(prop, writer);

        // Write out the extra properties ...
        if (has(prop, ModelKeys.PROPERTIES)) {
          ModelNode properties = prop.get(ModelKeys.PROPERTIES);
          for (Property property : properties.asPropertyList()) {
            writer.writeAttribute(property.getName(), property.getValue().asString());
          }
        }
        writer.writeEndElement();
      }
      writer.writeEndElement();
    }
  }
Exemplo n.º 2
0
 @Override
 protected void writeBinaryStorageConfiguration(
     String repositoryName, OperationContext context, ModelNode model, EditableDocument binaries)
     throws OperationFailedException {
   super.writeCommonBinaryStorageConfiguration(repositoryName, context, model, binaries);
   binaries.set(FieldName.TYPE, FieldValue.BINARY_STORAGE_TYPE_FILE);
   String defaultPath = "modeshape/" + repositoryName + "/binaries";
   ModelNode pathNode = ModelAttributes.PATH.resolveModelAttribute(context, model);
   String path = pathNode.isDefined() ? pathNode.asString() : defaultPath;
   String relativeTo =
       ModelAttributes.RELATIVE_TO.resolveModelAttribute(context, model).asString();
   if (model.has(ModelKeys.RELATIVE_TO)
       && model.get(ModelKeys.RELATIVE_TO).asString().contains(DATA_DIR_VARIABLE)) {
     binaryStoragePathInDataDirectory = path;
   }
   path = relativeTo + path;
   binaries.set(FieldName.DIRECTORY, path);
 }
  private ModelNode parseFileBinaryStorage(
      final XMLExtendedStreamReader reader, final String repositoryName) throws XMLStreamException {

    final ModelNode storageType = new ModelNode();
    storageType.get(OP).set(ADD);
    storageType
        .get(OP_ADDR)
        .add(SUBSYSTEM, ModeShapeExtension.SUBSYSTEM_NAME)
        .add(ModelKeys.REPOSITORY, repositoryName)
        .add(ModelKeys.CONFIGURATION, ModelKeys.BINARY_STORAGE)
        .add(ModelKeys.STORAGE_TYPE, ModelKeys.FILE_BINARY_STORAGE);

    if (reader.getAttributeCount() > 0) {
      for (int i = 0; i < reader.getAttributeCount(); i++) {
        String attrName = reader.getAttributeLocalName(i);
        String attrValue = reader.getAttributeValue(i);
        Attribute attribute = Attribute.forName(attrName);
        switch (attribute) {
            // The rest go on the ModelNode for the type ...
          case RELATIVE_TO:
            ModelAttributes.RELATIVE_TO.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case PATH:
            ModelAttributes.PATH.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case MIN_VALUE_SIZE:
            ModelAttributes.MINIMUM_BINARY_SIZE.parseAndSetParameter(
                attrValue, storageType, reader);
            break;
          default:
            throw ParseUtils.unexpectedAttribute(reader, i);
        }
      }
    }
    requireNoElements(reader);

    return storageType;
  }
  private ModelNode parseFileIndexStorage(
      final XMLExtendedStreamReader reader, final String repositoryName, String name)
      throws XMLStreamException {
    final ModelNode storageType = new ModelNode();
    storageType.get(OP).set(ADD);
    storageType
        .get(OP_ADDR)
        .add(SUBSYSTEM, ModeShapeExtension.SUBSYSTEM_NAME)
        .add(ModelKeys.REPOSITORY, repositoryName)
        .add(ModelKeys.CONFIGURATION, ModelKeys.INDEX_STORAGE)
        .add(ModelKeys.STORAGE_TYPE, name);

    if (reader.getAttributeCount() > 0) {
      for (int i = 0; i < reader.getAttributeCount(); i++) {
        String attrName = reader.getAttributeLocalName(i);
        String attrValue = reader.getAttributeValue(i);
        Attribute attribute = Attribute.forName(attrName);
        switch (attribute) {
            // Set these as properties on the storage ModelNode ...
          case FORMAT:
            ModelAttributes.INDEX_FORMAT.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case REBUILD_UPON_STARTUP:
            ModelAttributes.REBUILD_INDEXES_UPON_STARTUP.parseAndSetParameter(
                attrValue, storageType, reader);
            break;
          case THREAD_POOL:
            ModelAttributes.THREAD_POOL.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case BATCH_SIZE:
            ModelAttributes.BATCH_SIZE.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case READER_STRATEGY:
            ModelAttributes.READER_STRATEGY.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case MODE:
            ModelAttributes.MODE.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case ASYNC_THREAD_POOL_SIZE:
            ModelAttributes.ASYNC_THREAD_POOL_SIZE.parseAndSetParameter(
                attrValue, storageType, reader);
            break;
          case ASYNC_MAX_QUEUE_SIZE:
            ModelAttributes.ASYNC_MAX_QUEUE_SIZE.parseAndSetParameter(
                attrValue, storageType, reader);
            break;
          case ANALYZER_CLASSNAME:
            ModelAttributes.ANALYZER_CLASSNAME.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case ANALYZER_MODULE:
            ModelAttributes.ANALYZER_MODULE.parseAndSetParameter(attrValue, storageType, reader);
            break;
            // These are file-related
          case RELATIVE_TO:
            ModelAttributes.RELATIVE_TO.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case PATH:
            ModelAttributes.PATH.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case ACCESS_TYPE:
            ModelAttributes.ACCESS_TYPE.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case LOCKING_STRATEGY:
            ModelAttributes.LOCKING_STRATEGY.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case REFRESH_PERIOD:
            ModelAttributes.REFRESH_PERIOD.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case COPY_BUFFER_SIZE:
            ModelAttributes.COPY_BUFFER_SIZE.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case SOURCE_PATH:
            ModelAttributes.SOURCE_PATH.parseAndSetParameter(attrValue, storageType, reader);
            break;
          case SOURCE_RELATIVE_TO:
            ModelAttributes.SOURCE_RELATIVE_TO.parseAndSetParameter(attrValue, storageType, reader);
            break;
            // These are JMS-related
          case CONNECTION_FACTORY_JNDI_NAME:
            ModelAttributes.CONNECTION_FACTORY_JNDI_NAME.parseAndSetParameter(
                attrValue, storageType, reader);
            break;
          case QUEUE_JNDI_NAME:
            ModelAttributes.QUEUE_JNDI_NAME.parseAndSetParameter(attrValue, storageType, reader);
            break;
          default:
            storageType.get(attrName).set(attrValue);
            break;
        }
      }
    }
    requireNoElements(reader);

    return storageType;
  }
  private void writeBinaryStorageModel(
      XMLExtendedStreamWriter writer, String storageType, ModelNode storage)
      throws XMLStreamException {
    if (ModelKeys.FILE_BINARY_STORAGE.equals(storageType)) {
      // This is the default, but there is no default value for the ModelAttributes.PATH (which is
      // required),
      // which means we always have to write this out. If it is the default binary storage, then
      // there
      // won't even be a 'binary-storage=BINARIES' model node.
      writer.writeStartElement(Element.FILE_BINARY_STORAGE.getLocalName());
      ModelAttributes.MINIMUM_BINARY_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MINIMUM_STRING_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.PATH.marshallAsAttribute(storage, false, writer);
      ModelAttributes.RELATIVE_TO.marshallAsAttribute(storage, false, writer);
      ModelAttributes.STORE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MIME_TYPE_DETECTION.marshallAsAttribute(storage, false, writer);
      writer.writeEndElement();
    } else if (ModelKeys.CACHE_BINARY_STORAGE.equals(storageType)) {
      writer.writeStartElement(Element.CACHE_BINARY_STORAGE.getLocalName());
      ModelAttributes.MINIMUM_BINARY_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MINIMUM_STRING_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.DATA_CACHE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.METADATA_CACHE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.CHUNK_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.CACHE_CONFIG.marshallAsAttribute(storage, false, writer);
      ModelAttributes.STORE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MIME_TYPE_DETECTION.marshallAsAttribute(storage, false, writer);
      writer.writeEndElement();
    } else if (ModelKeys.DB_BINARY_STORAGE.equals(storageType)) {
      writer.writeStartElement(Element.DB_BINARY_STORAGE.getLocalName());
      ModelAttributes.MINIMUM_BINARY_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MINIMUM_STRING_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.DATA_SOURCE_JNDI_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.STORE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MIME_TYPE_DETECTION.marshallAsAttribute(storage, false, writer);
      writer.writeEndElement();
    } else if (ModelKeys.COMPOSITE_BINARY_STORAGE.equals(storageType)) {
      writer.writeStartElement(Element.COMPOSITE_BINARY_STORAGE.getLocalName());
      ModelAttributes.MINIMUM_BINARY_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MINIMUM_STRING_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.STORE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MIME_TYPE_DETECTION.marshallAsAttribute(storage, false, writer);

      writeNestedStoresOfType(
          storage, ModelKeys.NESTED_STORAGE_TYPE_FILE, ModelKeys.FILE_BINARY_STORAGE, writer);
      writeNestedStoresOfType(
          storage, ModelKeys.NESTED_STORAGE_TYPE_CACHE, ModelKeys.CACHE_BINARY_STORAGE, writer);
      writeNestedStoresOfType(
          storage, ModelKeys.NESTED_STORAGE_TYPE_DB, ModelKeys.DB_BINARY_STORAGE, writer);
      writeNestedStoresOfType(
          storage, ModelKeys.NESTED_STORAGE_TYPE_CUSTOM, ModelKeys.CUSTOM_BINARY_STORAGE, writer);

      writer.writeEndElement();
    } else if (ModelKeys.CUSTOM_BINARY_STORAGE.equals(storageType)) {
      writer.writeStartElement(Element.CUSTOM_BINARY_STORAGE.getLocalName());
      ModelAttributes.MINIMUM_BINARY_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MINIMUM_STRING_SIZE.marshallAsAttribute(storage, false, writer);
      ModelAttributes.STORE_NAME.marshallAsAttribute(storage, false, writer);
      ModelAttributes.MIME_TYPE_DETECTION.marshallAsAttribute(storage, false, writer);
      for (String key : storage.keys()) {
        if (key.equals(ModelKeys.CLASSNAME)) {
          ModelAttributes.CLASSNAME.marshallAsAttribute(storage, false, writer);
        } else if (key.equals(ModelKeys.MODULE)) {
          ModelAttributes.MODULE.marshallAsAttribute(storage, false, writer);
        } else {
          writer.writeAttribute(key, storage.get(key).asString());
        }
      }
      writer.writeEndElement();
    }
  }