Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.infinispan.query.remote;
  
  import  com.google.protobuf.Descriptors;
  import  org.infinispan.commons.util.Util;
 import  org.infinispan.protostream.BaseMarshaller;
 import  org.infinispan.protostream.SerializationContext;
 
 import java.util.UUID;

A clustered repository of protobuf descriptors. All protobuf types and their marshallers must be registered with this repository before being used.

Author(s):
anistor@redhat.com
Since:
6.0
 
        description = "Component that acts as a manager and container for Protocol Buffers metadata descriptors in the scope of a CacheManger.")
 
    private static final Log log = LogFactory.getLog(ProtobufMetadataManager.classLog.class);
 
    public static final String OBJECT_NAME = "ProtobufMetadataManager";
 
    private static final String REGISTRY_SCOPE = ProtobufMetadataManager.class.getName();
 
    private ObjectName objectName;
 
    private ClusterRegistry<StringStringbyte[]> clusterRegistry;
 
 
    private final SerializationContext serCtx;
 
    public ProtobufMetadataManager(SerializationContext serCtx) {
       this. = serCtx;
    }
 
    private void ensureInit() {
       if ( == null) {
          synchronized (this) {
             if ( == null) {
                 = new ProtobufMetadataRegistryListener();
                .addListener();
 
                for (String uuid : .keys()) {
                   byte[] descriptorFile = .get(uuid);
                   try {
                      .registerProtofile(new ByteArrayInputStream(descriptorFile));
                   } catch (Exception e) {
                      .error(e);
                   }
                }
             }
          }
       }
    }
 
    @Inject
    protected void injectDependencies(ClusterRegistry<StringStringbyte[]> clusterRegistry) {
       this. = clusterRegistry;
    }
 
    @Stop
    protected void stop() {
       if ( != null) {
           = null;
       }
    }
 
    public ObjectName getObjectName() {
       return ;
    }
 
    public void setObjectName(ObjectName objectName) {
       this. = objectName;
    }
   public <T> void registerMarshaller(Class<? extends T> clazz, BaseMarshaller<T> marshaller) {
      ensureInit();
      .registerMarshaller(clazzmarshaller);
   }
   @ManagedOperation(description = "Registers a Protobuf definition file", displayName = "Register Protofile")
   public void registerProtofile(byte[] descriptorFile) {
      ensureInit();
      .put(, UUID.randomUUID().toString(), descriptorFile);
   }
   public void registerProtofile(InputStream descriptorFilethrows IOException, Descriptors.DescriptorValidationException {
      registerProtofile(Util.readStream(descriptorFile));
   }
   public void registerProtofile(String classpathResourcethrows IOException, Descriptors.DescriptorValidationException {
      InputStream is = getClass().getResourceAsStream(classpathResource);
      if (is == null) {
         throw new IllegalArgumentException("Missing resource: " + classpathResource);
      }
      registerProtofile(is);
   }
   public static SerializationContext getSerializationContext(EmbeddedCacheManager cacheManager) {
      if (cacheManager == null) {
         throw new IllegalArgumentException("cacheManager cannot be null");
      }
      ProtobufMetadataManager metadataManager = cacheManager.getGlobalComponentRegistry().getComponent(ProtobufMetadataManager.class);
      if (metadataManager == null) {
         throw new IllegalStateException("ProtobufMetadataManager not initialised yet!");
      }
      metadataManager.ensureInit();
      return metadataManager.serCtx;
   }
      public void created(CacheEntryCreatedEvent<ScopedKey<StringString>, byte[]> ethrows IOException, Descriptors.DescriptorValidationException {
         if (!e.isPre()) {
            registerProtofile(e.getValue());
         }
      }
      public void modified(CacheEntryModifiedEvent<ScopedKey<StringString>, byte[]> ethrows IOException, Descriptors.DescriptorValidationException {
         if (!e.isPre()) {
            registerProtofile(e.getValue());
         }
      }
      private void registerProtofile(byte[] descriptorFilethrows IOException, Descriptors.DescriptorValidationException {
         .registerProtofile(new ByteArrayInputStream(descriptorFile));
      }
   }
New to GrepCode? Check out our FAQ X