Skip to content

Commit

Permalink
Changed type creation fom programmatic to via JSON schema load.
Browse files Browse the repository at this point in the history
  • Loading branch information
ajs6f committed Jan 25, 2013
1 parent 4a848d5 commit c8e08e1
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 29 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Expand Up @@ -30,6 +30,11 @@
<artifactId>lily-client</artifactId>
<version>${lily.version}</version>
</dependency>
<dependency>
<groupId>org.lilyproject</groupId>
<artifactId>lily-import</artifactId>
<version>${lily.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
Expand Down
46 changes: 19 additions & 27 deletions src/main/java/org/fcrepo/lily/AbstractResource.java
Expand Up @@ -7,29 +7,25 @@

import org.lilyproject.client.LilyClient;
import org.lilyproject.repository.api.QName;
import org.lilyproject.repository.api.RecordType;
import org.lilyproject.repository.api.RecordTypeNotFoundException;
import org.lilyproject.repository.api.Repository;
import org.lilyproject.repository.api.RepositoryException;
import org.lilyproject.repository.api.TypeManager;
import org.lilyproject.repository.impl.valuetype.StringValueType;
import org.lilyproject.tools.import_.cli.JsonImport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//import org.lilyproject.tools.import_.cli.JsonImport;

public abstract class AbstractResource {

static final String fedoraNamespace = "fedora";
static final QName fedoraRecordTypeName = new QName(fedoraNamespace,
"fedora");
static final QName fedoraObjectRecordTypeName = new QName(fedoraNamespace,
"object");
static final QName label = new QName(fedoraNamespace, "label");

static public Repository repo = null;

@Resource
public LilyClient lilyClient = null;

static public org.springframework.core.io.Resource schemaResource;

@Resource(name = "fedoraSchema")
public org.springframework.core.io.Resource schemaResource;

final static private Logger logger = LoggerFactory
.getLogger(AbstractResource.class);
Expand All @@ -42,22 +38,9 @@ public abstract class AbstractResource {
}

@PostConstruct
void initFedoraRecordType() throws IOException, Exception {
//JsonImport.load(getRepo(), schemaResource.getInputStream(), true);
logger.debug("Trying to retrieve Fedora RecordType");
TypeManager tm = getRepo().getTypeManager();
try {
tm.getRecordTypeByName(fedoraRecordTypeName, 1L);
logger.debug("Retrieved Fedora RecordType");
} catch (RecordTypeNotFoundException e) {
logger.debug("Creating Fedora RecordType");
RecordType fedoraRecordType = tm.recordTypeBuilder()
.name(fedoraRecordTypeName).fieldEntry().defineField()
.name(label).type(new StringValueType()).createOrUpdate()
.add().build();
tm.createOrUpdateRecordType(fedoraRecordType);
logger.debug("Created Fedora RecordType");
}
void loadSchema() throws IOException, Exception {
logger.debug("Loading Fedora schema");
JsonImport.load(getRepo(), schemaResource.getInputStream(), true);
}

public Repository getRepo() {
Expand All @@ -77,4 +60,13 @@ public void setClient(LilyClient cl) {
lilyClient = cl;
}

public org.springframework.core.io.Resource getSchemaResource() {
return schemaResource;
}

public void setSchemaResource(
org.springframework.core.io.Resource schemaResource) {
this.schemaResource = schemaResource;
}

}
2 changes: 1 addition & 1 deletion src/main/java/org/fcrepo/lily/FedoraObjects.java
Expand Up @@ -39,7 +39,7 @@ public Response addObject(@PathParam("pid") final String pid,
@QueryParam("label") @DefaultValue("test") final String objLabel)
throws RepositoryException, InterruptedException {

repo.recordBuilder().recordType(fedoraRecordTypeName).id(pid).field(label, objLabel)
repo.recordBuilder().recordType(fedoraObjectRecordTypeName).id(pid).field(label, objLabel)
.createOrUpdate();
return Response.created(URI.create(pid)).build();
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/resources/org/fcrepo/lily/fedoraSchema.json
@@ -0,0 +1,22 @@
/* First sketch at modeling Fedora in Lily */

{
namespaces: {
"fedora": "fedora"
},
fieldTypes: [
{
name: "fedora$label",
valueType: "STRING",
scope: "non_versioned"
}
],
recordTypes: [
{
name: "fedora$object",
fields: [
{name: "fedora$label", mandatory: true }
]
}
]
}
7 changes: 6 additions & 1 deletion src/main/webapp/WEB-INF/rest.xml
Expand Up @@ -24,7 +24,12 @@
<!-- Zookeeper connection string -->
<constructor-arg value="localhost:2181"/>
<!-- timeout -->
<constructor-arg value="10000"/>
<constructor-arg value="20000"/>
</bean>

<bean name="fedoraSchema" class="org.springframework.core.io.ClassPathResource">
<constructor-arg type="String"
value="org/fcrepo/lily/fedoraSchema.json"/>
</bean>

</beans>

0 comments on commit c8e08e1

Please sign in to comment.