package org.easysoa.registry.types.adapters.java;
import org.apache.log4j.Logger;
import org.easysoa.registry.types.EndpointConsumption;
import org.easysoa.registry.types.ServiceConsumption;
import org.easysoa.registry.types.adapters.EndpointConsumptionAdapter;
import org.easysoa.registry.types.java.JavaServiceConsumption;
import org.easysoa.registry.types.java.MavenDeliverable;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.adapter.DocumentAdapterFactory;
public class JavaDoctypesAdapterFactory implements DocumentAdapterFactory {
private static Logger logger = Logger.getLogger(JavaDoctypesAdapterFactory.class);
@Override
public Object getAdapter(DocumentModel doc, Class<?> itf) {
try {
if (MavenDeliverable.class.equals(itf)) {
return new MavenDeliverableAdapter(doc);
}
if (JavaServiceConsumption.class.equals(itf)) {
return new JavaServiceConsumptionAdapter(doc);
}
if (ServiceConsumption.class.equals(itf)) {
if (JavaServiceConsumption.DOCTYPE.equals(doc.getType())) {
return new JavaServiceConsumptionAdapter(doc);
} else if (EndpointConsumption.DOCTYPE.equals(doc.getType())) {
// taken from CoreDoctypesAdapterFactory, TODO using extends / super ??
return new EndpointConsumptionAdapter(doc);
}
// NB. can't support more than one ServiceConsumption subclassing project !! TODO LATER better
}
}
catch (Exception e) {
logger.warn("Could not create adapter: " + e.getMessage());
}
return null;
}
}