public Iterable<? extends PropertyDescriptor> properties() { return model.state().properties(); }
public Iterable<? extends AssociationDescriptor> associations() { return model.state().associations(); }
public Iterable<? extends AssociationDescriptor> manyAssociations() { return model.state().manyAssociations(); }
for( PropertyDescriptor ePropDesc : eStateDesc.properties() ) PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByQualifiedName( ePropDesc.qualifiedName() ); eState.propertyFor( ePropDesc.accessor() ).set( vState.propertyFor( vPropDesc.accessor() ).get() ); for( AssociationDescriptor eAssocDesc : eStateDesc.associations() ) = vStateDesc.getAssociationByQualifiedName( eAssocDesc.qualifiedName() ); eAssoc.set( vState.associationFor( vAssocDesc.accessor() ).get() ); = vStateDesc.findPropertyModelByName( eAssocDesc.qualifiedName().name() ); if( STRING_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) for( AssociationDescriptor eAssocDesc : eStateDesc.manyAssociations() ) = vStateDesc.getManyAssociationByQualifiedName( eAssocDesc.qualifiedName() ); ManyAssociation<Object> vManyAssoc = vState.manyAssociationFor( vAssocDesc.accessor() ); for( Object assoc : eManyAssoc.toList() ) = vStateDesc.findPropertyModelByName( eAssocDesc.qualifiedName().name() ); if( STRING_COLLECTION_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) for( AssociationDescriptor eAssocDesc : eStateDesc.namedAssociations() ) = vStateDesc.getNamedAssociationByQualifiedName( eAssocDesc.qualifiedName() ); NamedAssociation<Object> vNamedAssoc = vState.namedAssociationFor( vAssocDesc.accessor() ); for( String assocName : Iterables.toList( eNamedAssoc ) ) = vStateDesc.findPropertyModelByName( eAssocDesc.qualifiedName().name() );
for( PropertyDescriptor ePropDesc : eStateDesc.properties() ) PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( ePropDesc.qualifiedName().name() ); eState.propertyFor( ePropDesc.accessor() ).set( vState.propertyFor( vPropDesc.accessor() ).get() ); for( AssociationDescriptor eAssocDesc : eStateDesc.associations() ) AssociationDescriptor vAssocDesc = vStateDesc.getAssociationByName( eAssocDesc.qualifiedName().name() ); eAssoc.set( vState.associationFor( vAssocDesc.accessor() ).get() ); = vStateDesc.findPropertyModelByName( eAssocDesc.qualifiedName().name() ); if( STRING_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) for( AssociationDescriptor eAssocDesc : eStateDesc.manyAssociations() ) = vStateDesc.getManyAssociationByName( eAssocDesc.qualifiedName().name() ); ManyAssociation<Object> vManyAss = vState.manyAssociationFor( vAssDesc.accessor() ); for( Object ass : eManyAssoc.toList() ) = vStateDesc.findPropertyModelByName( eAssocDesc.qualifiedName().name() ); if( STRING_COLLECTION_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) for( AssociationDescriptor eAssocDesc : eStateDesc.namedAssociations() ) = vStateDesc.getNamedAssociationByName( eAssocDesc.qualifiedName().name() ); NamedAssociation<Object> vNamedAssoc = vState.namedAssociationFor( vAssocDesc.accessor() ); for( String assocName : Iterables.toList( eNamedAssoc ) ) = vStateDesc.findPropertyModelByName( eAssocDesc.qualifiedName().name() );
public void serialize( final EntityState entityState, final boolean includeNonQueryable, final Graph graph ) { ValueFactory values = graph.getValueFactory(); EntityReference identity = entityState.identity(); URI entityUri = createEntityURI( values, identity ); graph.add( entityUri, Rdfs.TYPE, values.createURI( Classes.toURI( first( entityState.entityDescriptor().types() ) ) ) ); serializeProperties( entityState, graph, entityUri, entityState.entityDescriptor(), includeNonQueryable ); serializeAssociations( entityState, graph, entityUri, entityState.entityDescriptor().state().associations(), includeNonQueryable ); serializeManyAssociations( entityState, graph, entityUri, entityState.entityDescriptor().state().manyAssociations(), includeNonQueryable ); }
try PropertyDescriptor propertyDescriptor = entityState.findPropertyModelByName( propertyName ); return associationState.propertyFor( propertyDescriptor.accessor() ).get(); try associationDescriptor = entityState.getAssociationByName( propertyName ); try associationDescriptor = entityState.getManyAssociationByName( propertyName ); try associationDescriptor = entityState.getNamedAssociationByName( propertyName );
@Override public Object map( PropertyDescriptor ePropDesc ) { String propName = ePropDesc.qualifiedName().name(); try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( propName ); return vState.propertyFor( vPropDesc.accessor() ).get(); } catch( IllegalArgumentException propNotFoundOnValue ) { // Property not found on Value return null; } } };
try AssociationDescriptor vAssocDesc = vStateDesc.getNamedAssociationByName( assocName ); NamedAssociation<Object> vAssocState = vState.namedAssociationFor( vAssocDesc.accessor() ); return NAMED_ASSOC_TO_ENTITY_REF_MAP.map( vAssocState ); PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( assocName ); if( STRING_MAP_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) )
@Override public EntityReference map( AssociationDescriptor eAssocDesc ) { String assocName = eAssocDesc.qualifiedName().name(); try { AssociationDescriptor vAssocDesc = vStateDesc.getAssociationByName( assocName ); Object assocEntity = vState.associationFor( vAssocDesc.accessor() ).get(); return assocEntity == null ? null : EntityReference.entityReferenceFor( assocEntity ); } catch( IllegalArgumentException assocNotFoundOnValue ) { // Association not found on Value, find Property<String> and convert to Association try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( assocName ); if( STRING_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) { String assocId = (String) vState.propertyFor( vPropDesc.accessor() ).get(); return assocId == null ? null : EntityReference.parseEntityReference( assocId ); } return null; } catch( IllegalArgumentException propNotFoundOnValue ) { return null; } } } };
try AssociationDescriptor vAssocDesc = vStateDesc.getManyAssociationByName( assocName ); ManyAssociation<Object> vManyAssoc = vState.manyAssociationFor( vAssocDesc.accessor() ); return MANY_ASSOC_TO_ENTITY_REF_ITERABLE.map( vManyAssoc ); PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( assocName ); if( STRING_COLLECTION_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) )
public Iterable<? extends AssociationDescriptor> namedAssociations() { return model.state().namedAssociations(); } }
@Override public TemplateModel get( String key ) throws TemplateModelException { try { return wrapper.wrap( Qi4j.FUNCTION_COMPOSITE_INSTANCE_OF .map( composite ) .state() .propertyFor( descriptor.state().findPropertyModelByName( key ).accessor() ) .get() ); } catch( IllegalArgumentException e ) { return null; } }
@Override public int size() throws TemplateModelException { return (int) Iterables.count( descriptor.state().properties() ); }
@Override public EntityReference map( AssociationDescriptor eAssocDesc ) { try { return EntityReference.entityReferenceFor( vState.associationFor( eAssocDesc.accessor() ) ); } catch( IllegalArgumentException assocNotFoundOnValue ) { // Find String Property and convert to Association String propName = eAssocDesc.qualifiedName().name(); try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( propName ); if( STRING_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) { String assocState = (String) vState.propertyFor( vPropDesc.accessor() ).get(); return EntityReference.parseEntityReference( assocState ); } return null; } catch( IllegalArgumentException propNotFoundOnValue ) { return null; } } } };
private void serializeManyAssociationTypes( final EntityDescriptor entityDescriptor, final Graph graph, final URI entityTypeUri ) { ValueFactory values = graph.getValueFactory(); // ManyAssociations for( AssociationDescriptor manyAssociationType : entityDescriptor.state().manyAssociations() ) { URI associationURI = values.createURI( manyAssociationType.qualifiedName().toURI() ); graph.add( associationURI, Rdfs.DOMAIN, entityTypeUri ); graph.add( associationURI, Rdfs.TYPE, Rdfs.SEQ ); URI associatedURI = values.createURI( manyAssociationType.qualifiedName().toURI() ); graph.add( associationURI, Rdfs.RANGE, associatedURI ); graph.add( associationURI, Rdfs.RANGE, XMLSchema.ANYURI ); } }
private void serializeAssociationTypes( final EntityDescriptor entityDescriptor, final Graph graph, final URI entityTypeUri ) { ValueFactory values = graph.getValueFactory(); // Associations for( AssociationDescriptor associationType : entityDescriptor.state().associations() ) { URI associationURI = values.createURI( associationType.qualifiedName().toURI() ); graph.add( associationURI, Rdfs.DOMAIN, entityTypeUri ); graph.add( associationURI, Rdfs.TYPE, Rdfs.PROPERTY ); URI associatedURI = values.createURI( Classes.toURI( Classes.RAW_CLASS.map( associationType.type() ) ) ); graph.add( associationURI, Rdfs.RANGE, associatedURI ); graph.add( associationURI, Rdfs.RANGE, XMLSchema.ANYURI ); } }
@Override public void exportDataSources() throws MalformedObjectNameException, MBeanRegistrationException, InstanceAlreadyExistsException, NotCompliantMBeanException { for ( ServiceReference<DataSource> dataSource : dataSources ) { String name = dataSource.identity(); Module module = ( Module ) spi.moduleOf( dataSource ); EntityDescriptor descriptor = module.entityDescriptor( DataSourceConfiguration.class.getName() ); List<MBeanAttributeInfo> attributes = new ArrayList<MBeanAttributeInfo>(); Map<String, AccessibleObject> properties = new LinkedHashMap<String, AccessibleObject>(); for ( PropertyDescriptor persistentProperty : descriptor.state().properties() ) { if ( !persistentProperty.isImmutable() ) { String propertyName = persistentProperty.qualifiedName().name(); String type = persistentProperty.valueType().mainType().getName(); attributes.add( new MBeanAttributeInfo( propertyName, type, propertyName, true, true, type.equals( "java.lang.Boolean" ) ) ); properties.put( propertyName, persistentProperty.accessor() ); } } List<MBeanOperationInfo> operations = new ArrayList<MBeanOperationInfo>(); operations.add( new MBeanOperationInfo( "restart", "Restart DataSource", new MBeanParameterInfo[ 0 ], "void", MBeanOperationInfo.ACTION_INFO ) ); MBeanInfo mbeanInfo = new MBeanInfo( DataSourceConfiguration.class.getName(), name, attributes.toArray( new MBeanAttributeInfo[ attributes.size() ] ), null, operations.toArray( new MBeanOperationInfo[ operations.size() ] ), null ); Object mbean = new ConfigurableDataSource( dataSourceService, mbeanInfo, name, properties ); ObjectName configurableDataSourceName = new ObjectName( "Zest:application=" + application.name() + ",class=Datasource,name=" + name ); server.registerMBean( mbean, configurableDataSourceName ); configurationNames.add( configurableDataSourceName ); } }
@Override public Map<String, EntityReference> map( AssociationDescriptor eAssocDesc ) { try { NamedAssociation<?> vAssocState = vState.namedAssociationFor( eAssocDesc.accessor() ); return NAMED_ASSOC_TO_ENTITY_REF_MAP.map( vAssocState ); } catch( IllegalArgumentException assocNotFoundOnValue ) { // Find Map<String,String> Property and convert to NamedAssociation String propName = eAssocDesc.qualifiedName().name(); try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( propName ); if( STRING_MAP_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) { Map<String, String> vAssocState = (Map) vState .propertyFor( vPropDesc.accessor() ).get(); return STRING_MAP_TO_ENTITY_REF_MAP.map( vAssocState ); } return Collections.EMPTY_MAP; } catch( IllegalArgumentException propNotFoundOnValue ) { return Collections.EMPTY_MAP; } } } };
private void serializeProperties( final EntityState entityState, final Graph graph, final Resource subject, final EntityDescriptor entityType, final boolean includeNonQueryable ) { // Properties for( PropertyDescriptor persistentProperty : entityType.state().properties() ) { Object property = entityState.propertyValueOf( persistentProperty.qualifiedName() ); if( property != null ) { serializeProperty( persistentProperty, property, subject, graph, includeNonQueryable ); } } }