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(); } }
@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(); } }