blob: 25e1a5046f4a1fee7d769336c601d5d37b1e16c1 [file] [log] [blame]
/*
* Copyright 2003,2004 The Apache Software Foundation.
*
* 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 org.apache.pluto.binding.impl.digester;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.digester.Digester;
import org.apache.pluto.binding.PortletAppDD;
import org.apache.pluto.binding.WebAppDD;
import org.apache.pluto.binding.XMLBindingFactory;
import org.xml.sax.SAXException;
/**
* ReadOnly implementation of XMLBindingFactory.
* @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>
* @version 1.0
* @since Mar 10, 2004 at 12:36:17 PM
*/
public class DigesterXMLBindingFactory extends XMLBindingFactory {
private Digester wDigester;
private Digester pDigester;
public DigesterXMLBindingFactory() {
this.wDigester = new Digester();
this.pDigester = new Digester();
init();
}
public int getMode() {
return XMLBindingFactory.READ_ONLY;
}
public WebAppDD getWebAppDD(InputStream in) throws IOException {
try {
return (WebAppDD) wDigester.parse(in);
} catch (SAXException saxe) {
throw new IOException(saxe.getMessage());
}
}
public PortletAppDD getPortletAppDD(InputStream in) throws IOException {
try {
return (PortletAppDD) pDigester.parse(in);
} catch (SAXException saxe) {
throw new IOException(saxe.getMessage());
}
}
private void init() {
initWebDigester();
initPortletDigester();
}
private void initWebDigester() {
wDigester.setValidating(false);
}
private void initPortletDigester() {
pDigester.setValidating(false);
pDigester.addObjectCreate("portlet-app", DigesterPortletAppDD.class);
// ** Portlet Entity ** //
pDigester.addObjectCreate("portlet-app/portlet",
DigesterPortletDD.class);
pDigester.addBeanPropertySetter("portlet-app/portlet/description",
"description");
pDigester.addBeanPropertySetter("portlet-app/portlet/portlet-name",
"portletName");
pDigester.addBeanPropertySetter("portlet-app/portlet/display-name",
"displayName");
pDigester.addBeanPropertySetter("portlet-app/portlet/portlet-class",
"portletClass");
// ** Init Parameter ** //
pDigester.addObjectCreate("portlet-app/portlet/init-param",
DigesterInitParameterDD.class);
pDigester.addBeanPropertySetter("portlet-app/portlet/init-param/name",
"parameterName");
pDigester.addBeanPropertySetter("portlet-app/portlet/init-param/value",
"parameterValue");
pDigester.addBeanPropertySetter(
"portlet-app/portlet/init-param/description", "description");
pDigester.addSetNext("portlet-app/portlet/init-param",
"addInitParameter");
pDigester.addBeanPropertySetter("portlet-app/portlet/expiration-cache",
"expirationCache");
pDigester.addBeanPropertySetter("portlet-app/portlet/resource-bundle",
"resourceBundle");
pDigester.addObjectCreate("portlet-app/portlet/portlet-info",
DigesterPortletInfoDD.class);
pDigester.addBeanPropertySetter(
"portlet-app/portlet/portlet-info/title", "title");
pDigester.addBeanPropertySetter(
"portlet-app/portlet/portlet-info/short-title", "shortTitle");
pDigester.addBeanPropertySetter(
"portlet-app/portlet/portlet-info/keywords", "keywords");
pDigester.addSetNext("portlet-app/portlet/portlet-info",
"setPortletInfo");
pDigester.addObjectCreate(
"portlet-app/portlet/portlet-preferences/preference",
DigesterPortletPreferenceDD.class);
pDigester.addBeanPropertySetter(
"portlet-app/portlet/portlet-preferences/preference/name", "name");
pDigester.addBeanPropertySetter(
"portlet-app/portlet/portlet-preferences/preference/value",
"value");
pDigester.addBeanPropertySetter(
"portlet-app/portlet/portlet-preferences/preference/read-only",
"readOnly");
pDigester.addSetNext(
"portlet-app/portlet/portlet-preferences/preference",
"addPortletPreference");
// ** Supports ** //
pDigester.addObjectCreate("portlet-app/portlet/supports",
DigesterSupportedMimeTypeDD.class);
pDigester.addBeanPropertySetter(
"portlet-app/portlet/supports/mime-type", "mimeType");
pDigester.addCallMethod("portlet-app/portlet/supports/portlet-mode",
"addPortletMode", 0);
pDigester.addSetNext("portlet-app/portlet/supports",
"addSupportedMimeType");
//** Supported Locale ** //
pDigester.addCallMethod("portlet-app/portlet/supported-locale",
"addSupportedLocale", 0);
pDigester.addSetNext("portlet-app/portlet", "addPortlet");
}
}