예제 #1
0
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   super.merge(mergeWith, mergeContext);
   if (!this.getClass().equals(mergeWith.getClass())) {
     return;
   }
   OntologySettings mergeSettings = ((OntologyMapper) mergeWith).ontologySettings;
   if (mergeSettings.getOntologyUri() != null
       && !mergeSettings.getOntologyUri().equals(ontologySettings.getOntologyUri())) {
     mergeContext.addConflict("mapper [" + names.fullName() + "] has different ontology URI");
   } else if (mergeSettings.getOlsBaseUrl() != null
       && !mergeSettings.getOlsBaseUrl().equals(ontologySettings.getOlsBaseUrl())) {
     mergeContext.addConflict("mapper [" + names.fullName() + "] has different OLS base URL");
   }
 }
예제 #2
0
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   super.merge(mergeWith, mergeContext);
   if (!this.getClass().equals(mergeWith.getClass())) {
     return;
   }
   if (!mergeContext.mergeFlags().simulate()) {
     this.nullValue = ((IpFieldMapper) mergeWith).nullValue;
   }
 }
예제 #3
0
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   SizeFieldMapper sizeFieldMapperMergeWith = (SizeFieldMapper) mergeWith;
   if (!mergeContext.mergeFlags().simulate()) {
     if (sizeFieldMapperMergeWith.enabledState != enabledState
         && !sizeFieldMapperMergeWith.enabledState.unset()) {
       this.enabledState = sizeFieldMapperMergeWith.enabledState;
     }
   }
 }
예제 #4
0
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   AbstractFieldMapper fieldMergeWith = (AbstractFieldMapper) mergeWith;
   // do nothing here, no merging, but also no exception
   if (!mergeContext.mergeFlags().simulate()) {
     // apply changeable values
     if (fieldMergeWith.postingsFormatProvider() != null) {
       this.postingsFormat = fieldMergeWith.postingsFormatProvider();
     }
   }
 }
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   BinaryFieldMapper sourceMergeWith = (BinaryFieldMapper) mergeWith;
   if (!mergeContext.mergeFlags().simulate()) {
     if (sourceMergeWith.compress != null) {
       this.compress = sourceMergeWith.compress;
     }
     if (sourceMergeWith.compressThreshold != -1) {
       this.compressThreshold = sourceMergeWith.compressThreshold;
     }
   }
 }
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   super.merge(mergeWith, mergeContext);
   if (!this.getClass().equals(mergeWith.getClass())) {
     return;
   }
   if (!mergeContext.mergeFlags().simulate()) {
     this.precisionStep = ((NumberFieldMapper) mergeWith).precisionStep;
     this.includeInAll = ((NumberFieldMapper) mergeWith).includeInAll;
     this.fuzzyFactor = ((NumberFieldMapper) mergeWith).fuzzyFactor;
     this.dFuzzyFactor = parseFuzzyFactor(this.fuzzyFactor);
   }
 }
 @Override
 public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException {
   super.merge(mergeWith, mergeContext);
   CompletionFieldMapper fieldMergeWith = (CompletionFieldMapper) mergeWith;
   if (payloads != fieldMergeWith.payloads) {
     mergeContext.addConflict("mapper [" + names.fullName() + "] has different payload values");
   }
   if (preservePositionIncrements != fieldMergeWith.preservePositionIncrements) {
     mergeContext.addConflict(
         "mapper [" + names.fullName() + "] has different 'preserve_position_increments' values");
   }
   if (preserveSeparators != fieldMergeWith.preserveSeparators) {
     mergeContext.addConflict(
         "mapper [" + names.fullName() + "] has different 'preserve_separators' values");
   }
   if (!ContextMapping.mappingsAreEqual(getContextMapping(), fieldMergeWith.getContextMapping())) {
     mergeContext.addConflict(
         "mapper [" + names.fullName() + "] has different 'context_mapping' values");
   }
   if (!mergeContext.mergeFlags().simulate()) {
     this.maxInputLength = fieldMergeWith.maxInputLength;
   }
 }
예제 #8
0
 @Override
 protected void doMerge(ObjectMapper mergeWith, MergeContext mergeContext) {
   RootObjectMapper mergeWithObject = (RootObjectMapper) mergeWith;
   if (!mergeContext.mergeFlags().simulate()) {
     // merge them
     List<DynamicTemplate> mergedTemplates =
         Lists.newArrayList(Arrays.asList(this.dynamicTemplates));
     for (DynamicTemplate template : mergeWithObject.dynamicTemplates) {
       boolean replaced = false;
       for (int i = 0; i < mergedTemplates.size(); i++) {
         if (mergedTemplates.get(i).name().equals(template.name())) {
           mergedTemplates.set(i, template);
           replaced = true;
         }
       }
       if (!replaced) {
         mergedTemplates.add(template);
       }
     }
     this.dynamicTemplates = mergedTemplates.toArray(new DynamicTemplate[mergedTemplates.size()]);
   }
 }
