Initial Import of Pluto 1.1 seed code.

git-svn-id: https://svn.apache.org/repos/asf/portals/pluto/branches/binding@54049 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/binding.iml b/binding.iml
new file mode 100644
index 0000000..6a04d86
--- /dev/null
+++ b/binding.iml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<module version="4" relativePaths="true" type="JAVA_MODULE">

+  <component name="ModuleRootManager" />

+  <component name="NewModuleRootManager">

+    <output url="file://$MODULE_DIR$/target/classes" />

+    <exclude-output />

+    <exclude-exploded />

+    <content url="file://$MODULE_DIR$">

+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />

+      <excludeFolder url="file://$MODULE_DIR$/target" />

+    </content>

+    <orderEntry type="inheritedJdk" />

+    <orderEntry type="sourceFolder" forTests="false" />

+    <orderEntry type="library" name="commons-digester-1.5" level="application" />

+    <orderEntryProperties />

+  </component>

+</module>

+

diff --git a/project.properties b/project.properties
new file mode 100644
index 0000000..07895e2
--- /dev/null
+++ b/project.properties
@@ -0,0 +1,3 @@
+maven.checkstyle.properties=${basedir}/../checkstyle.xml

+maven.checkstyle.headerfile=${basedir}/../LICENSE.TXT

+maven.license.licenseFile=${basedir}/../LICENSE.TXT

diff --git a/project.xml b/project.xml
new file mode 100644
index 0000000..80da92c
--- /dev/null
+++ b/project.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- 

+Copyright 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.

+-->

+<project>

+    <extend>${basedir}/../project.xml</extend>

+    <name>Portlet OM and Bindings </name>

+    <id>pluto-binding</id>

+

+    <organization>

+        <logo>/../../images/apache-portals.gif</logo>

+    </organization>

+

+    <logo>/../../images/pluto.png</logo>

+

+    <shortDescription>A PortletSpecification OM Binding.</shortDescription>

+

+    <description>

+  Parsing and Binding tools for the portlet specification.

+    </description>

+

+    <dependencies>

+        <dependency>

+            <id>commons-digester</id>

+            <version>1.6</version>

+        </dependency>

+    </dependencies>

+

+    <build>

+        <nagEmailAddress>pluto-dev@jakarta.apache.org</nagEmailAddress>

+

+        <sourceDirectory>src/java</sourceDirectory>

+        <aspectSourceDirectory/>

+

+        <unitTestSourceDirectory>src/test</unitTestSourceDirectory>

+

+        <unitTest>

+            <includes>

+                <include>**/*Test.java</include>

+            </includes>

+        </unitTest>

+

+        <integrationUnitTestSourceDirectory>src/rttest</integrationUnitTestSourceDirectory>

+

+        <integrationUnitTest>

+            <includes>

+                <include>**/*Test.java</include>

+            </includes>

+        </integrationUnitTest>

+

+

+        <resources>

+            <resource>

+                <directory>src/conf</directory>

+                <includes>

+                    <include>**/*.properties</include>

+                    <include>**/*.xml</include>

+                </includes>

+            </resource>

+        </resources>

+

+        <jars/>

+

+    </build>

+

+</project>

diff --git a/src/java/org/apache/pluto/binding/InitParameterDD.java b/src/java/org/apache/pluto/binding/InitParameterDD.java
new file mode 100644
index 0000000..0354a5c
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/InitParameterDD.java
@@ -0,0 +1,35 @@
+/*

+ * 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;

+

+/**

+ * Implemented by binding provider in order to allow the retrieval of

+ * init-parameter bindings.

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 10:12:54 PM

+ */

+public interface InitParameterDD {

+

+    /** Standard Getter. */

+    String getParameterName();

+

+    /** Standard Getter. */

+    String getParameterValue();

+

+    /** Standard Getter. */

+    String getDescription();

+}

diff --git a/src/java/org/apache/pluto/binding/MutablePortletAppDD.java b/src/java/org/apache/pluto/binding/MutablePortletAppDD.java
new file mode 100644
index 0000000..d8c285c
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/MutablePortletAppDD.java
@@ -0,0 +1,28 @@
+/*

+ * 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;

+

+

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 9, 2004 at 4:36:23 PM

+ */

+public interface MutablePortletAppDD extends PortletAppDD {

+

+}

