/* * © Copyright IBM Corp. 2010 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.ibm.xsp.extlib.sbt.services.client; import java.io.File; import java.util.Map; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.FileEntity; import com.ibm.commons.util.StringUtil; import com.ibm.sbt.services.client.ClientService; import com.ibm.sbt.services.client.ClientServicesException; import com.ibm.sbt.services.endpoints.Endpoint; import com.ibm.xsp.extlib.beans.UserBean; import com.ibm.xsp.extlib.log.ExtlibCoreLogger; import com.ibm.xsp.extlib.sbt.files.type.SmartCloudFiles; /** *SmartCloudFiles service. * @author Philippe Riand * @author doconnor */ public class SmartCloudService extends ClientService { private String mimeForUpload; public SmartCloudService(Endpoint endpoint) { super(endpoint); } @Override protected void addUrlParts(StringBuilder b, Args args) throws ClientServicesException { // TODO Auto-generated method stub Map<String,String> parameters = args.getParameters(); /* * /files/basic/cmis/repository/{repositoryId}/folderc/snx:files */ if(parameters!=null) { String subscriberId = (String)UserBean.get().getPerson().getField(SmartCloudFiles.LOTUS_LIVE_SUBSCRIBER_ID); b.append("/p!"); if(StringUtil.isEmpty(subscriberId)){ if(ExtlibCoreLogger.SBT.isErrorEnabled()){ ExtlibCoreLogger.SBT.errorp(this, "addUrlParts", "SmartCloud subscriber ID is null. Repository IDs will not be resolved. Ensure that the \"extlib.people.provider\" property has been set in the application's xsp.properties (e.g. \nextlib.people.provider=smartcloud\nor some variation of this must be set in xsp.properties)"); } } b.append(subscriberId); b.append("/folderc/snx:files"); /* b.append("!"); b.append(subscriberId); Removed since SmartCloud upgraded to 'Connections API' 12/15/11 */ } super.addUrlParts(b, args); } /** * @return the mimeForUpload */ public String getMimeForUpload() { return mimeForUpload; } @Override protected boolean isValidUrlParameter(Args args, String name) throws ClientServicesException { // TODO Auto-generated method stub if(name.equals("subscriberId")) { return false; } return super.isValidUrlParameter(args, name); } @Override protected void prepareRequest(HttpClient httpClient,HttpRequestBase httpRequestBase, Args args, Content content) throws ClientServicesException { Object contents = args.getHandler(); if(contents instanceof File){ String name = args.getParameters().get("file"); FileEntity fileEnt = new FileEntity((File) contents, getMimeForUpload()); //fileEnt.setContentEncoding(FORMAT_BINARY); httpRequestBase.setHeader("slug", name); httpRequestBase.setHeader("Content-type", getMimeForUpload()); if (fileEnt != null && (httpRequestBase instanceof HttpEntityEnclosingRequestBase)) { ((HttpEntityEnclosingRequestBase) httpRequestBase).setEntity(fileEnt); } } // TODO Auto-generated method stub super.prepareRequest(httpClient, httpRequestBase, args, content); } /** * @param mimeForUpload the mimeForUpload to set */ public void setMimeForUpload(String mimeForUpload) { if(StringUtil.isEmpty(mimeForUpload)){ this.mimeForUpload = "application/octet-stream"; return; } this.mimeForUpload = mimeForUpload; } }