예제 #9
0
  @Override
  public void merge(final Mapper mergeWith, final MergeContext mergeContext)
      throws MergeMappingException {
    if (!(mergeWith instanceof ObjectMapper)) {
      mergeContext.addConflict(
          "Can't merge a non object mapping ["
              + mergeWith.name()
              + "] with an object mapping ["
              + name()
              + "]");
      return;
    }
    ObjectMapper mergeWithObject = (ObjectMapper) mergeWith;

    if (nested().isNested()) {
      if (!mergeWithObject.nested().isNested()) {
        mergeContext.addConflict(
            "object mapping [" + name() + "] can't be changed from nested to non-nested");
        return;
      }
    } else {
      if (mergeWithObject.nested().isNested()) {
        mergeContext.addConflict(
            "object mapping [" + name() + "] can't be changed from non-nested to nested");
        return;
      }
    }

    doMerge(mergeWithObject, mergeContext);

    List<Mapper> mappersToTraverse = new ArrayList<Mapper>();
    synchronized (mutex) {
      for (Mapper mergeWithMapper : mergeWithObject.mappers.values()) {
        Mapper mergeIntoMapper = mappers.get(mergeWithMapper.name());
        if (mergeIntoMapper == null) {
          // no mapping, simply add it if not simulating
          if (!mergeContext.mergeFlags().simulate()) {
            putMapper(mergeWithMapper);
            mappersToTraverse.add(mergeWithMapper);
          }
        } else {
          if ((mergeWithMapper instanceof MultiFieldMapper)
              && !(mergeIntoMapper instanceof MultiFieldMapper)) {
            MultiFieldMapper mergeWithMultiField = (MultiFieldMapper) mergeWithMapper;
            mergeWithMultiField.merge(mergeIntoMapper, mergeContext);
            if (!mergeContext.mergeFlags().simulate()) {
              putMapper(mergeWithMultiField);
              // now, record mappers to traverse events for all mappers
              for (Mapper mapper : mergeWithMultiField.mappers().values()) {
                mappersToTraverse.add(mapper);
              }
            }
          } else {
            mergeIntoMapper.merge(mergeWithMapper, mergeContext);
          }
        }
      }
    }
    // call this outside of the mutex
    for (Mapper mapper : mappersToTraverse) {
      mapper.traverse(mergeContext.newFieldMappers());
      mapper.traverse(mergeContext.newObjectMappers());
    }
  }
예제 #10
0
  @Override
  public void merge(final Mapper mergeWith, final MergeContext mergeContext)
      throws MergeMappingException {
    if (!(mergeWith instanceof ObjectMapper)) {
      mergeContext.addConflict(
          "Can't merge a non object mapping ["
              + mergeWith.name()
              + "] with an object mapping ["
              + name()
              + "]");
      return;
    }
    ObjectMapper mergeWithObject = (ObjectMapper) mergeWith;

    if (nested().isNested()) {
      if (!mergeWithObject.nested().isNested()) {
        mergeContext.addConflict(
            "object mapping [" + name() + "] can't be changed from nested to non-nested");
        return;
      }
    } else {
      if (mergeWithObject.nested().isNested()) {
        mergeContext.addConflict(
            "object mapping [" + name() + "] can't be changed from non-nested to nested");
        return;
      }
    }

    if (!mergeContext.mergeFlags().simulate()) {
      if (mergeWithObject.dynamic != null) {
        this.dynamic = mergeWithObject.dynamic;
      }
    }

    doMerge(mergeWithObject, mergeContext);

    List<Mapper> mappersToPut = new ArrayList<>();
    FieldMapperListener.Aggregator newFieldMappers = new FieldMapperListener.Aggregator();
    ObjectMapperListener.Aggregator newObjectMappers = new ObjectMapperListener.Aggregator();
    synchronized (mutex) {
      for (Mapper mapper : mergeWithObject.mappers.values()) {
        Mapper mergeWithMapper = mapper;
        Mapper mergeIntoMapper = mappers.get(mergeWithMapper.name());
        if (mergeIntoMapper == null) {
          // no mapping, simply add it if not simulating
          if (!mergeContext.mergeFlags().simulate()) {
            mappersToPut.add(mergeWithMapper);
            mergeWithMapper.traverse(newFieldMappers);
            mergeWithMapper.traverse(newObjectMappers);
          }
        } else {
          mergeIntoMapper.merge(mergeWithMapper, mergeContext);
        }
      }
      if (!newFieldMappers.mappers.isEmpty()) {
        mergeContext.docMapper().addFieldMappers(newFieldMappers.mappers);
      }
      if (!newObjectMappers.mappers.isEmpty()) {
        mergeContext.docMapper().addObjectMappers(newObjectMappers.mappers);
      }
      // and the mappers only after the administration have been done, so it will not be visible to
      // parser (which first try to read with no lock)
      for (Mapper mapper : mappersToPut) {
        putMapper(mapper);
      }
    }
  }