/*
* (C) Copyright 2015 Nuxeo SA (http://nuxeo.com/) and others.
*
* 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.
*
* Contributors:
* Anahide Tchertchian
*/
package org.nuxeo.ecm.web.resources.wro.factory;
import java.util.List;
import org.nuxeo.ecm.web.resources.api.Resource;
import org.nuxeo.ecm.web.resources.api.ResourceContextImpl;
import org.nuxeo.ecm.web.resources.api.ResourceType;
import org.nuxeo.ecm.web.resources.api.service.WebResourceManager;
import org.nuxeo.runtime.api.Framework;
import org.nuxeo.theme.styling.service.ThemeStylingService;
import org.nuxeo.theme.styling.service.descriptors.PageDescriptor;
import ro.isdc.wro.model.WroModel;
import ro.isdc.wro.model.factory.WroModelFactory;
import ro.isdc.wro.model.group.Group;
/**
* Generates a {@link WroModel} using contributions to the {@link ThemeStylingService} service.
* <p>
* Maps {@link PageResourceBundle} elements to wro groups, and map their ordered resources (with resolved dependencies)
* to wro resources.
*
* @since 7.10
*/
public class NuxeoWroPageModelFactory extends NuxeoWroModelFactory implements WroModelFactory {
@Override
public WroModel create() {
WroModel model = new WroModel();
ThemeStylingService ts = Framework.getService(ThemeStylingService.class);
WebResourceManager ws = Framework.getService(WebResourceManager.class);
ResourceContextImpl rcontext = new ResourceContextImpl();
List<PageDescriptor> pages = ts.getPages();
for (PageDescriptor page : pages) {
String groupName = page.getName();
Group group = new Group(groupName);
List<String> bundleNames = page.getResourceBundles();
for (String bundleName : bundleNames) {
List<Resource> resources = ws.getResources(rcontext, bundleName, ResourceType.any.name());
if (resources != null) {
for (Resource resource : resources) {
ro.isdc.wro.model.resource.Resource wr = toWroResource(bundleName, resource);
if (wr != null) {
group.addResource(wr);
}
}
}
}
model.addGroup(group);
}
return model;
}
public void destroy() {
}
}