| package org.eclipse.jst.jsf.designtime.internal.view.model.jsp; |
| |
| import java.io.IOException; |
| import java.io.Serializable; |
| |
| import org.eclipse.jst.jsf.common.runtime.internal.view.model.common.AbstractTagAttribute; |
| import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDAttributeDeclaration; |
| |
| /** |
| * Adapts a TLDAttributeDeclaration to the ITagAttribute interface. |
| * |
| * @author cbateman |
| * |
| */ |
| public class TLDTagAttribute extends AbstractTagAttribute |
| { |
| |
| /** |
| * |
| */ |
| private static final long serialVersionUID = 4327701042556836452L; |
| |
| private final TLDAttributeData _tldData; |
| |
| /** |
| * @param decl |
| */ |
| public TLDTagAttribute(final TLDAttributeDeclaration decl) |
| { |
| _tldData = new DocumentAttributeData(decl); |
| } |
| |
| @Override |
| public String getName() |
| { |
| return _tldData.getName(); |
| } |
| |
| @Override |
| public String getDisplayName() |
| { |
| return _tldData.getDisplayName(); |
| } |
| |
| @Override |
| public String getDescription() { |
| return _tldData.getDescription(); |
| } |
| |
| @Override |
| public String getTargetNamespace() |
| { |
| return _tldData.getTargetNamespace(); |
| } |
| |
| public boolean isRequired() |
| { |
| return _tldData.isRequired(); |
| } |
| |
| /** |
| * Diagnostic only. For testing only. Should never be exposed on ITagAttribute. |
| * |
| * @return true if this instance wraps a SerializedTLDAttributeData (the |
| * instance was created by readObject). False if it is wrapping a |
| * TLDAttributeDeclaration. |
| */ |
| public boolean hasBeenDeserialized() |
| { |
| return _tldData instanceof SerializedTLDAttributeData; |
| } |
| @Override |
| public String toString() |
| { |
| return String.format("Attribute: name=%s, displayName=%s, description=%s\n" //$NON-NLS-1$ |
| , getName(), getDisplayName(), getDescription()); |
| } |
| |
| private static class DocumentAttributeData extends TLDAttributeData |
| { |
| /** |
| * |
| */ |
| private static final long serialVersionUID = -5974753636507938515L; |
| private final TLDAttributeDeclaration _decl; |
| |
| |
| public DocumentAttributeData(TLDAttributeDeclaration decl) |
| { |
| super(); |
| _decl = decl; |
| } |
| |
| private Object writeReplace() |
| { |
| return new SerializedTLDAttributeData(getName(), getDisplayName(), getDescription() |
| , getTargetNamespace(), isRequired()); |
| } |
| |
| @SuppressWarnings("unused") |
| private void readObject(java.io.ObjectInputStream in) |
| throws IOException, ClassNotFoundException |
| { |
| throw new UnsupportedOperationException("This object should be serialized; writeReplace"); //$NON-NLS-1$ |
| } |
| |
| @Override |
| public String getName() |
| { |
| return _decl.getAttrName(); |
| } |
| |
| @Override |
| public String getTargetNamespace() |
| { |
| return null; |
| } |
| |
| @Override |
| public String getDescription() |
| { |
| return _decl.getDescription(); |
| } |
| |
| @Override |
| public String getDisplayName() |
| { |
| return _decl.getAttrName(); |
| } |
| |
| @Override |
| public boolean isRequired() |
| { |
| return _decl.isRequired(); |
| } |
| |
| } |
| |
| /** |
| * @author cbateman |
| * |
| */ |
| private static class SerializedTLDAttributeData extends TLDAttributeData |
| { |
| /** |
| * |
| */ |
| private static final long serialVersionUID = -1094006883222087189L; |
| |
| private final String _name; |
| private final String _displayName; |
| private final String _description; |
| private final String _targetNamespace; |
| private final boolean _isRequired; |
| |
| |
| |
| public SerializedTLDAttributeData(String name, String displayName, |
| String description, String targetNamespace, boolean isRequired) |
| { |
| super(); |
| _name = name; |
| _displayName = displayName; |
| _description = description; |
| _targetNamespace = targetNamespace; |
| _isRequired = isRequired; |
| } |
| |
| @Override |
| public String getName() |
| { |
| return _name; |
| } |
| |
| @Override |
| public String getDisplayName() |
| { |
| return _displayName; |
| } |
| |
| @Override |
| public String getDescription() |
| { |
| return _description; |
| } |
| |
| @Override |
| public String getTargetNamespace() |
| { |
| return _targetNamespace; |
| } |
| |
| @Override |
| public boolean isRequired() |
| { |
| return _isRequired; |
| } |
| |
| } |
| |
| private static abstract class TLDAttributeData implements Serializable |
| { |
| /** |
| * |
| */ |
| private static final long serialVersionUID = 8376571212994363562L; |
| public abstract String getName(); |
| public abstract String getDisplayName(); |
| public abstract String getDescription(); |
| public abstract String getTargetNamespace(); |
| public abstract boolean isRequired(); |
| } |
| } |