package org.curriki.xwiki.servlet.restlet.resource.assets; import org.restlet.resource.Representation; import org.restlet.resource.ResourceException; import org.restlet.Context; import org.restlet.data.Request; import org.restlet.data.Response; import org.restlet.data.Status; import org.curriki.xwiki.servlet.restlet.resource.BaseResource; import org.curriki.xwiki.plugin.asset.Asset; import org.curriki.xwiki.plugin.asset.AssetException; import net.sf.json.JSONObject; import net.sf.json.JSONException; import com.xpn.xwiki.XWikiException; /** */ public class AssetsResource extends BaseResource { public AssetsResource(Context context, Request request, Response response) { super(context, request, response); setModifiable(true); defaultVariants(); } @Override public void acceptRepresentation(Representation representation) throws ResourceException { setupXWiki(); JSONObject json = representationToJSONObject(representation); String parent = null; try { parent = json.getString("parent"); if (parent.length() < 1){ parent = null; } } catch (JSONException e) { // No parent key to get } String copyOf = null; try { copyOf = json.getString("copyOf"); if (copyOf.length() < 1){ copyOf = null; } } catch (JSONException e) { // No parent key to get } String publishSpace = null; try { publishSpace = json.getString("publishSpace"); if (publishSpace.length() < 1){ publishSpace = null; } } catch (JSONException e) { // No parent key to get } Asset createdPage; try { if (copyOf != null) { createdPage = plugin.copyAsset(copyOf, publishSpace); } else { createdPage = plugin.createAsset(parent, publishSpace); } } catch (XWikiException e) { if (e instanceof AssetException) { if (e.getCode() == AssetException.ERROR_ASSET_NOT_FOUND) { throw error(Status.CLIENT_ERROR_NOT_FOUND, e.getMessage()); } else if (e.getCode() == AssetException.ERROR_ASSET_FORBIDDEN) { throw error(Status.CLIENT_ERROR_FORBIDDEN, e.getMessage()); } else { throw error(Status.SERVER_ERROR_INTERNAL, e.getFullMessage()); } } else { throw error(Status.SERVER_ERROR_INTERNAL, e.getFullMessage()); } } getResponse().redirectSeeOther(getChildReference(getRequest().getResourceRef(), createdPage.getFullName())); } }