diff --git a/src/java/org/apache/pluto/binding/MutableXMLBindingFactory.java b/src/java/org/apache/pluto/binding/MutableXMLBindingFactory.java
new file mode 100644
index 0000000..9e441e0
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/MutableXMLBindingFactory.java
@@ -0,0 +1,33 @@
+/*

+ * 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;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.OutputStream;

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 10, 2004 at 12:32:55 PM

+ */

+public abstract class MutableXMLBindingFactory extends XMLBindingFactory {

+

+    public abstract void saveWebApp(WebAppDD dd, OutputStream out)

+        throws IOException;

+

+}

diff --git a/src/java/org/apache/pluto/binding/PortletAppDD.java b/src/java/org/apache/pluto/binding/PortletAppDD.java
new file mode 100644
index 0000000..73e796b
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/PortletAppDD.java
@@ -0,0 +1,35 @@
+/*

+ * 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;

+

+/**

+ * Implemented by the binding provider to represent the PortletApp Deployment

+ * Descriptor (portlet.xml)

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 11:17:50 PM

+ */

+public interface PortletAppDD {

+

+    public static final String PORTLET_XML = "/WEB-INF/portlet.xml";

+

+    /** Standard Getter. */

+    PortletDD[] getPortlets();

+

+    /** Standard Getter. */

+    InitParameterDD[] getInitParameters();

+

+}

diff --git a/src/java/org/apache/pluto/binding/PortletDD.java b/src/java/org/apache/pluto/binding/PortletDD.java
new file mode 100644
index 0000000..14f1437
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/PortletDD.java
@@ -0,0 +1,65 @@
+/*

+ * 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;

+

+/**

+ * Implemented by the binding provider in order to represent a PortletDD

+ * Binding.

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 24, 2004 at 7:52:06 PM

+ */

+public interface PortletDD {

+

+    /** Standard Getter. */

+    String getDescription();

+

+    /** Standard Getter. */

+    String getPortletName();

+

+    /** Standard Getter. */

+    String getDisplayName();

+

+    /** Standard Getter. */

+    String getPortletClass();

+

+    /** Standard Getter. */

+    InitParameterDD[] getInitParameters();

+

+    /** Standard Getter. */

+    int getExpirationCache();

+

+    /** Standard Getter. */

+    SupportedMimeTypeDD[] getSupportedMimeTypes();

+

+    /** Standard Getter. */

+    String[] getSupportedLocales();

+

+    /** Standard Getter. */

+    PortletInfoDD getPortletInfo();

+

+    /** Standard Getter. */

+    PortletPreferenceDD[] getPortletPreferences();

+

+    /** Standard Getter. */

+    String getPreferenceValidator();

+

+    /** Standard Getter. */

+    SecurityRoleRefDD[] getSecurityRoleRefs();

+

+    /** Standard Getter. */

+    String getResourceBundle();

+}

diff --git a/src/java/org/apache/pluto/binding/PortletInfoDD.java b/src/java/org/apache/pluto/binding/PortletInfoDD.java
new file mode 100644
index 0000000..7cfce75
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/PortletInfoDD.java
@@ -0,0 +1,37 @@
+/*

+ * 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;

+

+/**

+ * Portlet Information as defined by the <code>portlet.xml</code>

+ * deployment description.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 11, 2004 at 9:59:15 AM

+ */

+public interface PortletInfoDD {

+

+    /** Standard Getter. */

+    String getTitle();

+

+    /** Standard Getter. */

+    String getShortTitle();

+

+    /** Standard Getter. */

+    String getKeywords();

+

+}

diff --git a/src/java/org/apache/pluto/binding/PortletPreferenceDD.java b/src/java/org/apache/pluto/binding/PortletPreferenceDD.java
new file mode 100644
index 0000000..6783a2a
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/PortletPreferenceDD.java
@@ -0,0 +1,37 @@
+/*

+ * 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;

+

+/**

+ * Portlet Preferences as defined by the <code>portlet.xml</code>

+ * deployment descriptor.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 11, 2004 at 9:57:10 AM

+ */

+public interface PortletPreferenceDD {

+

+    /** Standard Getter. */

+    String getName();

+

+    /** Standard Getter. */

+    String getValue();

+

+    /** Standard Getter. */

+    boolean isReadOnly();

+

+}

diff --git a/src/java/org/apache/pluto/binding/SecurityRoleRefDD.java b/src/java/org/apache/pluto/binding/SecurityRoleRefDD.java
new file mode 100644
index 0000000..d96566d
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/SecurityRoleRefDD.java
@@ -0,0 +1,37 @@
+/*

+ * 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;

+

+/**

+ * Security Role Ref as defined by the <code>portlet.xml</code>

+ * deployment descriptor.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 10:18:18 PM

+ */

