public InputStream disseminate(Context context, Item item) throws DSpaceSwordException, SwordError, SwordServerException { try { Abdera abdera = new Abdera(); Feed feed = abdera.newFeed(); this.addMetadata(feed, item); Bundle[] originals = item.getBundles("ORIGINAL"); for (Bundle original : originals) { Bitstream[] bss = original.getBitstreams(); for (Bitstream bitstream : bss) { Entry entry = feed.addEntry(); this.populateEntry(context, entry, bitstream); } } ByteArrayOutputStream baos = new ByteArrayOutputStream(); feed.writeTo(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); return bais; } catch (SQLException e) { throw new DSpaceSwordException(e); } catch (IOException e) { throw new DSpaceSwordException(e); } }
public void write( UriInfo uriInfo, Writer w, String entityName, Entity entity, Collection<Link> links, Map<Transition, RESTResource> embeddedResources) { String baseUri = AtomXMLProvider.getBaseUri(serviceDocument, uriInfo); String absoluteId = getAbsoluteId(uriInfo, links); DateTime utc = new DateTime().withZone(DateTimeZone.UTC); String updated = InternalUtil.toString(utc); Abdera abdera = new Abdera(); StreamWriter writer = abdera.newStreamWriter(); writer.setOutputStream(new WriterOutputStream(w)); writer.setAutoflush(false); writer.setAutoIndent(true); writer.startDocument(); writer.startEntry(); writer.writeNamespace("d", d); writer.writeNamespace("m", m); writer.writeAttribute("xml:base", baseUri); writeEntry(writer, entityName, entity, links, embeddedResources, baseUri, absoluteId, updated); writer.endEntry(); writer.endDocument(); writer.flush(); }
private void populateEntry(Context context, Entry entry, Bitstream bitstream) throws DSpaceSwordException { BitstreamFormat format = bitstream.getFormat(); String contentType = null; if (format != null) { contentType = format.getMIMEType(); } SwordUrlManager urlManager = new SwordUrlManager(new SwordConfigurationDSpace(), context); String bsUrl = urlManager.getBitstreamUrl(bitstream); entry.setId(bsUrl); entry.setTitle(bitstream.getName()); String desc = bitstream.getDescription(); if ("".equals(desc) || desc == null) { desc = bitstream.getName(); } entry.setSummary(desc); entry.setUpdated(new Date()); // required, though content is spurious // add an edit-media link for the bitstream ... Abdera abdera = new Abdera(); Link link = abdera.getFactory().newLink(); link.setHref(urlManager.getActionableBitstreamUrl(bitstream)); link.setMimeType(contentType); link.setRel("edit-media"); entry.addLink(link); // set the content of the bitstream entry.setContent(new IRI(bsUrl), contentType); }
@Test public void testNormalOperations() throws Exception { FedoraObjectUIPProcessor processor = new FedoraObjectUIPProcessor(); AccessControlService aclService = mock(AccessControlService.class); when(aclService.hasAccess( any(PID.class), any(AccessGroupSet.class), eq(Permission.editAccessControl))) .thenReturn(true); processor.setAclService(aclService); InputStream entryPart = new FileInputStream(new File("src/test/resources/atompub/metadataUnpublish.xml")); Abdera abdera = new Abdera(); Parser parser = abdera.getParser(); Document<Entry> entryDoc = parser.parse(entryPart); Entry entry = entryDoc.getRoot(); Map<String, org.jdom2.Element> originalMap = new HashMap<String, org.jdom2.Element>(); org.jdom2.Element rdfElement = new org.jdom2.Element("RDF", JDOMNamespaceUtil.RDF_NS); org.jdom2.Element descElement = new org.jdom2.Element("Description", JDOMNamespaceUtil.RDF_NS); rdfElement.addContent(descElement); org.jdom2.Element relElement = new org.jdom2.Element( ContentModelHelper.CDRProperty.isPublished.getPredicate(), JDOMNamespaceUtil.CDR_NS); relElement.setText("yes"); descElement.addContent(relElement); relElement = new org.jdom2.Element( ContentModelHelper.CDRProperty.embargoUntil.getPredicate(), JDOMNamespaceUtil.CDR_ACL_NS); relElement.setText("2013-02-01"); descElement.addContent(relElement); relElement = new org.jdom2.Element( ContentModelHelper.FedoraProperty.hasModel.name(), JDOMNamespaceUtil.FEDORA_MODEL_NS); relElement.setText(ContentModelHelper.Model.SIMPLE.name()); descElement.addContent(relElement); originalMap.put(ContentModelHelper.Datastream.RELS_EXT.getName(), rdfElement); Map<String, org.jdom2.Element> datastreamMap = AtomPubMetadataParserUtil.extractDatastreams(entry); MetadataUIP uip = mock(MetadataUIP.class); when(uip.getPID()).thenReturn(new PID("uuid:test/ACL")); when(uip.getOperation()).thenReturn(UpdateOperation.REPLACE); when(uip.getOriginalData()).thenReturn(originalMap); when(uip.getModifiedData()).thenReturn(originalMap); when(uip.getIncomingData()).thenReturn(datastreamMap); when(uip.getModifiedFiles()).thenReturn(getModifiedFiles(originalMap)); UIPUpdatePipeline pipeline = mock(UIPUpdatePipeline.class); when(pipeline.processUIP(any(UpdateInformationPackage.class))).thenReturn(uip); processor.setPipeline(pipeline); processor.setVirtualDatastreamMap(new HashMap<String, Datastream>()); DigitalObjectManager digitalObjectManager = mock(DigitalObjectManager.class); processor.setDigitalObjectManager(digitalObjectManager); processor.setOperationsMessageSender(mock(OperationsMessageSender.class)); processor.process(uip); }
public AdapterResponse<Feed> adapterResponse(int entriesOnFeed, boolean hasNextMarker) { final Feed feed = Abdera.getInstance().newFeed(); for (int i = 1; i <= entriesOnFeed; i++) { Entry entry = Abdera.getInstance().newEntry(); entry.setId(Integer.toString(i)); feed.addEntry(entry); } if (hasNextMarker) { feed.addLink("next", REL_NEXT); } return new FeedSourceAdapterResponse<Feed>(feed, HttpStatus.OK, ""); }
private Entry addEntry(String endpointAddress) throws Exception { Entry e = createBookEntry(256, "AtomBook"); StringWriter w = new StringWriter(); e.writeTo(w); PostMethod post = new PostMethod(endpointAddress); post.setRequestEntity(new StringRequestEntity(w.toString(), "application/atom+xml", null)); HttpClient httpclient = new HttpClient(); String location = null; try { int result = httpclient.executeMethod(post); assertEquals(201, result); location = post.getResponseHeader("Location").getValue(); InputStream ins = post.getResponseBodyAsStream(); Document<Entry> entryDoc = abdera.getParser().parse(copyIn(ins)); assertEquals(entryDoc.getRoot().toString(), e.toString()); } finally { post.releaseConnection(); } Entry entry = getEntry(location, null); assertEquals(location, entry.getBaseUri().toString()); assertEquals("AtomBook", entry.getTitle()); return entry; }
@Test @RunAsClient public void testUpdateAssetFromAtomWithStateNotExist(@ArquillianResource URL baseURL) throws Exception { URL url = new URL(baseURL + "rest/packages/restPackage1/assets/model1"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty( "Authorization", "Basic " + new Base64().encodeToString(("admin:admin".getBytes()))); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML); connection.connect(); assertEquals(200, connection.getResponseCode()); assertEquals(MediaType.APPLICATION_ATOM_XML, connection.getContentType()); InputStream in = connection.getInputStream(); assertNotNull(in); Document<Entry> doc = abdera.getParser().parse(in); Entry entry = doc.getRoot(); // Update state ExtensibleElement metadataExtension = entry.getExtension(Translator.METADATA); ExtensibleElement stateExtension = metadataExtension.getExtension(Translator.STATE); stateExtension.<Element>getExtension(Translator.VALUE).setText("NonExistState"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty( "Authorization", "Basic " + new Base64().encodeToString(("admin:admin".getBytes()))); connection.setRequestMethod("PUT"); connection.setRequestProperty("Content-type", MediaType.APPLICATION_ATOM_XML); connection.setDoOutput(true); entry.writeTo(connection.getOutputStream()); assertEquals(500, connection.getResponseCode()); connection.disconnect(); }
/** @throws java.lang.Exception */ @Override @Before public void setUp() throws Exception { abdera = Abdera.getInstance(); apim = getFedoraClient().getAPIM(); System.setProperty("fedoraServerHost", "localhost"); System.setProperty("fedoraServerPort", "8080"); }
private Entry getEntry(String endpointAddress, String acceptType) throws Exception { GetMethod get = new GetMethod(endpointAddress); get.setRequestHeader("Content-Type", "*/*"); if (acceptType != null) { get.setRequestHeader("Accept", acceptType); } HttpClient httpClient = new HttpClient(); try { httpClient.executeMethod(get); Document<Entry> doc = abdera.getParser().parse(copyIn(get.getResponseBodyAsStream())); return doc.getRoot(); } finally { get.releaseConnection(); } }
private Feed createAtomObject(String spid, String contentLocation) throws Exception { PID pid = PID.getInstance(spid); Date date = new Date(1); String title = "title"; String author = "org.fcrepo.test.api.TestManagedDatastreams"; Feed feed = abdera.newFeed(); feed.setId(pid.toURI()); feed.setTitle(title); feed.setUpdated(date); feed.addAuthor(author); if (contentLocation != null && contentLocation.length() > 0) { addAtomManagedDatastream(feed, contentLocation); } return feed; }
@Test @RunAsClient public void testGetAssetAsAtom(@ArquillianResource URL baseURL) throws Exception { URL url = new URL(baseURL, "rest/packages/restPackage1/assets/model1"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty( "Authorization", "Basic " + new Base64().encodeToString(("admin:admin".getBytes()))); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML); connection.connect(); assertEquals(200, connection.getResponseCode()); assertEquals(MediaType.APPLICATION_ATOM_XML, connection.getContentType()); // System.out.println(getContent(connection)); InputStream in = connection.getInputStream(); assertNotNull(in); Document<Entry> doc = abdera.getParser().parse(in); Entry entry = doc.getRoot(); assertEquals( baseURL.getPath() + "rest/packages/restPackage1/assets/model1", entry.getBaseUri().getPath()); assertEquals("model1", entry.getTitle()); assertNotNull(entry.getPublished()); assertNotNull(entry.getAuthor().getName()); assertEquals("desc for model1", entry.getSummary()); // assertEquals(MediaType.APPLICATION_OCTET_STREAM_TYPE.getType(), // entry.getContentMimeType().getPrimaryType()); assertEquals( baseURL.getPath() + "rest/packages/restPackage1/assets/model1/binary", entry.getContentSrc().getPath()); ExtensibleElement metadataExtension = entry.getExtension(Translator.METADATA); ExtensibleElement archivedExtension = metadataExtension.getExtension(Translator.ARCHIVED); assertEquals("false", archivedExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement stateExtension = metadataExtension.getExtension(Translator.STATE); assertEquals("Draft", stateExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement formatExtension = metadataExtension.getExtension(Translator.FORMAT); assertEquals("model.drl", formatExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement uuidExtension = metadataExtension.getExtension(Translator.UUID); assertNotNull(uuidExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement categoryExtension = metadataExtension.getExtension(Translator.CATEGORIES); assertEquals( "AssetPackageResourceTestCategory", categoryExtension.getSimpleExtension(Translator.VALUE)); }
private Entry createBookEntry(int id, String name) throws Exception { Book b = new Book(); b.setId(id); b.setName(name); Factory factory = Abdera.getNewFactory(); JAXBContext jc = JAXBContext.newInstance(Book.class); Entry e = factory.getAbdera().newEntry(); e.setTitle(b.getName()); e.setId(Long.toString(b.getId())); StringWriter writer = new StringWriter(); jc.createMarshaller().marshal(b, writer); Content ct = factory.newContent(Content.Type.XML); ct.setValue(writer.toString()); e.setContentElement(ct); return e; }
@Override public Feed transform(final String feed) throws TransformerException { final StringReader reader = new StringReader(feed); final Document<Feed> feedDoc = Abdera.getNewParserFactory().getParser().parse(reader); return feedDoc.getRoot(); }
public static void main(String[] args) throws Exception { Abdera abdera = new Abdera(); AbderaClient abderaClient = new AbderaClient(abdera); Factory factory = abdera.getFactory(); // Perform introspection. This is an optional step. If you already // know the URI of the APP collection to POST to, you can skip it. Document<Service> introspection = abderaClient.get("http://localhost:9080/EmployeeService/").getDocument(); Service service = introspection.getRoot(); Collection collection = service.getCollection("Employee Directory Workspace", "itc Employee Database"); report("The Collection Element", collection.toString()); // Create the entry to post to the collection Entry entry = factory.newEntry(); entry.setId("tag:example.org,2006:foo"); entry.setTitle("This is the title"); entry.setUpdated(new AtomDate().getValue()); entry.setPublished(new AtomDate().getValue()); entry.addLink("/employee"); entry.addAuthor("James"); entry.setContent("This is the content"); report("The Entry to Post", entry.toString()); // Post the entry. Be sure to grab the resolved HREF of the collection Document<Entry> doc = abderaClient.post(collection.getResolvedHref().toString(), entry).getDocument(); // In some implementations (such as Google's GData API, the entry URI is // distinct from it's edit URI. To be safe, we should assume it may be // different IRI entryUri = doc.getBaseUri(); report("The Created Entry", doc.getRoot().toString()); // Grab the Edit URI from the entry. The entry MAY have more than one // edit link. We need to make sure we grab the right one. IRI editUri = getEditUri(doc.getRoot()); // If there is an Edit Link, we can edit the entry if (editUri != null) { // Before we can edit, we need to grab an "editable" representation doc = abderaClient.get(editUri.toString()).getDocument(); // Change whatever you want in the retrieved entry // doc.getRoot().getTitleElement().setValue("This is the changed title"); // Put it back to the server abderaClient.put(editUri.toString(), doc.getRoot()); // This is just to show that the entry has been modified doc = abderaClient.get(entryUri.toString()).getDocument(); report("The Modified Entry", doc.getRoot().toString()); } else { // Otherwise, the entry cannot be modified (no suitable edit link was found) report("The Entry cannot be modified", null); } // Delete the entry. Again, we need to make sure that we have the current // edit link for the entry doc = abderaClient.get(entryUri.toString()).getDocument(); editUri = getEditUri(doc.getRoot()); if (editUri != null) { abderaClient.delete(editUri.toString()); report("The Enry has been deleted", null); } else { report("The Entry cannot be deleted", null); } }
@Test @RunAsClient public void testUpdateAssetFromAtom(@ArquillianResource URL baseURL) throws Exception { URL url = new URL(baseURL + "rest/packages/restPackage1/assets/model1"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty( "Authorization", "Basic " + new Base64().encodeToString(("admin:admin".getBytes()))); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML); connection.connect(); assertEquals(200, connection.getResponseCode()); assertEquals(MediaType.APPLICATION_ATOM_XML, connection.getContentType()); // System.out.println(GetContent(connection)); InputStream in = connection.getInputStream(); assertNotNull(in); Document<Entry> doc = abdera.getParser().parse(in); Entry entry = doc.getRoot(); assertEquals( baseURL.getPath() + "rest/packages/restPackage1/assets/model1", entry.getBaseUri().getPath()); assertEquals("model1", entry.getTitle()); assertNotNull(entry.getPublished()); assertNotNull(entry.getAuthor().getName()); assertEquals("desc for model1", entry.getSummary()); // assertEquals(MediaType.APPLICATION_OCTET_STREAM_TYPE.getType(), // entry.getContentMimeType().getPrimaryType()); assertEquals( baseURL.getPath() + "rest/packages/restPackage1/assets/model1/binary", entry.getContentSrc().getPath()); ExtensibleElement metadataExtension = entry.getExtension(Translator.METADATA); ExtensibleElement archivedExtension = metadataExtension.getExtension(Translator.ARCHIVED); assertEquals("false", archivedExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement stateExtension = metadataExtension.getExtension(Translator.STATE); assertEquals("Draft", stateExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement formatExtension = metadataExtension.getExtension(Translator.FORMAT); assertEquals("model.drl", formatExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement uuidExtension = metadataExtension.getExtension(Translator.UUID); assertNotNull(uuidExtension.getSimpleExtension(Translator.VALUE)); ExtensibleElement categoryExtension = metadataExtension.getExtension(Translator.CATEGORIES); assertEquals( "AssetPackageResourceTestCategory", categoryExtension.getSimpleExtension(Translator.VALUE)); connection.disconnect(); // Update category. Add a new category tag categoryExtension.addSimpleExtension(Translator.VALUE, "AssetPackageResourceTestCategory2"); // Update state stateExtension.<Element>getExtension(Translator.VALUE).setText("Dev"); // Update format formatExtension.<Element>getExtension(Translator.VALUE).setText("anotherformat"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty( "Authorization", "Basic " + new Base64().encodeToString(("admin:admin".getBytes()))); connection.setRequestMethod("PUT"); connection.setRequestProperty("Content-type", MediaType.APPLICATION_ATOM_XML); connection.setDoOutput(true); entry.writeTo(connection.getOutputStream()); assertEquals(204, connection.getResponseCode()); connection.disconnect(); // Verify again connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty( "Authorization", "Basic " + new Base64().encodeToString(("admin:admin".getBytes()))); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML); connection.connect(); assertEquals(200, connection.getResponseCode()); // System.out.println(GetContent(connection)); in = connection.getInputStream(); assertNotNull(in); doc = abdera.getParser().parse(in); entry = doc.getRoot(); metadataExtension = entry.getExtension(Translator.METADATA); archivedExtension = metadataExtension.getExtension(Translator.ARCHIVED); assertEquals("false", archivedExtension.getSimpleExtension(Translator.VALUE)); stateExtension = metadataExtension.getExtension(Translator.STATE); assertEquals("Dev", stateExtension.getSimpleExtension(Translator.VALUE)); formatExtension = metadataExtension.getExtension(Translator.FORMAT); assertEquals("anotherformat", formatExtension.getSimpleExtension(Translator.VALUE)); categoryExtension = metadataExtension.getExtension(Translator.CATEGORIES); List<Element> categoryValues = categoryExtension.getExtensions(Translator.VALUE); assertTrue(categoryValues.size() == 2); boolean foundCategory1 = false; boolean foundCategory2 = false; for (Element cat : categoryValues) { String catgoryValue = cat.getText(); if ("AssetPackageResourceTestCategory".equals(catgoryValue)) { foundCategory1 = true; } if ("AssetPackageResourceTestCategory2".equals(catgoryValue)) { foundCategory2 = true; } } assertTrue(foundCategory1); assertTrue(foundCategory2); }
/* public static Entry ToPackageEntry(PackageItem p, UriInfo uriInfo) { UriBuilder base; if(p.isHistoricalVersion()) { base = uriInfo.getBaseUriBuilder().path("packages").path(p.getName()).path("versions").path(Long.toString(p.getVersionNumber())); } else { base = uriInfo.getBaseUriBuilder().path("packages").path(p.getName()); } //NOTE: Entry extension is not supported in RESTEasy. We need to either use Abdera or get extension //supported in RESTEasy //PackageMetadata metadata = new PackageMetadata(); //metadata.setUuid(p.getUUID()); //metadata.setCreated(p.getCreatedDate().getTime()); //metadata.setLastModified(p.getLastModified().getTime()); //metadata.setLastContributor(p.getLastContributor()); //c.setJAXBObject(metadata); Entry e =new Entry(); e.setTitle(p.getTitle()); e.setSummary(p.getDescription()); e.setPublished(new Date(p.getLastModified().getTimeInMillis())); e.setBase(base.clone().build()); e.setId(base.clone().build()); Iterator<AssetItem> i = p.getAssets(); while (i.hasNext()) { AssetItem item = i.next(); Link link = new Link(); link.setHref((base.clone().path("assets").path(item.getName())).build()); link.setTitle(item.getTitle()); link.setRel("asset"); e.getLinks().add(link); } Content c = new Content(); c.setType(MediaType.APPLICATION_OCTET_STREAM_TYPE); c.setSrc(base.clone().path("binary").build()); e.setContent(c); return e; }*/ public static Entry toAssetEntryAbdera(AssetItem a, UriInfo uriInfo) { URI baseURL; if (a.isHistoricalVersion()) { baseURL = uriInfo .getBaseUriBuilder() .path("packages/{packageName}/assets/{assetName}/versions/{version}") .build(a.getModuleName(), a.getName(), Long.toString(a.getVersionNumber())); } else { baseURL = uriInfo .getBaseUriBuilder() .path("packages/{packageName}/assets/{assetName}") .build(a.getModuleName(), a.getName()); } Factory factory = Abdera.getNewFactory(); org.apache.abdera.model.Entry e = factory.getAbdera().newEntry(); e.setTitle(a.getTitle()); e.setSummary(a.getDescription()); e.setPublished(new Date(a.getLastModified().getTimeInMillis())); e.setBaseUri(baseURL.toString()); e.addAuthor(a.getLastContributor()); e.setId(baseURL.toString()); // generate meta data ExtensibleElement extension = e.addExtension(METADATA); ExtensibleElement childExtension = extension.addExtension(ARCHIVED); // childExtension.setAttributeValue("type", ArtifactsRepository.METADATA_TYPE_STRING); childExtension.addSimpleExtension(VALUE, a.isArchived() ? "true" : "false"); childExtension = extension.addExtension(UUID); childExtension.addSimpleExtension(VALUE, a.getUUID()); childExtension = extension.addExtension(STATE); childExtension.addSimpleExtension(VALUE, a.getState() == null ? "" : a.getState().getName()); childExtension = extension.addExtension(FORMAT); childExtension.addSimpleExtension(VALUE, a.getFormat()); childExtension = extension.addExtension(VERSION_NUMBER); childExtension.addSimpleExtension(VALUE, String.valueOf(a.getVersionNumber())); childExtension = extension.addExtension(CHECKIN_COMMENT); childExtension.addSimpleExtension(VALUE, a.getCheckinComment()); List<CategoryItem> categories = a.getCategories(); childExtension = extension.addExtension(CATEGORIES); for (CategoryItem c : categories) { childExtension.addSimpleExtension(VALUE, c.getName()); } org.apache.abdera.model.Content content = factory.newContent(); content.setSrc(UriBuilder.fromUri(baseURL).path("binary").build().toString()); content.setMimeType("application/octet-stream"); content.setContentType(Type.MEDIA); e.setContentElement(content); return e; }
public static Entry toPackageEntryAbdera(ModuleItem p, UriInfo uriInfo) { URI baseURL; if (p.isHistoricalVersion()) { baseURL = uriInfo .getBaseUriBuilder() .path("packages/{packageName}/versions/{version}") .build(p.getName(), Long.toString(p.getVersionNumber())); } else { baseURL = uriInfo.getBaseUriBuilder().path("packages/{packageName}").build(p.getName()); } Factory factory = Abdera.getNewFactory(); org.apache.abdera.model.Entry e = factory.getAbdera().newEntry(); e.setTitle(p.getTitle()); e.setSummary(p.getDescription()); e.setPublished(new Date(p.getLastModified().getTimeInMillis())); e.setBaseUri(baseURL.toString()); e.addAuthor(p.getLastContributor()); e.setId(baseURL.toString()); Iterator<AssetItem> i = p.getAssets(); while (i.hasNext()) { AssetItem item = i.next(); org.apache.abdera.model.Link l = factory.newLink(); l.setHref( UriBuilder.fromUri(baseURL).path("assets/{assetName}").build(item.getName()).toString()); l.setTitle(item.getTitle()); l.setRel("asset"); e.addLink(l); } // generate meta data ExtensibleElement extension = e.addExtension(METADATA); ExtensibleElement childExtension = extension.addExtension(ARCHIVED); // childExtension.setAttributeValue("type", ArtifactsRepository.METADATA_TYPE_STRING); childExtension.addSimpleExtension(VALUE, p.isArchived() ? "true" : "false"); childExtension = extension.addExtension(UUID); childExtension.addSimpleExtension(VALUE, p.getUUID()); childExtension = extension.addExtension(STATE); childExtension.addSimpleExtension(VALUE, p.getState() == null ? "" : p.getState().getName()); childExtension = extension.addExtension(VERSION_NUMBER); childExtension.addSimpleExtension(VALUE, String.valueOf(p.getVersionNumber())); childExtension = extension.addExtension(CHECKIN_COMMENT); childExtension.addSimpleExtension(VALUE, p.getCheckinComment()); org.apache.abdera.model.Content content = factory.newContent(); content.setSrc(UriBuilder.fromUri(baseURL).path("binary").build().toString()); content.setMimeType("application/octet-stream"); content.setContentType(Type.MEDIA); e.setContentElement(content); return e; }