Fixed bug which does not allow to create PropertyTypeDefiniton of
Property during DB initialization
This commit is contained in:
parent
d5c2ecd896
commit
d780357089
|
@ -245,7 +245,6 @@ public class DatabaseEnvironment {
|
|||
definitionToBeCreated.add(ConsistsOfTypeDefinition.class);
|
||||
|
||||
SchemaAction schemaAction = new SchemaActionImpl();
|
||||
|
||||
for(Class<? extends ISManageable> clz : definitionToBeCreated) {
|
||||
|
||||
if(BaseProperty.class.isAssignableFrom(clz)) {
|
||||
|
|
|
@ -6,6 +6,8 @@ import org.gcube.informationsystem.base.reference.properties.BaseProperty;
|
|||
import org.gcube.informationsystem.base.reference.relations.BaseRelation;
|
||||
import org.gcube.informationsystem.model.reference.entities.Facet;
|
||||
import org.gcube.informationsystem.model.reference.entities.Resource;
|
||||
import org.gcube.informationsystem.model.reference.properties.Header;
|
||||
import org.gcube.informationsystem.model.reference.properties.Property;
|
||||
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
|
||||
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaAlreadyPresentException;
|
||||
|
@ -74,7 +76,14 @@ public class SchemaActionImpl implements SchemaAction {
|
|||
schemaManagement.setTypeName(TypeBinder.getType(p));
|
||||
String json = TypeBinder.serializeType(p);
|
||||
logger.trace(json);
|
||||
if(Property.class.isAssignableFrom(p)) {
|
||||
if(p.equals(Property.class) || p.equals(Header.class) ) {
|
||||
((SchemaManagementImpl) schemaManagement).setSkipTypeDefinitionCreation(true);
|
||||
}
|
||||
schemaManagement.create(json, AccessType.PROPERTY);
|
||||
}else {
|
||||
schemaManagement.create(json, AccessType.BASE_PROPERTY);
|
||||
}
|
||||
} catch(SchemaAlreadyPresentException sape) {
|
||||
logger.warn("{} already exists. It will be ignored", TypeBinder.getType(p));
|
||||
} catch(Exception ex) {
|
||||
|
|
|
@ -68,6 +68,22 @@ public class SchemaManagementImpl implements SchemaManagement {
|
|||
|
||||
protected String typeName;
|
||||
|
||||
protected boolean skipTypeDefinitionCreation;
|
||||
|
||||
public boolean isSkipTypeDefinitionCreation() {
|
||||
return skipTypeDefinitionCreation;
|
||||
}
|
||||
|
||||
public void setSkipTypeDefinitionCreation(boolean skipTypeDefinitionCreation) {
|
||||
this.skipTypeDefinitionCreation = skipTypeDefinitionCreation;
|
||||
}
|
||||
|
||||
|
||||
public SchemaManagementImpl() {
|
||||
this.skipTypeDefinitionCreation = false;
|
||||
}
|
||||
|
||||
|
||||
protected OClass getOClass(OSchema oSchema, String type) throws SchemaException {
|
||||
return oSchema.getClass(type);
|
||||
}
|
||||
|
@ -418,7 +434,7 @@ public class SchemaManagementImpl implements SchemaManagement {
|
|||
}
|
||||
|
||||
String ret = null;
|
||||
if(erManagement!=null) {
|
||||
if(erManagement!=null && !skipTypeDefinitionCreation) {
|
||||
erManagement.setJson(jsonSchema);
|
||||
ret = erManagement.create();
|
||||
}else {
|
||||
|
|
|
@ -191,7 +191,8 @@ public class SchemaManagementImplTest {
|
|||
|
||||
}
|
||||
|
||||
@Test(expected=SchemaAlreadyPresentException.class)
|
||||
//@Test(expected=SchemaAlreadyPresentException.class)
|
||||
@Test
|
||||
public void createPropertyType() throws Exception {
|
||||
PropertyTypeDefinition<ValueSchema> propertyTypeDefinition = new PropertyTypeDefinitionImpl<>(ValueSchema.class);
|
||||
|
||||
|
|
Loading…
Reference in New Issue