+public interface SecurityRoleRefDD {

+

+    /** Standard Getter. */

+    String getDescription();

+

+    /** Standard Getter. */

+    String getRoleName();

+

+    /** Standard Getter. */

+    String getRoleLink();

+

+}

diff --git a/src/java/org/apache/pluto/binding/ServletDD.java b/src/java/org/apache/pluto/binding/ServletDD.java
new file mode 100644
index 0000000..ed8d9b1
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/ServletDD.java
@@ -0,0 +1,46 @@
+/*

+ * 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;

+

+/**

+ * Sevlet configuration as defined by the <code>web.xml</code>

+ * deployment description.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 10:09:20 PM

+ */

+public interface ServletDD {

+

+    /** Standard Getter. */

+    String getServletName();

+

+    /** Standard Getter. */

+    String getDisplayName();

+

+    /** Standard Getter. */

+    String getDescription();

+

+    /** Standard Getter. */

+    String getServletClass();

+

+    /** Standard Getter. */

+    InitParameterDD[] getInitParameters();

+

+    /** Standard Getter. */

+    SecurityRoleRefDD getSecurityRoleRef();

+

+}

diff --git a/src/java/org/apache/pluto/binding/ServletMappingDD.java b/src/java/org/apache/pluto/binding/ServletMappingDD.java
new file mode 100644
index 0000000..cd6d44b
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/ServletMappingDD.java
@@ -0,0 +1,34 @@
+/*

+ * 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;

+

+/**

+ * Servlet Mapping configuration as defined by the <code>web.xml</code>

+ * deployment descriptor.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 10:09:29 PM

+ */

+public interface ServletMappingDD {

+

+    /** Standard Getter. */

+    String getServletName();

+

+    /** Standard Getter. */

+    String getURLPattern();

+

+}

diff --git a/src/java/org/apache/pluto/binding/SupportedMimeTypeDD.java b/src/java/org/apache/pluto/binding/SupportedMimeTypeDD.java
new file mode 100644
index 0000000..2483ca3
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/SupportedMimeTypeDD.java
@@ -0,0 +1,32 @@
+/*

+ * Copyright 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;

+

+/**

+ * Supported Mime Type configuration as defined by the <code>web.xml</code>

+ * deployment descriptor.

+ *

+ * @author <a href="ddewolf@apache.org">David H. DeWolf</a>

+ * @version 1.0

+ * @since Sep 20, 2004

+ */

+public interface SupportedMimeTypeDD {

+

+    String getMimeType();

+

+    String[] getPortletModes();

+}

diff --git a/src/java/org/apache/pluto/binding/TaglibDD.java b/src/java/org/apache/pluto/binding/TaglibDD.java
new file mode 100644
index 0000000..e34d206
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/TaglibDD.java
@@ -0,0 +1,34 @@
+/*

+ * 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;

+

+/**

+ * Taglibrary definition as defined by the <code>web.xml</code>

+ * deployment descriptor.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 24, 2004 at 7:26:56 PM

+ */

+public interface TaglibDD {

+    String getTaglibUri();

+

+    String getTaglibLocation();

+

+    void setTaglibUri(String uri);

+

+    void setTaglibLocation(String location);

+}

diff --git a/src/java/org/apache/pluto/binding/WebAppDD.java b/src/java/org/apache/pluto/binding/WebAppDD.java
new file mode 100644
index 0000000..fdfc7f2
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/WebAppDD.java
@@ -0,0 +1,34 @@
+/*

+ * 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;

+

+/**

+ * Web Application configuration container as defined by the

+ * <code>web.xml</code> deployment descriptor.

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 10:04:17 PM

+ */

+public interface WebAppDD {

+

+    ServletDD[] getServlets();

+

+    ServletMappingDD[] getServletMappings();

+

+    TaglibDD[] getTaglibs();

+

+}

diff --git a/src/java/org/apache/pluto/binding/XMLBindingFactory.java b/src/java/org/apache/pluto/binding/XMLBindingFactory.java
new file mode 100644
index 0000000..da43976
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/XMLBindingFactory.java
@@ -0,0 +1,110 @@
+/*

+ * 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;

+

+import java.io.IOException;

+import java.io.InputStream;

+

+import org.apache.pluto.binding.impl.digester.DigesterXMLBindingFactory;

+

+/**

+ * <P>Factory used to read (and potentially) write deployment descriptors,

+ * specifically Portlet Application (<code>portlet.xml</code>) and Web

+ * application (<code>web.xml</code> descriptors.</P>

+ *

+ * <P>These bindingFactory functions have been abstracted from the container because

+ * of the frequency with which they are needed externally.  Tools such as the

+ * pluto deployer depend on the ability to read these descriptors but rarely

+ * need the remainder of the container during runtime.</P>

+ *

+ *

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Feb 23, 2004 at 8:02:50 PM

+ */

