List of usage examples for org.springframework.data.mapping.model BasicPersistentEntity getType
public Class<T> getType()
From source file:com.turbospaces.model.BO.java
/** * register the set of persistent classes and enrich kryo with some extract serialized related to persistent class. * //from w w w .j a v a 2 s. co m * @param kryo * serialization provider * @param persistentEntities * classes to register * @throws ClassNotFoundException * re-throw conversion service * @throws NoSuchMethodException * re-throw cglib's exception * @throws SecurityException * re-throw cglib's exception * @throws IntrospectionException * re-throw introspection exception */ public static void registerPersistentClasses(final DecoratedKryo kryo, final BasicPersistentEntity... persistentEntities) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IntrospectionException { for (BasicPersistentEntity<?, ?> e : persistentEntities) { BO bo = new BO(e); bo.getOriginalPersistentEntity().doWithProperties(new PropertyHandler() { @Override public void doWithPersistentProperty(final PersistentProperty p) { Class type = p.getType(); if (type.isArray() && !kryo.isTypeRegistered(type)) { SingleDimensionArraySerializer serializer = new SingleDimensionArraySerializer(type, kryo); kryo.register(type, serializer); } else if (type.isEnum() && !kryo.isTypeRegistered(type)) { EnumSerializer enumSerializer = new EnumSerializer(type); kryo.register(type, enumSerializer); } } }); Class<?> arrayWrapperType = Class.forName("[L" + e.getType().getName() + ";"); PropertiesSerializer serializer = new PropertiesSerializer(kryo, bo); SingleDimensionArraySerializer arraysSerializer = new SingleDimensionArraySerializer(arrayWrapperType, kryo); kryo.register(e.getType(), serializer); kryo.register(arrayWrapperType, arraysSerializer); } }
From source file:com.turbospaces.api.AbstractSpaceConfiguration.java
/** * 1. initialize jchannel//w ww.j a v a 2s .com * 2. initialize conversion service * 3. initialize mapping context * 4. initialize kryo */ @Override @SuppressWarnings("unchecked") public void afterPropertiesSet() throws Exception { logger.info("Initializing JSpace configuration: group = {}", getGroup()); if (getJChannel() == null) { ClassPathResource largeClusterCfg = new ClassPathResource("turbospaces-jgroups-udp.xml"); InputStream inputStream = largeClusterCfg.getInputStream(); setjChannel(new JChannel(inputStream)); inputStream.close(); } getJChannel().setDiscardOwnMessages(true); if (getMemoryManager() == null) setMemoryManager(new UnsafeMemoryManager()); if (getMappingContext() == null) if (applicationContext != null) setMappingContext(applicationContext.getBean(AbstractMappingContext.class)); if (getListeningExecutorService() == null) setExecutorService(Executors.newFixedThreadPool(1 << 6, new ThreadFactoryBuilder().setDaemon(false) .setNameFormat("jspace-execpool-thread-%s").build())); if (getScheduledExecutorService() == null) setScheduledExecutorService(Executors.newScheduledThreadPool(1 << 2, new ThreadFactoryBuilder() .setDaemon(true).setNameFormat("jspace-scheduledpool-thread-%s").build())); Preconditions.checkState(mappingContext != null, MAPPING_CONTEXT_IS_NOT_REGISTERED); Collection<BasicPersistentEntity> persistentEntities = mappingContext.getPersistentEntities(); for (BasicPersistentEntity e : persistentEntities) boFor(e.getType()); if (kryo == null) kryo = new DecoratedKryo(); SpaceUtility.registerSpaceClasses(this, kryo); }
From source file:com.turbospaces.model.BO.java
/** * create business object over actual basic persistent entity * //w w w . j av a 2 s . c o m * @param delegate * the actual persistent entity meta-data provider * @throws NoSuchMethodException * re-throw cglib exception * @throws SecurityException * re-throw cglib exception * @throws IntrospectionException * re-throw exceptions */ public BO(final BasicPersistentEntity delegate) throws SecurityException, NoSuchMethodException, IntrospectionException { this.delegate = delegate; this.fastConstructor = FastClass.create(delegate.getType()) .getConstructor(delegate.getType().getConstructor()); // find optimistic lock version/routing fields { final Collection<PersistentProperty> versionCandidates = Lists.newLinkedList(); final Collection<PersistentProperty> routingCandidates = Lists.newLinkedList(); delegate.doWithProperties(new PropertyHandler() { @Override public void doWithPersistentProperty(final PersistentProperty persistentProperty) { PropertyDescriptor propertyDescriptor = persistentProperty.getPropertyDescriptor(); Field field = persistentProperty.getField(); if (hasAnnotation(propertyDescriptor, field, Version.class)) versionCandidates.add(persistentProperty); if (hasAnnotation(propertyDescriptor, field, Routing.class)) routingCandidates.add(persistentProperty); } private boolean hasAnnotation(final PropertyDescriptor descriptor, final Field field, final Class annotation) { if (descriptor != null && descriptor.getReadMethod() != null && descriptor.getReadMethod().getAnnotation(annotation) != null) return true; if (field != null && field.getAnnotation(annotation) != null) return true; return false; } }); Preconditions.checkArgument(versionCandidates.size() <= 1, "too many fields marked with @Version annotation, candidates = " + versionCandidates.toString()); Preconditions.checkArgument(routingCandidates.size() <= 1, "too many fields marked with @Routing annotation, candidates = " + routingCandidates.toString()); if (!versionCandidates.isEmpty()) optimisticLockVersionProperty = versionCandidates.iterator().next(); if (!routingCandidates.isEmpty()) routingProperty = routingCandidates.iterator().next(); } { // Java Beans convention marker AtomicBoolean propertyAccess = new AtomicBoolean(true); List<String> setters = Lists.newLinkedList(); List<String> getters = Lists.newLinkedList(); List<Class<?>> types = Lists.newLinkedList(); for (PersistentProperty<?> persistentProperty : getOrderedProperties()) { PropertyDescriptor propertyDescriptor = persistentProperty.getPropertyDescriptor(); if (propertyDescriptor != null) { if (propertyDescriptor.getReadMethod() != null && propertyDescriptor.getWriteMethod() != null) { setters.add(propertyDescriptor.getWriteMethod().getName()); getters.add(propertyDescriptor.getReadMethod().getName()); types.add(persistentProperty.getType()); } } else { propertyAccess.set(false); brokenProperties.add(persistentProperty); } } if (propertyAccess.get()) // create properties extract for all persistent properties bulkBean = BulkBean.create(delegate.getType(), getters.toArray(new String[getters.size()]), setters.toArray(new String[setters.size()]), types.toArray(new Class[types.size()])); else Log.warn(String.format( "PropetiesSerializer-%s unable to use getters-setters access optimization. Suspected/Corrupted properties = %s", delegate.getType().getSimpleName(), getBrokenProperties())); boolean canOptimizeIdProperty = hasReadWriteMethods(delegate.getIdProperty()); boolean canOptimizeVersionProperty = hasReadWriteMethods(getOptimisticLockVersionProperty()); boolean canOptimizeRoutingProperty = hasReadWriteMethods(getRoutingProperty()); // create id/version/routing bulk fields extractor if (canOptimizeIdProperty && canOptimizeVersionProperty && canOptimizeRoutingProperty) { String[] g = new String[] { delegate.getIdProperty().getPropertyDescriptor().getReadMethod().getName(), getOptimisticLockVersionProperty().getPropertyDescriptor().getReadMethod().getName(), getRoutingProperty().getPropertyDescriptor().getReadMethod().getName() }; String[] s = new String[] { delegate.getIdProperty().getPropertyDescriptor().getWriteMethod().getName(), getOptimisticLockVersionProperty().getPropertyDescriptor().getWriteMethod().getName(), getRoutingProperty().getPropertyDescriptor().getWriteMethod().getName() }; Class<?>[] c = new Class[] { delegate.getIdProperty().getType(), getOptimisticLockVersionProperty().getType(), getRoutingProperty().getType() }; idVersionRoutingBulkBean = BulkBean.create(delegate.getType(), g, s, c); } } }