You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2008/07/19 02:23:57 UTC
svn commit: r678082 - in
/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed:
attribute/ security/
Author: ate
Date: Fri Jul 18 17:23:57 2008
New Revision: 678082
URL: http://svn.apache.org/viewvc?rev=678082&view=rev
Log:
first draft proposal for a new "GenericAttributes" model which might be feasible to use for Security entity (Role/Group/User) attributes.
As an example, I've also added a new JetspeedPrincipal interface which could be used as base interface for our current Role,Group and User interfaces (when we drop their Preferences access).
Please note: the GenericAttributes model is far for complete or anywhere definitive, just the outcome of a quick and dirty braindump of what I could think of as possible solution...
Added:
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java (with props)
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java (with props)
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java (with props)
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java (with props)
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java (with props)
portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java (with props)
Added: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java?rev=678082&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java (added)
+++ portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java Fri Jul 18 17:23:57 2008
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.attribute;
+
+/**
+ * @version $Id$
+ *
+ */
+public interface GenericAttribute extends GenericAttributeType
+{
+ boolean isNew();
+ Object getValue();
+ String getStringValue();
+ Boolean getBooleanValue();
+ Long getLongValue();
+ void setValue(Object value) throws GenericAttributeException;
+ void setValues(Object[] values) throws GenericAttributeException;
+ void setStringValue(String value) throws GenericAttributeException;
+ void setStringValues(String[] value) throws GenericAttributeException;
+ void setBooleanValue(Boolean value) throws GenericAttributeException;
+ void setBooleanValues(Boolean[] value) throws GenericAttributeException;
+ void setBinaryValue(byte[] value) throws GenericAttributeException;
+ void setBinaryValues(byte[][] values) throws GenericAttributeException;
+}
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttribute.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java?rev=678082&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java (added)
+++ portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java Fri Jul 18 17:23:57 2008
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.attribute;
+
+import org.apache.jetspeed.exception.JetspeedException;
+import org.apache.jetspeed.i18n.KeyedMessage;
+
+/**
+ * @version $Id$
+ *
+ */
+public class GenericAttributeException extends JetspeedException
+{
+ public GenericAttributeException(KeyedMessage typedMessage)
+ {
+ super(typedMessage);
+ }
+
+ public GenericAttributeException(KeyedMessage keyedMessage, Throwable nested)
+ {
+ super(keyedMessage, nested);
+ }
+}
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java?rev=678082&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java (added)
+++ portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java Fri Jul 18 17:23:57 2008
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.attribute;
+
+import org.apache.jetspeed.exception.JetspeedRuntimeException;
+import org.apache.jetspeed.i18n.KeyedMessage;
+
+/**
+ * @version $Id$
+ *
+ */
+public class GenericAttributeRuntimeException extends JetspeedRuntimeException
+{
+ public static final KeyedMessage ATTRIBUTE_UNSUPPORTED = new KeyedMessage("Attribute {0} is not supported for a {1}.");
+
+ public GenericAttributeRuntimeException(KeyedMessage typedMessage)
+ {
+ super(typedMessage);
+ }
+ public GenericAttributeRuntimeException(KeyedMessage keyedMessage, Throwable nested)
+ {
+ super(keyedMessage, nested);
+ }
+}
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeRuntimeException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java?rev=678082&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java (added)
+++ portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java Fri Jul 18 17:23:57 2008
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.attribute;
+
+/**
+ * @version $Id$
+ *
+ */
+public interface GenericAttributeType
+{
+ int MAX_UNDEFINED = 0;
+
+ enum TYPE { STRING, BOOLEAN, LONG, BINARY, OBJECT };
+
+ String getName();
+
+ TYPE getType();
+
+ boolean isReadOnly();
+
+ boolean isRequired();
+
+ int maxValueLength();
+
+ int maxValues();
+}
\ No newline at end of file
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributeType.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java?rev=678082&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java (added)
+++ portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java Fri Jul 18 17:23:57 2008
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.attribute;
+
+import java.util.Set;
+
+/**
+ * {@link GenericAttribute} container
+ * <p>
+ * Generic Attributes can be leveraged to store value(s) for a fixed set of predefined attribute names.
+ * </p>
+ * <p>
+ * The whole set of provided attributes can be readonly, or individual attributes can be readonly.<br/>
+ * When the whole set is readonly, all similar sets (e.g. with the same {@#getType} will be readonly.
+ * </p>
+ * <p>
+ * The {@link #getAttribute(), current} set of attributes can contain a subset of all the {@link #getSupportedNames() supported}
+ * attributes.
+ * </p>
+ * Trying to access an unsupported attribute through {@link #getAttribute(String)} will throw a {@link GenericAttributeRuntimeException}
+ * of type {@link GenericAttributeRuntimeException#ATTRIBUTE_UNSUPPORTED}.
+ * @version $Id$
+ *
+ */
+public interface GenericAttributes
+{
+ String getType();
+ int size();
+ boolean isEmpty();
+ boolean isReadOnly();
+ Set<String> getNames();
+ Set<String> getSupportedNames();
+ Set<GenericAttribute> getAttributes();
+ GenericAttribute getAttribute(String name) throws GenericAttributeRuntimeException;
+}
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/attribute/GenericAttributes.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java?rev=678082&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java (added)
+++ portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java Fri Jul 18 17:23:57 2008
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.security;
+
+import java.security.Principal;
+
+import org.apache.jetspeed.attribute.GenericAttributes;
+
+/**
+ * Base interface for User/Group/Role security entities providing access to the GenericAttributes for a Principal
+ * @version $Id$
+ *
+ */
+public interface JetspeedPrincipal
+{
+ /**
+ * <p>Getter for the {@link Principal}.</p>
+ * @return The {@link Principal}.
+ */
+ Principal getPrincipal();
+
+ /**
+ * <p>Setter for the {@link Principal}.</p>
+ * @param principal The {@link Principal}.
+ */
+ void setPrincipal(Principal principal);
+
+ GenericAttributes getAttribute();
+}
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/portal/branches/JS2-869/jetspeed-api/src/main/java/org/apache/jetspeed/security/JetspeedPrincipal.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org