+public abstract class XMLBindingFactory {

+

+    /** Mode flag identifying the bindingFactory factory as read only. */

+    public static final int READ_ONLY = 0;

+

+    /** Mode flag identifying the bindingFactory factory as read/write. */

+    public static final int READ_WRITE = 1;

+

+    private static XMLBindingFactory bindingFactory;

+

+    /**

+     * Create an instance of the default <code>XMLBindingFactory</code>.

+     */

+    public static XMLBindingFactory createXMLBinding() {

+        return createXMLBinding(READ_ONLY);

+    }

+

+    /**

+     * Create an instance of the <code>XMLBindingFactory</code>

+     * which supports the given mode.

+     *

+     * @param mode

+     * @return an XMLBindingFactory instance which supports the given mode.

+     */

+    public static XMLBindingFactory createXMLBinding(int mode) {

+        if (bindingFactory == null) {

+            String clName = System.getProperty(XMLBindingFactory.class.getName());

+            if (clName != null) {

+                try {

+                    Class cl = Class.forName(clName);

+                    bindingFactory = (XMLBindingFactory) cl.newInstance();

+                } catch (Throwable t) {

+                    System.out.println("Unable to instantiate XMLBindingFactory [" +

+                                       clName + "] :" + t.getMessage());

+                    System.out.println("Using default XMLBindingFactory");

+                }

+            }

+            if (bindingFactory == null) {

+                bindingFactory = new DigesterXMLBindingFactory();

+            }

+        }

+        return bindingFactory;

+    }

+

+    /**

+     * Retrieve the mode this factory supports.

+     * @return

+     */

+    public abstract int getMode();

+

+    /**

+     * Retrieve the Web Application deployment descriptor

+     * (<code>web.xml</code>) read from the given <code>InputStream</code>

+     *

+     * @param in the <code>InputStream<code> from which the descriptor should be parsed.

+     * @return an object representation of the descriptor.

+     * @throws IOException if a read error occurs.

+     *

+     */

+    public abstract WebAppDD getWebAppDD(InputStream in)

+        throws IOException;

+

+    /**

+     * Retrieve the Portlet Application deployment descriptor

+     * (<code>portlet.xml</code>) read from the given <code>InputStream</code>

+     *

+     * @param in

+     * @return

+     * @throws IOException

+     */

+    public abstract PortletAppDD getPortletAppDD(InputStream in)

+        throws IOException;

+}

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterInitParameterDD.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterInitParameterDD.java
new file mode 100644
index 0000000..9ff7ad5
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterInitParameterDD.java
@@ -0,0 +1,54 @@
+/*

+ * 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 org.apache.pluto.binding.InitParameterDD;

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 11, 2004 at 9:22:27 AM

+ */

+public class DigesterInitParameterDD implements InitParameterDD {

+

+    private String parameterName;

+    private String parameterValue;

+    private String description;

+

+    public String getParameterName() {

+        return parameterName;

+    }

+

+    public void setParameterName(String parameterName) {

+        this.parameterName = parameterName;

+    }

+

+    public String getParameterValue() {

+        return parameterValue;

+    }

+

+    public void setParameterValue(String parameterValue) {

+        this.parameterValue = parameterValue;

+    }

+

+    public String getDescription() {

+        return description;

+    }

+

+    public void setDescription(String description) {

+        this.description = description;

+    }

+}

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletAppDD.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletAppDD.java
new file mode 100644
index 0000000..de76557
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletAppDD.java
@@ -0,0 +1,55 @@
+/*

+ * 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.util.ArrayList;

+

+import org.apache.pluto.binding.InitParameterDD;

+import org.apache.pluto.binding.PortletAppDD;

+import org.apache.pluto.binding.PortletDD;

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 10, 2004 at 5:15:34 PM

+ */

+public class DigesterPortletAppDD implements PortletAppDD {

+

+    private ArrayList portlets;

+    private ArrayList params;

+

+    public DigesterPortletAppDD() {

+        portlets = new ArrayList();

+        params = new ArrayList();

+    }

+

+    public PortletDD[] getPortlets() {

+        return (PortletDD[]) portlets.toArray(new PortletDD[portlets.size()]);

+    }

+

+    public void addPortlet(PortletDD dd) {

+        portlets.add(dd);

+    }

+

+    public InitParameterDD[] getInitParameters() {

+        return (InitParameterDD[]) params.toArray(

+            new InitParameterDD[params.size()]);

+    }

+

+    public void addInitParameter(InitParameterDD dd) {

+        params.add(dd);

+    }

+}

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletDD.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletDD.java
new file mode 100644
index 0000000..1c76ce6
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletDD.java
@@ -0,0 +1,169 @@
+/*

+ * 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.util.ArrayList;

+

+import org.apache.pluto.binding.InitParameterDD;

+import org.apache.pluto.binding.PortletDD;

+import org.apache.pluto.binding.PortletInfoDD;

+import org.apache.pluto.binding.PortletPreferenceDD;

+import org.apache.pluto.binding.SecurityRoleRefDD;

+import org.apache.pluto.binding.SupportedMimeTypeDD;

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 10, 2004 at 5:21:11 PM

+ */

+public class DigesterPortletDD implements PortletDD {

+

+    private String description;

+    private String portletName;

+    private String displayName;

+    private String portletClass;

+

+    private PortletInfoDD portletInfo;

+    private ArrayList portletPreferences;

+

+    private int expirationCache;

+    private String preferencesValidator;

+    private String resourceBundle;

+

+    private ArrayList initParameters;

+    private ArrayList mimeTypeSupport;

+    private ArrayList localeSupport;

+    private ArrayList securityRoleRef;

+

+

+    public DigesterPortletDD() {

+        this.portletPreferences = new ArrayList();

+        this.initParameters = new ArrayList();

+        this.mimeTypeSupport = new ArrayList();

+        this.localeSupport = new ArrayList();

+        this.securityRoleRef = new ArrayList();

+    }

+

+    public String getDescription() {

+        return description;

+    }

+

+    public void setDescription(String description) {

+        this.description = description;

+    }

+

+    public String getPortletName() {

+        return portletName;

+    }

+

+    public void setPortletName(String portletName) {

+        this.portletName = portletName;

+    }

+

+    public String getDisplayName() {

+        return displayName;

+    }

+

+    public void setDisplayName(String displayName) {

+        this.displayName = displayName;

+    }

+

+    public String getPortletClass() {

+        return portletClass;

+    }

+

+    public void setPortletClass(String portletClass) {

+        this.portletClass = portletClass;

+    }

+

+    public InitParameterDD[] getInitParameters() {

+        return (InitParameterDD[]) initParameters.toArray(

+            new InitParameterDD[initParameters.size()]);

+    }

+

+    public void addInitParameter(InitParameterDD initParameter) {

+        this.initParameters.add(initParameter);

+    }

+

+    public int getExpirationCache() {

+        return expirationCache;

+    }

+

+    public void setExpirationCache(int cache) {

+        this.expirationCache = cache;

+    }

+

+    public SupportedMimeTypeDD[] getSupportedMimeTypes() {

+        return (SupportedMimeTypeDD[]) mimeTypeSupport

+            .toArray(new SupportedMimeTypeDD[mimeTypeSupport.size()]);

+    }

+

+    public void addSupportedMimeType(SupportedMimeTypeDD mimeType) {

+        this.mimeTypeSupport.add(mimeType);

+    }

+

+    public String[] getSupportedLocales() {

+        return (String[]) localeSupport

+            .toArray(new String[localeSupport.size()]);

+    }

+

+    public void addSupportedLocale(String locale) {

+        this.localeSupport.add(locale);

+    }

+

+    public PortletInfoDD getPortletInfo() {

+        return portletInfo;

+    }

+

+    public void setPortletInfo(PortletInfoDD dd) {

+        this.portletInfo = dd;

+    }

+

+    public PortletPreferenceDD[] getPortletPreferences() {

+        return (PortletPreferenceDD[]) portletPreferences

+            .toArray(new PortletPreferenceDD[portletPreferences.size()]);

+    }

+

+    public void addPortletPreference(PortletPreferenceDD dd) {

+        this.portletPreferences.add(dd);

+    }

+

+    public String getPreferenceValidator() {

+        return this.preferencesValidator;

+    }

+

+    public void setPreferenceValidator(String val) {

+        this.preferencesValidator = val;

+    }

+

+    public void addSecurityRoleRef(SecurityRoleRefDD dd) {

+        this.securityRoleRef.add(dd);

+    }

+

+    public SecurityRoleRefDD[] getSecurityRoleRefs() {

+        return (SecurityRoleRefDD[]) securityRoleRef.toArray(

+            new SecurityRoleRefDD[securityRoleRef.size()]);

+    }

+

+    public String getResourceBundle() {

+        return resourceBundle;

+    }

+

+    public void setResourceBundle(String resourceBundle) {

+        this.resourceBundle = resourceBundle;

+    }

+}

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletInfoDD.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletInfoDD.java
new file mode 100644
index 0000000..8822af0
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletInfoDD.java
@@ -0,0 +1,55 @@
+/*

+ * 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 org.apache.pluto.binding.PortletInfoDD;

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 11, 2004 at 4:34:11 PM

+ */

+public class DigesterPortletInfoDD implements PortletInfoDD {

+

+    private String title;

+    private String shortTitle;

+    private String keywords;

+

+    public String getTitle() {

+        return title;

+    }

+

+    public void setTitle(String title) {

+        this.title = title;

+    }

+

+    public String getShortTitle() {

+        return shortTitle;

+    }

+

+    public void setShortTitle(String shortTitle) {

+        this.shortTitle = shortTitle;

+    }

+

+    public String getKeywords() {

+        return keywords;

+    }

+

+    public void setKeywords(String keywords) {

+        this.keywords = keywords;

+    }

+}

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletPreferenceDD.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletPreferenceDD.java
new file mode 100644
index 0000000..80206dc
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterPortletPreferenceDD.java
@@ -0,0 +1,57 @@
+/*

+ * 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 org.apache.pluto.binding.PortletPreferenceDD;

+

+/**

+ * @author <A href="mailto:ddewolf@apache.org">David H. DeWolf</A>

+ * @version 1.0

+ * @since Mar 11, 2004 at 4:38:36 PM

+ */

+public class DigesterPortletPreferenceDD implements PortletPreferenceDD {

+

+    private String name;

+    private String value;

+    private boolean isReadOnly;

+

+

+    public String getName() {

+        return name;

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+    public String getValue() {

+        return value;

+    }

+

+    public void setValue(String value) {

+        this.value = value;

+    }

+

+    public boolean isReadOnly() {

+        return isReadOnly;

+    }

+

+    public void setReadOnly(boolean readOnly) {

+        isReadOnly = readOnly;

+    }

+

+}

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterSupportedMimeTypeDD.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterSupportedMimeTypeDD.java
new file mode 100644
index 0000000..ec51bc0
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterSupportedMimeTypeDD.java
@@ -0,0 +1,52 @@
+/*

+ * Copyright 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.util.ArrayList;

+

+import org.apache.pluto.binding.SupportedMimeTypeDD;

+

+/**

+ * @author <a href="ddewolf@apache.org">David H. DeWolf</a>

+ * @version 1.0

+ * @since Sep 20, 2004

+ */

+public class DigesterSupportedMimeTypeDD implements SupportedMimeTypeDD {

+

+    private String mimeType;

+    private ArrayList portletModes;

+

+    public DigesterSupportedMimeTypeDD() {

+        portletModes = new ArrayList();

+    }

+

+    public String getMimeType() {

+        return mimeType;

+    }

+

+    public void setMimeType(String mimeType) {

+        this.mimeType = mimeType;

+    }

+

+    public String[] getPortletModes() {

+        return (String[]) portletModes.toArray(new String[portletModes.size()]);

+    }

+

+    public void addPortletMode(String portletModes) {

+        this.portletModes.add(portletModes);

+    }

+}

+

diff --git a/src/java/org/apache/pluto/binding/impl/digester/DigesterXMLBindingFactory.java b/src/java/org/apache/pluto/binding/impl/digester/DigesterXMLBindingFactory.java
new file mode 100644
index 0000000..25e1a50
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/impl/digester/DigesterXMLBindingFactory.java
@@ -0,0 +1,151 @@
+/*

+ * 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");

+    }

+}

diff --git a/src/java/org/apache/pluto/binding/package.html b/src/java/org/apache/pluto/binding/package.html
new file mode 100644
index 0000000..e826f36
--- /dev/null
+++ b/src/java/org/apache/pluto/binding/package.html
@@ -0,0 +1,5 @@
+<HTML>

+<BODY>

+Abstraction of the object model representing common

+deployment descriptors used by Pluto.  

+</BODY>
\ No newline at end of file