Seam SVN: r11214 - in branches/community/Seam_2_2: examples and 4 other directories.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-06-25 16:25:20 -0400 (Thu, 25 Jun 2009)
New Revision: 11214
Added:
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/AppleJuice.java
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/OrangeJuice.java
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/JuiceTestBar.java
Removed:
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceImpl.java
Modified:
branches/community/Seam_2_2/doc/Seam_Reference_Guide/en-US/Guice.xml
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBar.java
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBarModule.java
branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/GuiceTest.java
branches/community/Seam_2_2/examples/guice/view/bar.xhtml
branches/community/Seam_2_2/examples/readme.txt
branches/community/Seam_2_2/src/ioc/org/jboss/seam/ioc/guice/GuiceInterceptor.java
Log:
JBSEAM-4245 - disinjection in the Guice interceptor
Thanks to Pawel Wrzeszcz
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/en-US/Guice.xml
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/en-US/Guice.xml 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/en-US/Guice.xml 2009-06-25 20:25:20 UTC (rev 11214)
@@ -10,7 +10,7 @@
resolution. The Guice integration (part of the Seam IoC module) allows use of Guice injection
for all Seam components annotated with the <literal>@Guice</literal> annotation. In addition
to the regular bijection that Seam performs (which becomes optional), Seam also delegates
- to known Guice injectors to satisify the dependencies of the component. Guice may be useful to
+ to known Guice injectors to satisfy the dependencies of the component. Guice may be useful to
tie non-Seam parts of large or legacy applications together with Seam.
</para>
@@ -40,7 +40,7 @@
<para>
This Guice injection will happen on every method call, just like with bijection. Guice
- injects based on type and binding. To satisify the dependencies in the previous example,
+ injects based on type and binding. To satisfy the dependencies in the previous example,
you might have bound the following implementations in a Guice module, where
<literal>@Special</literal> is an annotation you define in your application.
</para>
@@ -70,7 +70,7 @@
<para>
You tell Seam which Guice injector to use by hooking it into the injection property
- of the Guice initization component in the Seam component descriptor (components.xml):
+ of the Guice initialization component in the Seam component descriptor (components.xml):
</para>
<programlisting role="XML"><![CDATA[<components xmlns="http://jboss.com/products/seam/components"
Added: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/AppleJuice.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/AppleJuice.java (rev 0)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/AppleJuice.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -0,0 +1,28 @@
+package org.jboss.seam.example.guice;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+public class AppleJuice implements Juice
+{
+ private static final String name = "Apple Juice";
+ private static final int price = 10;
+
+ public AppleJuice() {}
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public int getPrice()
+ {
+ return price;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+}
\ No newline at end of file
Modified: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBar.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBar.java 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBar.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -11,8 +11,8 @@
@Guice // Activates @Inject on a Seam component
public class JuiceBar
{
- @Inject private Juice juiceOfTheDay; // Guice looks at the variable type, not name
- @Inject @Orange private Juice anotherJuice;
+ @Inject protected Juice juiceOfTheDay; // Guice looks at the variable type, not name
+ @Inject @Orange protected Juice anotherJuice;
public Juice getJuiceOfTheDay()
{
Modified: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBarModule.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBarModule.java 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceBarModule.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -2,6 +2,7 @@
import com.google.inject.Module;
import com.google.inject.Binder;
+import com.google.inject.Scopes;
/**
* @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
@@ -10,7 +11,8 @@
{
public void configure(Binder binder)
{
- binder.bind(Juice.class).toInstance(new JuiceImpl("Apple Juice", 10));
- binder.bind(Juice.class).annotatedWith(Orange.class).toInstance(new JuiceImpl("Orange Juice", 12));
+ binder.bind(Juice.class).to(AppleJuice.class); // Create a new instance every time.
+
+ binder.bind(Juice.class).annotatedWith(Orange.class).to(OrangeJuice.class).in(Scopes.SINGLETON);
}
}
Deleted: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceImpl.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceImpl.java 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/JuiceImpl.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -1,32 +0,0 @@
-package org.jboss.seam.example.guice;
-
-/**
- * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
- */
-public class JuiceImpl implements Juice
-{
- private String name;
- private int price;
-
- public JuiceImpl(String name, int price)
- {
- this.name = name;
- this.price = price;
- }
-
- public String getName()
- {
- return name;
- }
-
- public int getPrice()
- {
- return price;
- }
-
- @Override
- public String toString()
- {
- return name + " (" + price + " cents)";
- }
-}
Added: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/OrangeJuice.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/OrangeJuice.java (rev 0)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/OrangeJuice.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -0,0 +1,28 @@
+package org.jboss.seam.example.guice;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+public class OrangeJuice implements Juice
+{
+ private static final String name = "Orange Juice";
+ private static final int price = 12;
+
+ public OrangeJuice() {}
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public int getPrice()
+ {
+ return price;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name + " (" + price + " cents)";
+ }
+}
Modified: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/GuiceTest.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/GuiceTest.java 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/GuiceTest.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -1,33 +1,83 @@
package org.jboss.seam.example.guice.test;
import org.jboss.seam.example.guice.JuiceBar;
+import org.jboss.seam.example.guice.Juice;
+import org.jboss.seam.example.guice.AppleJuice;
+import org.jboss.seam.example.guice.Orange;
+import org.jboss.seam.example.guice.OrangeJuice;
import org.jboss.seam.mock.SeamTest;
-import org.jboss.seam.ioc.guice.Injector;
import org.testng.annotations.Test;
-import java.util.Arrays;
+import com.google.inject.Injector;
+import com.google.inject.Key;
/**
* @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
*/
public class GuiceTest extends SeamTest
{
- private static final String[] expectedModules = { "org.jboss.seam.example.guice.JuiceBarModule" };
+ @Test
+ public void testGuiceInjector() throws Exception
+ {
+ new ComponentTest()
+ {
+ @Override
+ protected void testComponents() throws Exception
+ {
+ Injector injector = (Injector) getInstance("guiceExampleInjector");
+ Object juiceInstance = injector.getInstance(Juice.class);
+ assert juiceInstance instanceof AppleJuice : juiceInstance;
+
+ Object orangeInstance = injector.getInstance(Key.get(Juice.class, Orange.class));
+ assert orangeInstance instanceof OrangeJuice : orangeInstance;
+ }
+ }.run();
+ }
+
@Test
- public void testGuice()
+ public void testGuiceIntegration() throws Exception
{
new ComponentTest()
{
+ @Override
protected void testComponents() throws Exception
{
- Injector injector = (Injector) getValue("guiceExampleInjector");
- assert Arrays.equals(expectedModules, injector.getModules());
+ JuiceBar juiceBar = (JuiceBar) getInstance("juiceBar");
- JuiceBar juiceBar = (JuiceBar) getValue("juiceBar");
- assert "Apple Juice".equals(juiceBar.getJuiceOfTheDay().getName());
- assert "Orange Juice".equals(juiceBar.getAnotherJuice().getName());
+ Juice juiceOfTheDay = juiceBar.getJuiceOfTheDay();
+ assert "Apple Juice".equals(juiceOfTheDay.getName()) : juiceOfTheDay.getName();
+ Juice anotherJuice = juiceBar.getAnotherJuice();
+ assert "Orange Juice".equals(anotherJuice.getName()) : anotherJuice.getName();
+
+ Juice juiceOfTheDay2 = juiceBar.getJuiceOfTheDay();
+ assert juiceOfTheDay != juiceOfTheDay2 : "A new instance should be created by Guice.";
+ Juice anotherJuice2 = juiceBar.getAnotherJuice();
+ assert anotherJuice == anotherJuice2 : "Different instances returned for the singleton object.";
}
- };
+ }.run();
}
+
+ @Test
+ public void testGuiceDisinjection() throws Exception
+ {
+ new ComponentTest()
+ {
+ @Override
+ protected void testComponents() throws Exception
+ {
+ JuiceTestBar juiceBar = (JuiceTestBar) getInstance("juiceTestBar");
+ juiceBar.getJuiceOfTheDay(); // Call a method to trigger Guice injection
+
+ assert juiceBar.getJuiceOfTheDay() != null;
+ assert juiceBar.getAnotherJuice() != null;
+
+ // Reflection to obtain the field value would not work here due to the proxy
+ assert juiceBar.getJuiceOfTheDayBypassInterceptors() == null
+ : "Value injected by Guice was not cleared after the call";
+ assert juiceBar.getAnotherJuiceBypassInterceptors() == null
+ : "Value injected by Guice was not cleared after the call";
+ }
+ }.run();
+ }
}
Added: branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/JuiceTestBar.java
===================================================================
--- branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/JuiceTestBar.java (rev 0)
+++ branches/community/Seam_2_2/examples/guice/src/org/jboss/seam/example/guice/test/JuiceTestBar.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -0,0 +1,29 @@
+package org.jboss.seam.example.guice.test;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+import org.jboss.seam.example.guice.JuiceBar;
+import org.jboss.seam.example.guice.Juice;
+import org.jboss.seam.ioc.guice.Guice;
+
+/**
+ * A component used by the disinjection test to obtain the values of the fields after the proxied call.
+ *
+ * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] gmail . com)
+ */
+@Name("juiceTestBar")
+@Guice
+public class JuiceTestBar extends JuiceBar
+{
+ @BypassInterceptors
+ public Juice getJuiceOfTheDayBypassInterceptors()
+ {
+ return juiceOfTheDay;
+ }
+
+ @BypassInterceptors
+ public Juice getAnotherJuiceBypassInterceptors()
+ {
+ return anotherJuice;
+ }
+}
Modified: branches/community/Seam_2_2/examples/guice/view/bar.xhtml
===================================================================
--- branches/community/Seam_2_2/examples/guice/view/bar.xhtml 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/examples/guice/view/bar.xhtml 2009-06-25 20:25:20 UTC (rev 11214)
@@ -17,6 +17,7 @@
</ul>
<p><em>* Juice of the day</em></p>
</div>
+ <p><small>This page is intentionally static (no form action).</small></p>
</h:form>
</body>
</html>
Modified: branches/community/Seam_2_2/examples/readme.txt
===================================================================
--- branches/community/Seam_2_2/examples/readme.txt 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/examples/readme.txt 2009-06-25 20:25:20 UTC (rev 11214)
@@ -30,6 +30,8 @@
groovybooking/ The Seam Booking demo ported to Groovy.
+guice/ An example demonstrating the use of Google Guice with Seam.
+
hibernate/ The Seam Booking demo ported to Hibernate3.
icefaces/ The Seam Booking demo with ICEfaces, instead of
@@ -109,7 +111,7 @@
1. Download and unzip JBoss AS 4.2.3.GA from:
- http://labs.jboss.com/jbossas/downloads
+ http://jboss.org/jbossas/downloads
2. Make sure you have an up to date version of Seam:
Modified: branches/community/Seam_2_2/src/ioc/org/jboss/seam/ioc/guice/GuiceInterceptor.java
===================================================================
--- branches/community/Seam_2_2/src/ioc/org/jboss/seam/ioc/guice/GuiceInterceptor.java 2009-06-25 16:11:02 UTC (rev 11213)
+++ branches/community/Seam_2_2/src/ioc/org/jboss/seam/ioc/guice/GuiceInterceptor.java 2009-06-25 20:25:20 UTC (rev 11214)
@@ -1,15 +1,25 @@
package org.jboss.seam.ioc.guice;
import org.jboss.seam.Component;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.util.Reflections;
+import org.jboss.seam.util.Strings;
import org.jboss.seam.annotations.intercept.AroundInvoke;
import org.jboss.seam.annotations.intercept.Interceptor;
import org.jboss.seam.core.Expressions;
import org.jboss.seam.intercept.InvocationContext;
+import org.jboss.seam.intercept.AbstractInterceptor;
import org.jboss.seam.log.Log;
import org.jboss.seam.log.Logging;
import com.google.inject.Injector;
+import com.google.inject.Inject;
+import java.lang.reflect.Field;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Triggers Guice injection on a Seam component.
*
@@ -17,33 +27,57 @@
* @author Tomasz Szymanski (tszymanski [at] jboss.org)
*/
@Interceptor
-public class GuiceInterceptor
+public class GuiceInterceptor extends AbstractInterceptor
{
private static final Log log = Logging.getLog(GuiceInterceptor.class);
private static final long serialVersionUID = -6716553117162905303L;
+ private static final String GUICE_COMPONENT_FIELDS_MAP = "org.jboss.seam.GuiceComponentFieldsMap";
+
private transient Injector defaultInjector = null;
@AroundInvoke
public Object aroundInvoke(InvocationContext invocationContext) throws Exception
{
- final Injector injector = getInjectorForClass(invocationContext.getMethod().getDeclaringClass());
+ inject(invocationContext.getTarget());
+ Object result = invocationContext.proceed();
+
+ disinject(invocationContext.getTarget());
+
+ return result;
+ }
+
+ private void inject(Object target)
+ {
if (log.isTraceEnabled())
{
- log.trace("Injecting members of: #0", invocationContext.getTarget().getClass().getName());
+ log.trace("Injecting members of component '#0'", getComponent().getName());
}
- injector.injectMembers(invocationContext.getTarget());
+ getGuiceInjector().injectMembers(target);
+ }
- return invocationContext.proceed();
+ private void disinject(Object target) throws Exception
+ {
+ for (Field guiceField : getGuiceAnnotatedFields())
+ {
+ if (!guiceField.isAccessible())
+ {
+ guiceField.setAccessible(true);
+ }
+ Reflections.set(guiceField, target, null);
+ }
}
- private Injector getInjectorForClass(final Class<?> declaringClass)
+ /**
+ * @return a Guice injector for the current component
+ */
+ private Injector getGuiceInjector()
{
final String expr;
- Guice guice = declaringClass.getAnnotation(Guice.class);
+ Guice guice = getComponent().getBeanClass().getAnnotation(Guice.class);
if (guice != null) {
expr = guice.value();
}
@@ -52,8 +86,8 @@
}
// Optimize lookups for default injector
- return (expr != null && expr.length() > 0)
- ? getInjectorByName(expr) : getCachedDefaultInjector();
+ return Strings.isEmpty(expr)
+ ? getCachedDefaultInjector() : getInjectorByName(expr);
}
private Injector getCachedDefaultInjector()
@@ -76,7 +110,7 @@
return defaultInjector;
}
- public static Injector getInjectorByName(final String expr)
+ private static Injector getInjectorByName(final String expr)
{
Object result;
@@ -96,4 +130,37 @@
return (Injector) result;
}
+
+ /**
+ * @return a collection of all component fields injected by Guice (annotated with the @Inject annotation)
+ */
+ private Collection<Field> getGuiceAnnotatedFields()
+ {
+ final Map<Class,Collection<Field>> fieldsMap = getGuiceComponentFieldsMap();
+ Collection<Field> annotatedFields = fieldsMap.get(getComponent().getBeanClass());
+ if (annotatedFields == null)
+ {
+ annotatedFields = Reflections.getFields(getComponent().getBeanClass(), Inject.class);
+ fieldsMap.put(getComponent().getBeanClass(), annotatedFields);
+ }
+ return annotatedFields;
+ }
+
+ /**
+ * @return a cache that stores fields annotated with the @Inject annotation for the Guice component classes
+ */
+ @SuppressWarnings("unchecked")
+ private Map<Class,Collection<Field>> getGuiceComponentFieldsMap()
+ {
+ if (Contexts.getApplicationContext().get(GUICE_COMPONENT_FIELDS_MAP) == null)
+ {
+ Contexts.getApplicationContext().set(GUICE_COMPONENT_FIELDS_MAP, new HashMap<Class, Collection<Field>>());
+ }
+ return (Map<Class, Collection<Field>>) Contexts.getApplicationContext().get(GUICE_COMPONENT_FIELDS_MAP);
+ }
+
+ public boolean isInterceptorEnabled()
+ {
+ return true;
+ }
}
15 years, 6 months
Seam SVN: r11213 - branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT.
by seam-commits@lists.jboss.org
Author: nico.ben
Date: 2009-06-25 12:11:02 -0400 (Thu, 25 Jun 2009)
New Revision: 11213
Modified:
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Controls.po
Log:
Italian translation
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Controls.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Controls.po 2009-06-25 15:12:48 UTC (rev 11212)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Controls.po 2009-06-25 16:11:02 UTC (rev 11213)
@@ -447,7 +447,7 @@
#: Controls.xml:305
#, no-c-format
msgid "The converter works with any managed entity - either simple or composite. The converter should be able to find the items declared in the JSF controls on form submission, otherwise you will receive a validation error."
-msgstr "Il converter funziona con qualsiasi entity gestita - sia semplice che composta. Il converter deve essere in grado di trovare gli item dichirati nei controlli JSF durante la sottomissione della form, altrimenti si riceverà un errore di validazione."
+msgstr "Il converter funziona con qualsiasi entity gestita - sia semplice che composta. Il converter deve essere in grado di trovare gli item dichiarati nei controlli JSF durante la sottomissione della form, altrimenti si riceverà un errore di validazione."
#. Tag: emphasis
#: Controls.xml:315
15 years, 6 months
Seam SVN: r11211 - branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT.
by seam-commits@lists.jboss.org
Author: nico.ben
Date: 2009-06-25 11:06:46 -0400 (Thu, 25 Jun 2009)
New Revision: 11211
Modified:
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Dependencies.po
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Gettingstarted.po
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/I18n.po
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Security.po
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Websphere.po
Log:
Italian translation
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Dependencies.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Dependencies.po 2009-06-25 15:01:40 UTC (rev 11210)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Dependencies.po 2009-06-25 15:06:46 UTC (rev 11211)
@@ -5,8 +5,8 @@
msgstr ""
"Project-Id-Version: JBoss Seam - Italian Version\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2009-06-11 18:45+0000\n"
-"PO-Revision-Date: 2009-06-11 22:35+0100\n"
+"POT-Creation-Date: 2009-06-25 15:02+0000\n"
+"PO-Revision-Date: 2009-06-25 17:05+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none <nico.benaz(a)gmail.com>\n"
"MIME-Version: 1.0\n"
@@ -83,10 +83,10 @@
#: Dependencies.xml:586
#: Dependencies.xml:652
#: Dependencies.xml:813
-#: Dependencies.xml:940
-#: Dependencies.xml:996
-#: Dependencies.xml:1051
-#: Dependencies.xml:1106
+#: Dependencies.xml:985
+#: Dependencies.xml:1041
+#: Dependencies.xml:1096
+#: Dependencies.xml:1151
#, no-c-format
msgid "Name"
msgstr "Nome"
@@ -99,10 +99,10 @@
#: Dependencies.xml:592
#: Dependencies.xml:658
#: Dependencies.xml:816
-#: Dependencies.xml:943
-#: Dependencies.xml:999
-#: Dependencies.xml:1054
-#: Dependencies.xml:1109
+#: Dependencies.xml:988
+#: Dependencies.xml:1044
+#: Dependencies.xml:1099
+#: Dependencies.xml:1154
#, no-c-format
msgid "Scope"
msgstr "Scope"
@@ -115,10 +115,10 @@
#: Dependencies.xml:589
#: Dependencies.xml:655
#: Dependencies.xml:819
-#: Dependencies.xml:946
-#: Dependencies.xml:1002
-#: Dependencies.xml:1057
-#: Dependencies.xml:1112
+#: Dependencies.xml:991
+#: Dependencies.xml:1047
+#: Dependencies.xml:1102
+#: Dependencies.xml:1157
#, no-c-format
msgid "Type"
msgstr "Tipo"
@@ -131,10 +131,10 @@
#: Dependencies.xml:595
#: Dependencies.xml:661
#: Dependencies.xml:822
-#: Dependencies.xml:949
-#: Dependencies.xml:1005
-#: Dependencies.xml:1060
-#: Dependencies.xml:1115
+#: Dependencies.xml:994
+#: Dependencies.xml:1050
+#: Dependencies.xml:1105
+#: Dependencies.xml:1160
#, no-c-format
msgid "Notes"
msgstr "NOte"
@@ -164,9 +164,12 @@
#: Dependencies.xml:882
#: Dependencies.xml:897
#: Dependencies.xml:912
-#: Dependencies.xml:964
-#: Dependencies.xml:1074
-#: Dependencies.xml:1129
+#: Dependencies.xml:927
+#: Dependencies.xml:942
+#: Dependencies.xml:957
+#: Dependencies.xml:1009
+#: Dependencies.xml:1119
+#: Dependencies.xml:1174
#, no-c-format
msgid "<para>ear</para>"
msgstr "<para>ear</para>"
@@ -219,10 +222,13 @@
#: Dependencies.xml:879
#: Dependencies.xml:894
#: Dependencies.xml:909
-#: Dependencies.xml:961
-#: Dependencies.xml:1016
-#: Dependencies.xml:1071
-#: Dependencies.xml:1126
+#: Dependencies.xml:924
+#: Dependencies.xml:939
+#: Dependencies.xml:954
+#: Dependencies.xml:1006
+#: Dependencies.xml:1061
+#: Dependencies.xml:1116
+#: Dependencies.xml:1171
#, no-c-format
msgid "runtime"
msgstr "runtime"
@@ -254,7 +260,7 @@
#: Dependencies.xml:751
#: Dependencies.xml:766
#: Dependencies.xml:781
-#: Dependencies.xml:1019
+#: Dependencies.xml:1064
#, no-c-format
msgid "<para>war</para>"
msgstr "<para>war</para>"
@@ -758,167 +764,185 @@
#. Tag: literal
#: Dependencies.xml:861
#, no-c-format
+msgid "drools-api.jar"
+msgstr "drools-api.jar"
+
+#. Tag: literal
+#: Dependencies.xml:876
+#, no-c-format
msgid "drools-compiler.jar"
msgstr "drools-compiler.jar"
#. Tag: literal
-#: Dependencies.xml:876
+#: Dependencies.xml:891
#, no-c-format
msgid "drools-core.jar"
msgstr "drools-core.jar"
#. Tag: literal
-#: Dependencies.xml:891
+#: Dependencies.xml:906
#, no-c-format
+msgid "drools-decisiontables.jar"
+msgstr "drools-decisiontables.jar"
+
+#. Tag: literal
+#: Dependencies.xml:921
+#, no-c-format
+msgid "drools-templates.jar"
+msgstr "drools-templates.jar"
+
+#. Tag: literal
+#: Dependencies.xml:936
+#, no-c-format
msgid "janino.jar"
msgstr "janino.jar"
#. Tag: literal
-#: Dependencies.xml:906
+#: Dependencies.xml:951
#, no-c-format
-msgid "mvel.jar"
-msgstr "mvel.jar"
+msgid "mvel2.jar"
+msgstr "mvel2.jar"
#. Tag: title
-#: Dependencies.xml:926
+#: Dependencies.xml:971
#, no-c-format
msgid "JBPM"
msgstr "JBPM"
#. Tag: title
-#: Dependencies.xml:929
+#: Dependencies.xml:974
#, no-c-format
msgid "JBPM dependencies"
msgstr "Dipendenze JBPM"
#. Tag: literal
-#: Dependencies.xml:958
+#: Dependencies.xml:1003
#, no-c-format
msgid "jbpm-jpdl.jar"
msgstr "jbpm-jpdl.jar"
#. Tag: title
-#: Dependencies.xml:978
+#: Dependencies.xml:1023
#, no-c-format
msgid "<title>GWT</title>"
msgstr "<title>GWT</title>"
#. Tag: para
-#: Dependencies.xml:980
+#: Dependencies.xml:1025
#, no-c-format
msgid "These libraries are required if you with to use the Google Web Toolkit (GWT) with your Seam application."
msgstr "Queste librerie sono richieste se si desidera usare Google Web Toolkit (GWT) nella propria applicazione Seam."
#. Tag: title
-#: Dependencies.xml:985
+#: Dependencies.xml:1030
#, no-c-format
msgid "GWT dependencies"
msgstr "Dipendenze GWT"
#. Tag: literal
-#: Dependencies.xml:1013
+#: Dependencies.xml:1058
#, no-c-format
msgid "gwt-servlet.jar"
msgstr "gwt-servlet.jar"
#. Tag: para
-#: Dependencies.xml:1022
+#: Dependencies.xml:1067
#, no-c-format
msgid "The GWT Servlet libs"
msgstr "Librerie GWT Servlet"
#. Tag: title
-#: Dependencies.xml:1033
+#: Dependencies.xml:1078
#, no-c-format
msgid "Spring"
msgstr "Spring"
#. Tag: para
-#: Dependencies.xml:1035
+#: Dependencies.xml:1080
#, no-c-format
msgid "These libraries are required if you with to use the Spring Framework with your Seam application."
msgstr "Queste librerie sono richieste se si desidera usare Spring Framework nella propria applicazione Seam."
#. Tag: title
-#: Dependencies.xml:1040
+#: Dependencies.xml:1085
#, no-c-format
msgid "Spring Framework dependencies"
msgstr "Dipendenze in Spring Framework"
#. Tag: literal
-#: Dependencies.xml:1068
+#: Dependencies.xml:1113
#, no-c-format
msgid "spring.jar"
msgstr "spring.jar"
#. Tag: para
-#: Dependencies.xml:1077
+#: Dependencies.xml:1122
#, no-c-format
msgid "The Spring Framework library"
msgstr "Libreria Spring Framework"
#. Tag: title
-#: Dependencies.xml:1088
+#: Dependencies.xml:1133
#, no-c-format
msgid "Groovy"
msgstr "Groovy"
#. Tag: para
-#: Dependencies.xml:1090
+#: Dependencies.xml:1135
#, no-c-format
msgid "These libraries are required if you with to use Groovy with your Seam application."
msgstr "Queste librerie sono richieste se si desidera usare Groovy nella propria applicazione Seam."
#. Tag: title
-#: Dependencies.xml:1095
+#: Dependencies.xml:1140
#, no-c-format
msgid "Groovy dependencies"
msgstr "Dipendenze di Groovy"
#. Tag: literal
-#: Dependencies.xml:1123
+#: Dependencies.xml:1168
#, no-c-format
msgid "groovy-all.jar"
msgstr "groovy-all.jar"
#. Tag: para
-#: Dependencies.xml:1132
+#: Dependencies.xml:1177
#, no-c-format
msgid "The Groovy libs"
msgstr "Librerie di Groovy"
#. Tag: title
-#: Dependencies.xml:1144
+#: Dependencies.xml:1189
#, no-c-format
msgid "Dependency Management using Maven"
msgstr "Gestione delle dipendenze usando Maven"
#. Tag: para
-#: Dependencies.xml:1147
+#: Dependencies.xml:1192
#, no-c-format
msgid "Maven offers support for transitive dependency management and can be used to manage the dependencies of your Seam project. You can use Maven Ant Tasks to integrate Maven into your Ant build, or can use Maven to build and deploy your project."
msgstr "Maven offre un supporto per la gestione transitiva delle dipendenze e può essere usato per gestire le dipendenze nei progetti Seam. Maven Ant Tasks intergra Maven nel build di Ant, e Maven può essereimpiegato per fare ilbuild ed il deploy dei propri progetti."
#. Tag: para
-#: Dependencies.xml:1154
+#: Dependencies.xml:1199
#, no-c-format
msgid "We aren't actually going to discuss how to use Maven here, but just run over some basic POMs you could use."
msgstr "Qui non si discute l'uso di Maven, ma soltanto un utilizzo base del POM."
#. Tag: para
-#: Dependencies.xml:1159
+#: Dependencies.xml:1204
#, no-c-format
msgid "Released versions of Seam are available in <ulink url=\"http://repository.jboss.org/maven2\"> http://repository.jboss.org/maven2</ulink> and nightly snapshots are available in <ulink url=\"http://snapshots.jboss.org/maven2\"> http://snapshots.jboss.org/maven2</ulink>."
msgstr "Le versioni rilasciate di Seam sono disponibili all'indirizzo <ulink url=\"http://repository.jboss.org/maven2\">http://repository.jboss.org/maven2</ulink> e gli snapshot notturni sono disponibili all'indirizzo <ulink url=\"http://snapshots.jboss.org/maven2\">http://snapshots.jboss.org/maven2</ulink>."
#. Tag: para
-#: Dependencies.xml:1166
+#: Dependencies.xml:1211
#, no-c-format
msgid "All the Seam artifacts are available in Maven:"
msgstr "Tutti gli artifact di Seam sono disponibili in Maven:"
#. Tag: programlisting
-#: Dependencies.xml:1170
+#: Dependencies.xml:1215
#, no-c-format
msgid ""
"<![CDATA[<dependency>\n"
@@ -932,7 +956,7 @@
"</dependency>]]>"
#. Tag: programlisting
-#: Dependencies.xml:1172
+#: Dependencies.xml:1217
#, no-c-format
msgid ""
"<![CDATA[<dependency>\n"
@@ -946,7 +970,7 @@
"</dependency>]]>"
#. Tag: programlisting
-#: Dependencies.xml:1174
+#: Dependencies.xml:1219
#, no-c-format
msgid ""
"<![CDATA[<dependency>\n"
@@ -960,7 +984,7 @@
"</dependency>]]>"
#. Tag: programlisting
-#: Dependencies.xml:1176
+#: Dependencies.xml:1221
#, no-c-format
msgid ""
"<![CDATA[<dependency>\n"
@@ -974,8 +998,8 @@
"</dependency>]]>"
#. Tag: programlisting
-#: Dependencies.xml:1178
-#: Dependencies.xml:1180
+#: Dependencies.xml:1223
+#: Dependencies.xml:1225
#, no-c-format
msgid ""
"<![CDATA[<dependency>\n"
@@ -989,13 +1013,13 @@
"</dependency>]]>"
#. Tag: para
-#: Dependencies.xml:1182
+#: Dependencies.xml:1227
#, no-c-format
msgid "This sample POM will give you Seam, JPA (provided by Hibernate), Hibernate Validator and Hibernate Search:"
msgstr "Questo POM d'esempio fornirà Seam, JPA (tramite Hibernate), Hibernate Validator e Hibernate Search:"
#. Tag: programlisting
-#: Dependencies.xml:1187
+#: Dependencies.xml:1232
#, no-c-format
msgid ""
"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Gettingstarted.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Gettingstarted.po 2009-06-25 15:01:40 UTC (rev 11210)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Gettingstarted.po 2009-06-25 15:06:46 UTC (rev 11211)
@@ -5,8 +5,8 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2009-04-15 13:51+0000\n"
-"PO-Revision-Date: 2009-04-15 16:03+0100\n"
+"POT-Creation-Date: 2009-06-25 15:02+0000\n"
+"PO-Revision-Date: 2009-06-25 17:05+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -113,10 +113,10 @@
#: Gettingstarted.xml:58
#, no-c-format
msgid ""
-"cd jboss-seam-2.0.x\n"
+"cd jboss-seam-2.2.x\n"
"seam setup"
msgstr ""
-"cd jboss-seam-2.0.x\n"
+"cd jboss-seam-2.2.x\n"
"seam setup"
#. Tag: para
@@ -745,8 +745,8 @@
#. Tag: para
#: Gettingstarted.xml:282
#, no-c-format
-msgid "Seam 2.0 was developed for JavaServer Faces 1.2. When using JBoss AS, we recommend using JBoss 4.2 or JBoss 5.0, both of which bundle the JSF 1.2 reference implementation. However, it is still possible to use Seam 2.0 on the JBoss 4.0 platform. There are two basic steps required to do this: install an EJB3-enabled version of JBoss 4.0 and replace MyFaces with the JSF 1.2 reference implementation. Once you complete these steps, Seam 2.0 applications can be deployed to JBoss 4.0."
-msgstr "Seam 2.0 è stato sviluppato per JavaServer Faces 1.2. Usando JBoss AS, si raccomanda di usare JBoss 4.2 o JBoss 5.0, che incorpora l'implementazione di riferimento JSF 1.2. Comunque è possibile usare Seam 2.0 su piattaforma JBoss 4.0. Ci sono due passi base richiesti per farlo: installare la versione JBoss 4.0 con EJB3 abilitato e sostituire MyFaces con l'implementazione di riferimento JSF 1.2. Una volta completati questi passi, le applicazioni Seam 2.0 possono essere deployate in JBoss 4.0."
+msgid "Seam 2 was developed for JavaServer Faces 1.2. When using JBoss AS, we recommend using JBoss 4.2 or JBoss 5.0, both of which bundle the JSF 1.2 reference implementation. However, it is still possible to use Seam 2 on the JBoss 4.0 platform. There are two basic steps required to do this: install an EJB3-enabled version of JBoss 4.0 and replace MyFaces with the JSF 1.2 reference implementation. Once you complete these steps, Seam 2 applications can be deployed to JBoss 4.0."
+msgstr "Seam 2 è stato sviluppato per JavaServer Faces 1.2. Usando JBoss AS, si raccomanda di usare JBoss 4.2 o JBoss 5.0, che incorpora l'implementazione di riferimento JSF 1.2. Comunque è possibile usare Seam 2 su piattaforma JBoss 4.0. Ci sono due passi base richiesti per farlo: installare la versione JBoss 4.0 con EJB3 abilitato e sostituire MyFaces con l'implementazione di riferimento JSF 1.2. Una volta completati questi passi, le applicazioni Seam 2.0 possono essere deployate in JBoss 4.0."
#. Tag: title
#: Gettingstarted.xml:289
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/I18n.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/I18n.po 2009-06-25 15:01:40 UTC (rev 11210)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/I18n.po 2009-06-25 15:06:46 UTC (rev 11211)
@@ -5,8 +5,8 @@
msgstr ""
"Project-Id-Version: I18n\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2009-05-29 06:39+0000\n"
-"PO-Revision-Date: 2009-05-29 08:44+0100\n"
+"POT-Creation-Date: 2009-06-25 15:02+0000\n"
+"PO-Revision-Date: 2009-06-25 17:05+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: Italian <stefano.travelli(a)gmail.com>\n"
"MIME-Version: 1.0\n"
@@ -461,49 +461,49 @@
msgstr "Questo mostrerà <literal>Hello, Gavin King</literal> oppure <literal>G'day, Gavin</literal>, a seconda della lingua dell'utente."
#. Tag: title
-#: I18n.xml:296
+#: I18n.xml:297
#, no-c-format
msgid "Timezones"
msgstr "Fusi orari"
#. Tag: para
-#: I18n.xml:298
+#: I18n.xml:299
#, no-c-format
msgid "There is also a session-scoped instance of <literal> java.util.Timezone</literal>, named <literal> org.jboss.seam.international.timezone</literal>, and a Seam component for changing the timezone named <literal> org.jboss.seam.international.timezoneSelector</literal>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <literal> <f:convertDateTime></literal>. This is an extremely inconvenient default behavior."
msgstr "C'è anche un'istanza a livello sessione di <literal>java.util.Timezone</literal>, chiamata <literal>org.jboss.seam.international.timezone</literal>, e un componente Seam per cambiare il fuso orario chiamato <literal>org.jboss.seam.interanational.timezoneSelector</literal>. Per default il fuso orario è il fuso orario di default del server. Purtroppo le specifiche JSF dicono che tutte le date e orari devono essere considerati come UTC e mostrati come UTC a meno che un fuso orario non sia esplicitamente specificato usando <literal><f:convertDateTime></literal>. Questo è un comportamento di default estremamente sconveniente."
#. Tag: para
-#: I18n.xml:309
+#: I18n.xml:310
#, no-c-format
msgid "Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <literal> <s:convertDateTime></literal> tag which always performs conversions in the Seam timezone."
msgstr "Seam modifica questo comportamento e imposta il fuso orario di tutte le date e orari al fuso orario di Seam. In più, Seam fornisce la tag <literal><s:convertDateTime></literal> che esegue sempre questa conversione nel fuso orario di Seam."
#. Tag: para
-#: I18n.xml:314
+#: I18n.xml:315
#, no-c-format
msgid "Seam also provides a default date converter to convert a string value to a date. This saves you from having to specify a converter on input fields that are simply capturing a date. The pattern is selected according the the user's locale and the time zone is selected as described above."
msgstr "Seam fornisce anche un converter di date di default per convertire una valore stringa in una data. Questo risparmia di dover specificare un converter sui campi d'input che sono semplicemente catturati come data. Il pattern viene selezionato in accordo con il locale dell'utente e la timezone viene selezionata come descritto sopra."
#. Tag: title
-#: I18n.xml:321
+#: I18n.xml:322
#, no-c-format
msgid "Themes"
msgstr "Temi"
#. Tag: para
-#: I18n.xml:323
+#: I18n.xml:324
#, no-c-format
msgid "Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes."
msgstr "Le applicazioni Seam sono anche molto facilmente personalizzabili nell'aspetto. Le API per i temi sono molto simili alle API per la traduzione, ma ovviamente questi due concetti sono ortogonali e alcune applicazione gestiscono sia le traduzioni che i temi."
#. Tag: para
-#: I18n.xml:328
+#: I18n.xml:329
#, no-c-format
msgid "First, configure the set of supported themes:"
msgstr "Prima di tutto occorre configurare l'insieme dei temi gestiti:"
#. Tag: programlisting
-#: I18n.xml:330
+#: I18n.xml:331
#, no-c-format
msgid ""
"<theme:theme-selector cookie-enabled=\"true\">\n"
@@ -523,19 +523,19 @@
"</theme:theme-selector>"
#. Tag: para
-#: I18n.xml:332
+#: I18n.xml:333
#, no-c-format
msgid "Note that the first theme listed is the default theme."
msgstr "Notare che il primo tema elencato è il tema di default."
#. Tag: para
-#: I18n.xml:334
+#: I18n.xml:335
#, no-c-format
msgid "Themes are defined in a properties file with the same name as the theme. For example, the <literal>default</literal> theme is defined as a set of entries in <literal> default.properties</literal>. For example, <literal> default.properties</literal> might define:"
msgstr "I temi sono definiti in file di proprietà con lo stesso nome del tema. Ad esempio, il tema <literal>default</literal> è definito come un insieme di voci in <literal>default.properties</literal>. Ad esempio <literal>default.properties</literal> potrebbe definire:"
#. Tag: programlisting
-#: I18n.xml:339
+#: I18n.xml:340
#, no-c-format
msgid ""
"css ../screen.css\n"
@@ -545,31 +545,31 @@
"template /template.xhtml"
#. Tag: para
-#: I18n.xml:341
+#: I18n.xml:342
#, no-c-format
msgid "Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text)."
msgstr "Di solito le voci nel resource bundle di un tema saranno percorsi a fogli di stile CSS o immagini e nomi di modelli facelets (a differenza dei resource bundle per le traduzioni che normalmente contengono testo)."
#. Tag: para
-#: I18n.xml:345
+#: I18n.xml:346
#, no-c-format
msgid "Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:"
msgstr "Ora è possibile usare queste voci nella pagine JSP o facelets. Ad esempio, per gestire con un tema il foglio di stile di una pagina facelets:"
#. Tag: programlisting
-#: I18n.xml:348
+#: I18n.xml:349
#, no-c-format
msgid "<link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" />"
msgstr "<link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" />"
#. Tag: para
-#: I18n.xml:350
+#: I18n.xml:351
#, no-c-format
msgid "Or, when the page definition resides in a subdirectory:"
msgstr "Oppure, quando la definizione della pagina risiede in una sottocartella:"
#. Tag: programlisting
-#: I18n.xml:352
+#: I18n.xml:353
#, no-c-format
msgid ""
"<link href=\"#{facesContext.externalContext.requestContextPath}#{theme.css}\" \n"
@@ -579,13 +579,13 @@
" rel=\"stylesheet\" type=\"text/css\" />"
#. Tag: para
-#: I18n.xml:354
+#: I18n.xml:355
#, no-c-format
msgid "Most powerfully, facelets lets us theme the template used by a <literal><ui:composition></literal>:"
msgstr "In modo più flessibile, facelets consente di gestire con i temi il modello usato da un <literal><ui:composition></literal>:"
#. Tag: programlisting
-#: I18n.xml:357
+#: I18n.xml:358
#, no-c-format
msgid ""
"<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
@@ -601,13 +601,13 @@
" template=\"#{theme.template}\">"
#. Tag: para
-#: I18n.xml:359
+#: I18n.xml:360
#, no-c-format
msgid "Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:"
msgstr "Così come per selezionare la lingua, c'è un componente che consente all'utente di cambiare liberamente il tema:"
#. Tag: programlisting
-#: I18n.xml:362
+#: I18n.xml:363
#, no-c-format
msgid ""
"<h:selectOneMenu value=\"#{themeSelector.theme}\">\n"
@@ -621,19 +621,19 @@
"<h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme\"/>"
#. Tag: title
-#: I18n.xml:366
+#: I18n.xml:367
#, no-c-format
msgid "Persisting locale and theme preferences via cookies"
msgstr "Registrare la scelta della lingua e del tema tramite cookies"
#. Tag: para
-#: I18n.xml:368
+#: I18n.xml:369
#, no-c-format
msgid "The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <literal>cookie-enabled</literal> property in <literal>components.xml</literal>:"
msgstr "Le selezioni della lingua, del tema e del fuso orario gestiscono tutte la registrazione della scelta in un cookie. Basta impostare la proprietà <literal>cookie-enabled</literal> in <literal>components.xml</literal>:"
#. Tag: programlisting
-#: I18n.xml:373
+#: I18n.xml:374
#, no-c-format
msgid ""
"<theme:theme-selector cookie-enabled=\"true\">\n"
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Security.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Security.po 2009-06-25 15:01:40 UTC (rev 11210)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Security.po 2009-06-25 15:06:46 UTC (rev 11211)
@@ -5,8 +5,8 @@
msgstr ""
"Project-Id-Version: Security\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2009-06-11 18:45+0000\n"
-"PO-Revision-Date: 2009-06-17 16:50+0100\n"
+"POT-Creation-Date: 2009-06-25 15:02+0000\n"
+"PO-Revision-Date: 2009-06-25 17:05+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: it <stefano.travelli(a)gmail.com>\n"
"MIME-Version: 1.0\n"
@@ -1078,8 +1078,8 @@
#. Tag: para
#: Security.xml:630
#: Security.xml:764
-#: Security.xml:3385
-#: Security.xml:3548
+#: Security.xml:3391
+#: Security.xml:3554
#, no-c-format
msgid "Annotation"
msgstr "Annotazione"
@@ -1098,11 +1098,11 @@
#: Security.xml:1418
#: Security.xml:2147
#: Security.xml:2756
-#: Security.xml:3174
-#: Security.xml:3391
-#: Security.xml:3554
-#: Security.xml:3795
-#: Security.xml:4232
+#: Security.xml:3180
+#: Security.xml:3397
+#: Security.xml:3560
+#: Security.xml:3801
+#: Security.xml:4238
#, no-c-format
msgid "Description"
msgstr "Descrizione"
@@ -2146,9 +2146,9 @@
#: Security.xml:1412
#: Security.xml:1828
#: Security.xml:2753
-#: Security.xml:3171
-#: Security.xml:3792
-#: Security.xml:3961
+#: Security.xml:3177
+#: Security.xml:3798
+#: Security.xml:3967
#, no-c-format
msgid "Method"
msgstr "Metodo"
@@ -2181,14 +2181,14 @@
#: Security.xml:1762
#: Security.xml:1780
#: Security.xml:2766
-#: Security.xml:3242
-#: Security.xml:3261
-#: Security.xml:3280
-#: Security.xml:3298
-#: Security.xml:3843
-#: Security.xml:3862
-#: Security.xml:3881
-#: Security.xml:3900
+#: Security.xml:3248
+#: Security.xml:3267
+#: Security.xml:3286
+#: Security.xml:3304
+#: Security.xml:3849
+#: Security.xml:3868
+#: Security.xml:3887
+#: Security.xml:3906
#, no-c-format
msgid "boolean"
msgstr "boolean"
@@ -2449,14 +2449,14 @@
#. Tag: para
#: Security.xml:1831
-#: Security.xml:3964
+#: Security.xml:3970
#, no-c-format
msgid "Permission Target"
msgstr "Oggetto del permesso"
#. Tag: para
#: Security.xml:1834
-#: Security.xml:3967
+#: Security.xml:3973
#, no-c-format
msgid "Permission Action"
msgstr "Azione del permesso"
@@ -3589,8 +3589,8 @@
#. Tag: para
#: Security.xml:2750
-#: Security.xml:3168
-#: Security.xml:3789
+#: Security.xml:3174
+#: Security.xml:3795
#, no-c-format
msgid "Return type"
msgstr "Tipo restituito"
@@ -3724,36 +3724,48 @@
#. Tag: para
#: Security.xml:2926
#, no-c-format
+msgid "drools-decisiontables.jar"
+msgstr "drools-decisiontables.jar"
+
+#. Tag: para
+#: Security.xml:2929
+#, no-c-format
+msgid "drools-templates.jar"
+msgstr "drools-templates.jar"
+
+#. Tag: para
+#: Security.xml:2932
+#, no-c-format
msgid "janino.jar"
msgstr "janino.jar"
#. Tag: para
-#: Security.xml:2929
+#: Security.xml:2935
#, no-c-format
msgid "antlr-runtime.jar"
msgstr "antlr-runtime.jar"
#. Tag: para
-#: Security.xml:2932
+#: Security.xml:2938
#, no-c-format
msgid "mvel2.jar"
msgstr "mvel2.jar"
#. Tag: title
-#: Security.xml:2939
-#: Security.xml:3131
+#: Security.xml:2945
+#: Security.xml:3137
#, no-c-format
msgid "Configuration"
msgstr "Configurazione"
#. Tag: para
-#: Security.xml:2941
+#: Security.xml:2947
#, no-c-format
msgid "The configuration for <literal>RuleBasedPermissionResolver</literal> requires that a Drools rule base is first configured in <literal>components.xml</literal>. By default, it expects that the rule base is named <literal>securityRules</literal>, as per the following example:"
msgstr "La configurazione per <literal>RuleBasedPermissionResolver</literal> richiede che una base di regole venga prima configurata in <literal>components.xml</literal>. Per difetto si aspetta che questa base di regole sia chiamata <literal>securityRules</literal>, come nel seguente esempio:"
#. Tag: programlisting
-#: Security.xml:2947
+#: Security.xml:2953
#, no-c-format
msgid ""
"<![CDATA[<components xmlns=\"http://jboss.com/products/seam/components\"\n"
@@ -3795,13 +3807,13 @@
" </components>]]>"
#. Tag: para
-#: Security.xml:2949
+#: Security.xml:2955
#, no-c-format
msgid "The default rule base name can be overridden by specifying the <literal>security-rules</literal> property for <literal>RuleBasedPermissionResolver</literal>:"
msgstr "Il nome predefinito della base di regole può essere modificato specificando la proprietà <literal>security-rules</literal> per <literal>RuleBasedPermissionResolver</literal>:"
#. Tag: programlisting
-#: Security.xml:2954
+#: Security.xml:2960
#, no-c-format
msgid ""
"<![CDATA[\n"
@@ -3811,31 +3823,31 @@
" <security:rule-based-permission-resolver security-rules=\"#{prodSecurityRules}\"/>]]>"
#. Tag: para
-#: Security.xml:2956
+#: Security.xml:2962
#, no-c-format
msgid "Once the <literal>RuleBase</literal> component is configured, it's time to write the security rules."
msgstr "Una volta che il componente <literal>RuleBase</literal> è configurato, è il momento di scrivere le regole di sicurezza."
#. Tag: title
-#: Security.xml:2962
+#: Security.xml:2968
#, no-c-format
msgid "Writing Security Rules"
msgstr "Scrivere le regole di sicurezza"
#. Tag: para
-#: Security.xml:2964
+#: Security.xml:2970
#, no-c-format
msgid "The first step to writing security rules is to create a new rule file in the <literal>/META-INF</literal> directory of your application's jar file. Usually this file would be named something like <literal>security.drl</literal>, however you can name it whatever you like as long as it is configured correspondingly in <literal>components.xml</literal>."
msgstr "Il primo passo per scrivere delle regole di sicurezza è di creare un nuovo file di regole nella cartella <literal>/META-INF</literal> del file jar dell'applicazione. Di solito questo file dovrebbe essere chiamato qualcosa come <literal>security.drl</literal>, comunque lo si può chiamare nel modo che si preferisce purché sia configurato in maniera corrispondente in <literal>components.xml</literal>."
#. Tag: para
-#: Security.xml:2971
+#: Security.xml:2977
#, no-c-format
msgid "So what should the security rules file contain? At this stage it might be a good idea to at least skim through the Drools documentation, however to get started here's an extremely simple example:"
msgstr "Dunque, che cosa deve contenere il file delle regole di sicurezza? A questo punto potrebbe essere una buona idea almeno sbirciare nella documentazione Drools, comunque per partire ecco un esempio estremamente semplice:"
#. Tag: programlisting
-#: Security.xml:2976
+#: Security.xml:2982
#, no-c-format
msgid ""
"<![CDATA[package MyApplicationPermissions;\n"
@@ -3865,115 +3877,115 @@
" end]]>"
#. Tag: para
-#: Security.xml:2978
+#: Security.xml:2984
#, no-c-format
msgid "Let's break this down step by step. The first thing we see is the package declaration. A package in Drools is essentially a collection of rules. The package name can be anything you want - it doesn't relate to anything else outside the scope of the rule base."
msgstr "Dividiamolo passo per passo. La prima cosa che vediamo è la dichiarazione del pacchetto. Un pacchetto in Drools è essenzialmente una collezione di regole. Il nome del pacchetto può essere qualsiasi, non è in relazione con niente che sia al di fuori della visibilità della base di regole."
#. Tag: para
-#: Security.xml:2984
+#: Security.xml:2990
#, no-c-format
msgid "The next thing we can notice is a couple of import statements for the <literal>PermissionCheck</literal> and <literal>Role</literal> classes. These imports inform the rules engine that we'll be referencing these classes within our rules."
msgstr "La cosa successiva che possiano notare è un paio di dichiarazioni <literal>import</literal> per le classi <literal>PermissionCheck</literal> e <literal>Role</literal>. Questi <literal>import</literal> informano il motore di regole che all'interno delle nostre regole faremo riferimento a queste classi."
#. Tag: para
-#: Security.xml:2990
+#: Security.xml:2996
#, no-c-format
msgid "Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <literal>CanUserDeleteCustomers</literal> and will be used to check whether a user is allowed to delete a customer record."
msgstr "Infine abbiamo il codice della regola. Ogni regola all'interno di un pacchetto deve avere un nome univoco (di solito descrive lo scopo della regola). In questo caso la nostra regola si chiama <literal>CanUserDeleteCustomers</literal> e verrà usata per verificare se ad un utente è consentito di cancellare un record relativo ad un cliente."
#. Tag: para
-#: Security.xml:2996
+#: Security.xml:3002
#, no-c-format
msgid "Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <literal>when</literal> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <literal>then</literal> section. The end of the rule is denoted by the <literal>end</literal> line."
msgstr "Guardando il corpo della definizione della regola si possono notare due distinte sezioni. Le regole hanno quello che è noto come lato sinistro (LHS, left hand side) e un lato destro (RHS, right hand side). Il lato sinistro consiste nella parte condizionale della regola, cioè l'elenco delle condizioni che devono essere soddisfatte per la regola si applichi. Il lato sinistro è rappresentato dalla sezione <literal>when</literal>. Il lato destro è la conseguenza, o la parte di azione della regola che si applica solo se tutte le condizioni del lato sinistro sono verificate. Il lato destro è rappresentato dalla sezione <literal>then</literal>. La fine della regola è stabilita dalla linea <literal>end</literal>."
#. Tag: para
-#: Security.xml:3005
+#: Security.xml:3011
#, no-c-format
msgid "If we look at the LHS of the rule, we see two conditions listed there. Let's examine the first condition:"
msgstr "Se guardiamo la parte sinistra della regola vediamo che ci sono due condizioni. Esaminiamo la prima condizione:"
#. Tag: programlisting
-#: Security.xml:3009
+#: Security.xml:3015
#, no-c-format
msgid "<![CDATA[c: PermissionCheck(target == \"customer\", action == \"delete\")]]>"
msgstr "<![CDATA[c: PermissionCheck(target == \"customer\", action == \"delete\")]]>"
#. Tag: para
-#: Security.xml:3011
+#: Security.xml:3017
#, no-c-format
msgid "In plain english, this condition is stating that there must exist a <literal>PermissionCheck</literal> object with a <literal>target</literal> property equal to \"customer\", and an <literal>action</literal> property equal to \"delete\" within the working memory."
msgstr "Letta in inglese questa condizione dice che all'interno della working memory deve esistere un oggetto <literal>PermissionCheck</literal> con una proprietà <literal>target</literal> uguale a \"customer\" e una proprietà <literal>action</literal> uguale a \"delete\"."
#. Tag: para
-#: Security.xml:3017
+#: Security.xml:3023
#, no-c-format
msgid "So what is the working memory? Also known as a \"stateful session\" in Drools terminology, the working memory is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <literal>hasPermission()</literal> method is called, a temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</emphasis>, is inserted into the working memory. This <literal>PermissionCheck</literal> corresponds exactly to the permission that is being checked, so for example if you call <literal>hasPermission(\"account\", \"create\")</literal> then a <literal>PermissionCheck</literal> object with a <literal>target</literal> equal to \"account\" and <literal>action</literal> equal to \"create\" will be inserted into the working memory for the duration of the permission check."
msgstr "Dunque cos'è la working memory? Nota anche come \"stateful session\" nella terminologia Drools, la working memory è un oggetto collegato alla sessione che contiene le informazioni contestuali che sono richieste dal motore di regole per prendere una decisione sul controllo di permesso. Ogni volta che il metodo <literal>hasPermission()</literal> viene chiamato, viene creato un oggetto, o <emphasis>Fatto</emphasis>, temporaneo <literal>PermissionCheck</literal>, e viene inserito nella working memory. Questo <literal>PermissionCheck</literal> corrisponde esattamente al permesso che si sta controllando, così, ad esempio, se viene chiamato <literal>hasPermission(\"account\", \"create\")</literal> allora verrà inserito nella working memory un oggetto <literal>PermissionCheck</literal> con <literal>target</literal> uguale a \"account\" e <literal>action</literal> uguale a \"create\", per la durata del controllo di permesso."
#. Tag: para
-#: Security.xml:3029
+#: Security.xml:3035
#, no-c-format
msgid "Besides the <literal>PermissionCheck</literal> facts, there is also a <literal>org.jboss.seam.security.Role</literal> fact for each of the roles that the authenticated user is a member of. These <literal>Role</literal> facts are synchronized with the user's authenticated roles at the beginning of every permission check. As a consequence, any <literal>Role</literal> object that is inserted into the working memory during the course of a permission check will be removed before the next permission check occurs, if the authenticated user is not actually a member of that role. Besides the <literal>PermissionCheck</literal> and <literal>Role</literal> facts, the working memory also contains the <literal>java.security.Principal</literal> object that was created as a result of the authentication process."
msgstr "Accanto al fatto <literal>PermissionCheck</literal> c'è anche un fatto <literal>org.jboss.seam.security.Role</literal> per ogni ruolo di cui l'utente autenticato è membro. Questi fatti <literal>Role</literal> sono sincronizzati con i ruoli dell'utente autenticato all'inizio di ogni controllo di permesso. Di conseguenza qualsiasi oggetto <literal>Role</literal> che venisse inserito nella working memory nel corso del controllo di permesso sarebbe rimosso prima che il controllo di permesso successivo avvenga, a meno che l'utente autenticato non sia effettivamente membro di quel ruolo. Insieme ai fatti <literal>PermissionCheck</literal> e <literal>Role</literal> la working memory contiene anche l'oggetto <literal>java.security.Principal</literal> che era stato creato come risultato del processo di autenticazione."
#. Tag: para
-#: Security.xml:3040
+#: Security.xml:3046
#, no-c-format
msgid "It is also possible to insert additional long-lived facts into the working memory by calling <literal>RuleBasedPermissionResolver.instance().getSecurityContext().insert()</literal>, passing the object as a parameter. The exception to this is <literal>Role</literal> objects, which as already discussed are synchronized at the start of each permission check."
msgstr "E' anche possibile inserire ulteriori fatti nella working memory chiamando <literal>RuleBasedPermissionResolver.instance().getSecurityContext().insert()</literal>, passando l'oggetto come parametro. Fanno eccezione a questo gli oggetti <literal>Role</literal> che, come già detto, sono sincronizzati all'inizio di ciascun controllo di permesso."
#. Tag: para
-#: Security.xml:3047
+#: Security.xml:3053
#, no-c-format
msgid "Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <literal>c:</literal>. This is a variable binding, and is used to refer back to the object that is matched by the condition (in this case, the <literal>PermissionCheck</literal>). Moving on to the second line of our LHS, we see this:"
msgstr "Tornando al nostro esempio, possiamo anche notare che la prima linea della nostra parte sinistra ha il prefisso <literal>c:</literal>. Questa è una dichiarazione di variabile ed è usata per fare riferimento all'oggetto rilevato dalla condizione (in questo caso il <literal>PermissionCheck</literal>). Passando alla seconda linea della nostra parte sinistra vediamo questo:"
#. Tag: programlisting
-#: Security.xml:3054
+#: Security.xml:3060
#, no-c-format
msgid "<![CDATA[Role(name == \"admin\")]]>"
msgstr "<![CDATA[Role(name == \"admin\")]]>"
#. Tag: para
-#: Security.xml:3056
+#: Security.xml:3062
#, no-c-format
msgid "This condition simply states that there must be a <literal>Role</literal> object with a <literal>name</literal> of \"admin\" within the working memory. As already mentioned, user roles are inserted into the working memory at the beginning of each permission check. So, putting both conditions together, this rule is essentially saying \"I will fire if you are checking for the <literal>customer:delete</literal> permission and the user is a member of the <literal>admin</literal> role\"."
msgstr "Questa condizione dichiara semplicemente che ci deve essere un oggetto <literal>Role</literal> con un <literal>name</literal> uguale ad \"admin\" nella working memory. Come già menzionato, i ruoli dell'utente sono inseriti nella working memory all'inizio di ogni controllo di permesso. Così, mettendo insieme entrambe le condizioni, questa regola in pratica dice \"mi attiverò quando ci sarà un controllo per il permesso <literal>customer:delete</literal> e l'utente è un membro del ruolo <literal>admin</literal>\"."
#. Tag: para
-#: Security.xml:3064
+#: Security.xml:3070
#, no-c-format
msgid "So what is the consequence of the rule firing? Let's take a look at the RHS of the rule:"
msgstr "Quindi qual è la conseguenza dell'attivazione della regola? Diamo un'occhiata alla parte destra della regola:"
#. Tag: programlisting
-#: Security.xml:3068
+#: Security.xml:3074
#, no-c-format
msgid "<![CDATA[c.grant()]]>"
msgstr "<![CDATA[c.grant()]]>"
#. Tag: para
-#: Security.xml:3070
+#: Security.xml:3076
#, no-c-format
msgid "The RHS consists of Java code, and in this case is invoking the <literal>grant()</literal> method of the <literal>c</literal> object, which as already mentioned is a variable binding for the <literal>PermissionCheck</literal> object. Besides the <literal>name</literal> and <literal>action</literal> properties of the <literal>PermissionCheck</literal> object, there is also a <literal>granted</literal> property which is initially set to <literal>false</literal>. Calling <literal>grant()</literal> on a <literal>PermissionCheck</literal> sets the <literal>granted</literal> property to <literal>true</literal>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for."
msgstr "La parte destra è costituita da codice Java e, in questo caso, esso invoca il metodo <literal>grant()</literal> dell'oggetto <literal>c</literal> il quale, come già detto, è una variabile che rappresenta l'oggetto <literal>PermissionCheck</literal>. Insieme alle proprietà <literal>name</literal> e <literal>action</literal>, nell'oggetto <literal>PermissionCheck</literal> c'è anche una proprietà <literal>granted</literal> che inizialmente è impostata a <literal>false</literal>. Chiamando <literal>grant()</literal> su un <literal>PermissionCheck</literal> la proprietà <literal>granted</literal> viene impostata a <literal>true</literal>, il che significa che il controllo di permesso è andato a buon fine, consentendo all'utente di portare avanti qualsiasi azione per cui il controlo di permesso era stato inteso."
#. Tag: title
-#: Security.xml:3084
+#: Security.xml:3090
#, no-c-format
msgid "Non-String permission targets"
msgstr "Permessi con obiettivi non stringa"
#. Tag: para
-#: Security.xml:3086
+#: Security.xml:3092
#, no-c-format
msgid "So far we have only seen permission checks for String-literal permission targets. It is of course also possible to write security rules for permission targets of more complex types. For example, let's say that you wish to write a security rule to allow your users to create blog comments. The following rule demonstrates how this may be expressed, by requiring the target of the permission check to be an instance of <literal>MemberBlog</literal>, and also requiring that the currently authenticated user is a member of the <literal>user</literal> role:"
msgstr "Finora abbiamo visto solo controlli di permesso per obiettivi di tipo stringa. E' naturalmente possibile scrivere regole di sicurezza anche per obiettivi del permesso di tipo più complesso. Ad esempio, supponiamo che si voglia scrivere una regola di sicurezza che consenta agli utenti di creare un commento in un blog. La seguente regola mostra come questo possa essere espresso, richiedendo che l'obiettivo del controllo di permesso sia un'istanza di <literal>MemberBlog</literal> e anche che l'utente correntemente autenticato sia un membro del ruolo <literal>user</literal>:"
#. Tag: programlisting
-#: Security.xml:3095
+#: Security.xml:3101
#, no-c-format
msgid ""
"<![CDATA[rule CanCreateBlogComment\n"
@@ -4001,19 +4013,19 @@
"]]>"
#. Tag: title
-#: Security.xml:3100
+#: Security.xml:3106
#, no-c-format
msgid "Wildcard permission checks"
msgstr "Controlli di permesso "
#. Tag: para
-#: Security.xml:3102
+#: Security.xml:3108
#, no-c-format
msgid "It is possible to implement a wildcard permission check (which allows all actions for a given permission target), by omitting the <literal>action</literal> constraint for the <literal>PermissionCheck</literal> in your rule, like this:"
msgstr "E' possibile realizzare dei controlli di permesso (che consentono l'accesso a tutte le funzioni per un determinato obiettivo) basati su wildcard omettendo il vincolo <literal>action</literal> per il <literal>PermissionCheck</literal> nella regola, in questo modo:"
#. Tag: programlisting
-#: Security.xml:3108
+#: Security.xml:3114
#, no-c-format
msgid ""
"<![CDATA[rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
@@ -4035,210 +4047,210 @@
" ]]>"
#. Tag: para
-#: Security.xml:3110
+#: Security.xml:3116
#, no-c-format
msgid "This rule allows users with the <literal>admin</literal> role to perform <emphasis>any</emphasis> action for any <literal>customer</literal> permission check."
msgstr "Questa regola consente agli utenti con il ruolo <literal>admin</literal> di eseguire <emphasis>qualsiasi</emphasis> azione per qualsiasi controllo di permesso su <literal>customer</literal>."
#. Tag: title
-#: Security.xml:3120
+#: Security.xml:3126
#, no-c-format
msgid "PersistentPermissionResolver"
msgstr "PersistentPermissionResolver"
#. Tag: para
-#: Security.xml:3122
+#: Security.xml:3128
#, no-c-format
msgid "Another built-in permission resolver provided by Seam, <literal>PersistentPermissionResolver</literal> allows permissions to be loaded from persistent storage, such as a relational database. This permission resolver provides ACL style instance-based security, allowing for specific object permissions to be assigned to individual users and roles. It also allows for persistent, arbitrarily-named permission targets (not necessarily object/class based) to be assigned in the same way."
msgstr "Un altro risolutore di permessi incluso in Seam, il <literal>PersistentPermissionResolver</literal> consente di caricare i permessi da un dispositivo di memorizzazione persistente, come un database relazionale. Questo risolutore di permessi fornisce una sicurezza orientata alle istanze in stile ACL (Access Control List), permettendo di assegnare specifici permessi sull'oggetto a utenti e ruoli. Allo stesso modo permette inoltre di assegnare in modo persistente permessi con un nome arbitrario (non necessariamente basato sull'oggetto o la classe). "
#. Tag: para
-#: Security.xml:3133
+#: Security.xml:3139
#, no-c-format
msgid "Before it can be used, <literal>PersistentPermissionResolver</literal> must be configured with a valid <literal>PermissionStore</literal> in <literal>components.xml</literal>. If not configured, it will attempt to use the default permission store, <literal>JpaIdentityStore</literal> (see section further down for details). To use a permission store other than the default, configure the <literal>permission-store</literal> property as follows:"
msgstr "Prima di essere usato il <literal>PersistentPermissionResolver</literal> deve essere configurato con un <literal>PermissionStore</literal> valido in <literal>components.xml</literal>. Se non è configurato, proverà ad usare il permission store di default, <literal>JpaIdentityStore</literal> (vedi il paragrafo successivo per i dettagli). Per usare un permission store diverso da quello di default, occorre configurare la proprietà <literal>permission-store</literal> in questo modo:"
#. Tag: programlisting
-#: Security.xml:3141
+#: Security.xml:3147
#, no-c-format
msgid "<![CDATA[ <security:persistent-permission-resolver permission-store=\"#{myCustomPermissionStore}\"/>]]>"
msgstr "<![CDATA[ <security:persistent-permission-resolver permission-store=\"#{myCustomPermissionStore}\"/>]]>"
#. Tag: title
-#: Security.xml:3146
+#: Security.xml:3152
#, no-c-format
msgid "Permission Stores"
msgstr "I Permission Store"
#. Tag: para
-#: Security.xml:3148
+#: Security.xml:3154
#, no-c-format
msgid "A permission store is required for <literal>PersistentPermissionResolver</literal> to connect to the backend storage where permissions are persisted. Seam provides one <literal>PermissionStore</literal> implementation out of the box, <literal>JpaPermissionStore</literal>, which is used to store permissions inside a relational database. It is possible to write your own permission store by implementing the <literal>PermissionStore</literal> interface, which defines the following methods:"
msgstr "Il <literal>PersistentPermissionManager</literal> richiede un permission store per connettersi al dispositivo di memorizzazione dove sono registrati i permessi. Seam fornisce una implementazione di <literal>PermissionStore</literal> già fatta, <literal>JpaPermissionStore</literal>, che viene usata per memorizzare i permessi in un database relazionale. E' possibile scrivere il proprio permission store implementando l'interfaccia <literal>PermissionStore</literal>, che definisce i seguenti metodi:"
#. Tag: title
-#: Security.xml:3158
+#: Security.xml:3164
#, no-c-format
msgid "PermissionStore interface"
msgstr "Interfaccia PermissionStore"
#. Tag: literal
-#: Security.xml:3184
-#: Security.xml:3203
-#: Security.xml:3222
-#: Security.xml:3805
-#: Security.xml:3824
+#: Security.xml:3190
+#: Security.xml:3209
+#: Security.xml:3228
+#: Security.xml:3811
+#: Security.xml:3830
#, no-c-format
msgid "List<Permission>"
msgstr "List<Permission>"
#. Tag: literal
-#: Security.xml:3189
-#: Security.xml:3829
+#: Security.xml:3195
+#: Security.xml:3835
#, no-c-format
msgid "listPermissions(Object target)"
msgstr "listPermissions(Object target)"
#. Tag: para
-#: Security.xml:3193
+#: Security.xml:3199
#, no-c-format
msgid "This method should return a <literal>List</literal> of <literal>Permission</literal> objects representing all the permissions granted for the specified target object."
msgstr "Questo metodo deve restituire una <literal>List</literal> di oggetti <literal>Permission</literal> che rappresenti tutti i permessi concessi per l'oggetto indicato come obiettivo."
#. Tag: literal
-#: Security.xml:3208
-#: Security.xml:3810
+#: Security.xml:3214
+#: Security.xml:3816
#, no-c-format
msgid "listPermissions(Object target, String action)"
msgstr "listPermissions(Object target, String action)"
#. Tag: para
-#: Security.xml:3212
+#: Security.xml:3218
#, no-c-format
msgid "This method should return a <literal>List</literal> of <literal>Permission</literal> objects representing all the permissions with the specified action, granted for the specified target object."
msgstr "Questo metodo deve restituire una <literal>List</literal> di oggetti <literal>Permission</literal> che rappresenti tutti i permessi sull'azione specificata, concessi per l'oggetto indicato come obiettivo."
#. Tag: literal
-#: Security.xml:3227
+#: Security.xml:3233
#, no-c-format
msgid "listPermissions(Set<Object> targets, String action)"
msgstr "listPermissions(Set<Object> targets, String action)"
#. Tag: para
-#: Security.xml:3231
+#: Security.xml:3237
#, no-c-format
msgid "This method should return a <literal>List</literal> of <literal>Permission</literal> objects representing all the permissions with the specified action, granted for the specified set of target objects."
msgstr "Questo metodo deve restituire una <literal>List</literal> di oggetti <literal>Permission</literal> che rappresenti tutti i permessi sull'azione specificata concessi per l'insieme di oggetti indicati come obiettivi."
#. Tag: literal
-#: Security.xml:3247
+#: Security.xml:3253
#, no-c-format
msgid "grantPermission(Permission)"
msgstr "grantPermission(Permission)"
#. Tag: para
-#: Security.xml:3251
+#: Security.xml:3257
#, no-c-format
msgid "This method should persist the specified <literal>Permission</literal> object to the backend storage, returning true if successful."
msgstr "Questo metodo deve rendere persistente l'oggetto <literal>Permission</literal> specificato nel dispositivo di memorizzazione, restituendo vero se l'operazione si conclude senza errori."
#. Tag: literal
-#: Security.xml:3266
-#: Security.xml:3867
+#: Security.xml:3272
+#: Security.xml:3873
#, no-c-format
msgid "grantPermissions(List<Permission> permissions)"
msgstr "grantPermissions(List<Permission> permissions)"
#. Tag: para
-#: Security.xml:3270
+#: Security.xml:3276
#, no-c-format
msgid "This method should persist all of the <literal>Permission</literal> objects contained in the specified <literal>List</literal>, returning true if successful."
msgstr "Questo metodo deve rendere persisistenti tutti gli oggetti <literal>Permission</literal> contenuti nella <literal>List</literal> specificata, restituendo vero se l'operazione si conclude senza errori."
#. Tag: literal
-#: Security.xml:3285
-#: Security.xml:3886
+#: Security.xml:3291
+#: Security.xml:3892
#, no-c-format
msgid "revokePermission(Permission permission)"
msgstr "revokePermission(Permission permission)"
#. Tag: para
-#: Security.xml:3289
+#: Security.xml:3295
#, no-c-format
msgid "This method should remove the specified <literal>Permission</literal> object from persistent storage."
msgstr "Questo metodo deve rimuove l'oggetto <literal>Permission</literal> specificato dal dispositivo di memorizzazione."
#. Tag: literal
-#: Security.xml:3303
-#: Security.xml:3905
+#: Security.xml:3309
+#: Security.xml:3911
#, no-c-format
msgid "revokePermissions(List<Permission> permissions)"
msgstr "revokePermissions(List<Permission> permissions)"
#. Tag: para
-#: Security.xml:3307
+#: Security.xml:3313
#, no-c-format
msgid "This method should remove all of the <literal>Permission</literal> objects in the specified list from persistent storage."
msgstr "Questo metodo deve rimuovere dal dispositivo di memorizzazione tutti gli oggetti <literal>Permission</literal> specificati nella lista."
#. Tag: literal
-#: Security.xml:3317
-#: Security.xml:3919
+#: Security.xml:3323
+#: Security.xml:3925
#, no-c-format
msgid "List<String>"
msgstr "List<String>"
#. Tag: literal
-#: Security.xml:3322
-#: Security.xml:3924
+#: Security.xml:3328
+#: Security.xml:3930
#, no-c-format
msgid "listAvailableActions(Object target)"
msgstr "listAvailableActions(Object target)"
#. Tag: para
-#: Security.xml:3326
+#: Security.xml:3332
#, no-c-format
msgid "This method should return a list of all the available actions (as Strings) for the class of the specified target object. It is used in conjunction with permission management to build the user interface for granting specific class permissions (see section further down)."
msgstr "Questo metodo deve restituire una lista di tutte le azioni disponibili (sotto forma di String) per la classe dell'oggetto specificato. Viene usato dalla gestione dei permessi per costruire l'interfaccia utente con cui si concedono i permessi sulle varie classi (vedi il paragrafo più avanti)."
#. Tag: title
-#: Security.xml:3340
+#: Security.xml:3346
#, no-c-format
msgid "JpaPermissionStore"
msgstr "JpaPermissionStore"
#. Tag: para
-#: Security.xml:3342
+#: Security.xml:3348
#, no-c-format
msgid "This is the default <literal>PermissionStore</literal> implementation (and the only one provided by Seam), which uses a relational database to store permissions. Before it can be used it must be configured with either one or two entity classes for storing user and role permissions. These entity classes must be annotated with a special set of security annotations to configure which properties of the entity correspond to various aspects of the permissions being stored."
msgstr "E' l'implementazione di default di <literal>PermissionStore</literal> (e l'unica fornita da Seam), che usa un database relazionale per memorizzare i permessi. Prima di poter essere usata deve essere configurata con una o due classi per la memorizzazione dei permessi su utenti e ruoli. Queste classi entità devono essere annotate con uno speciale insieme di annotazioni relative alla sicurezza per configurare quali proprietà dell'entità corrispondono alle diverse caratteristiche dei permessi che devono essere memorizzati."
#. Tag: para
-#: Security.xml:3350
+#: Security.xml:3356
#, no-c-format
msgid "If you wish to use the same entity (i.e. a single database table) to store both user and role permissions, then only the <literal>user-permission-class</literal> property is required to be configured. If you wish to use separate tables for storing user and role permissions, then in addition to the <literal>user-permission-class</literal> property you must also configure the <literal>role-permission-class</literal> property."
msgstr "Se si vuole usare la stessa entità (cioè una sola tabella sul database) per memorizzare sia i permessi degli utenti che quelli dei ruoli, allora è necessario configurare solo la proprietà <literal>user-permission-class</literal>. Se si vogliono usare due tabelle distinte per memorizzare i permessi degli utenti e quelli dei ruoli, allora in aggiunta alla proprietà <literal>user-permission-class</literal> si dovrà configurare anche la proprietà <literal>role-permission-class</literal>."
#. Tag: para
-#: Security.xml:3357
+#: Security.xml:3363
#, no-c-format
msgid "For example, to configure a single entity class to store both user and role permissions:"
msgstr "Ad esempio, per configurare una sola classe entità per memorizzare sia i permessi degli utenti che quelli dei ruoli:"
#. Tag: programlisting
-#: Security.xml:3359
+#: Security.xml:3365
#, no-c-format
msgid "<![CDATA[ <security:jpa-permission-store user-permission-class=\"com.acme.model.AccountPermission\"/>]]>"
msgstr "<![CDATA[ <security:jpa-permission-store user-permission-class=\"com.acme.model.AccountPermission\"/>]]>"
#. Tag: para
-#: Security.xml:3361
+#: Security.xml:3367
#, no-c-format
msgid "To configure separate entity classes for storing user and role permissions:"
msgstr "Per configurare classi entità separate per la memorizzazione dei permessi di utenti e ruoli:"
#. Tag: programlisting
-#: Security.xml:3363
+#: Security.xml:3369
#, no-c-format
msgid ""
"<![CDATA[ <security:jpa-permission-store user-permission-class=\"com.acme.model.UserPermission\"\n"
@@ -4248,120 +4260,120 @@
" role-permission-class=\"com.acme.model.RolePermission\"/>]]>"
#. Tag: title
-#: Security.xml:3366
+#: Security.xml:3372
#, no-c-format
msgid "Permission annotations"
msgstr "Annotazioni relative ai permessi"
#. Tag: para
-#: Security.xml:3368
+#: Security.xml:3374
#, no-c-format
msgid "As mentioned, the entity classes that contain the user and role permissions must be configured with a special set of annotations, contained within the <literal>org.jboss.seam.annotations.security.permission</literal> package. The following table lists each of these annotations along with a description of how they are used:"
msgstr "Come già detto, le classi entità che contengono i permessi degli utenti e dei ruoli devono essere configurate con uno speciale insieme di annotazioni contenute nel pacchetto <literal>org.jboss.seam.annotations.security.permission</literal>. La seguente tabella elenca queste annotazioni insieme ad una descrizione su come sono usate:"
#. Tag: title
-#: Security.xml:3375
+#: Security.xml:3381
#, no-c-format
msgid "Entity Permission annotations"
msgstr "Annotazioni per le entità dei permessi"
#. Tag: para
-#: Security.xml:3388
-#: Security.xml:3551
+#: Security.xml:3394
+#: Security.xml:3557
#, no-c-format
msgid "Target"
msgstr "Obiettivo"
#. Tag: literal
-#: Security.xml:3401
+#: Security.xml:3407
#, no-c-format
msgid "@PermissionTarget"
msgstr "@PermissionTarget"
#. Tag: literal
-#: Security.xml:3406
-#: Security.xml:3425
-#: Security.xml:3444
-#: Security.xml:3463
-#: Security.xml:3482
+#: Security.xml:3412
+#: Security.xml:3431
+#: Security.xml:3450
+#: Security.xml:3469
+#: Security.xml:3488
#, no-c-format
msgid "FIELD,METHOD"
msgstr "FIELD,METHOD"
#. Tag: para
-#: Security.xml:3410
+#: Security.xml:3416
#, no-c-format
msgid "This annotation identifies the property of the entity that will contain the permission target. The property should be of type <literal>java.lang.String</literal>."
msgstr "Questa annotazione identifica la proprietà dell'entità che contiene l'obiettivo del permesso. La proprietà deve essere di tipo <literal>java.lang.Sting</literal>."
#. Tag: literal
-#: Security.xml:3420
+#: Security.xml:3426
#, no-c-format
msgid "@PermissionAction"
msgstr "@PermissionAction"
#. Tag: para
-#: Security.xml:3429
+#: Security.xml:3435
#, no-c-format
msgid "This annotation identifies the property of the entity that will contain the permission action. The property should be of type <literal>java.lang.String</literal>."
msgstr "Questa annotazione identifica la proprietà dell'entità che contiene l'azione. La proprietà deve essere di tipo <literal>java.lang.String</literal>."
#. Tag: literal
-#: Security.xml:3439
+#: Security.xml:3445
#, no-c-format
msgid "@PermissionUser"
msgstr "@PermissionUser"
#. Tag: para
-#: Security.xml:3448
+#: Security.xml:3454
#, no-c-format
msgid "This annotation identifies the property of the entity that will contain the recipient user for the permission. It should be of type <literal>java.lang.String</literal> and contain the user's username."
msgstr "Questa annotazione identifica la proprietà dell'entità che contiene l'utente a cui viene concesso il permesso. Deve essere di tipo <literal>java.lang.String</literal> e contenere la username dell'utente."
#. Tag: literal
-#: Security.xml:3458
+#: Security.xml:3464
#, no-c-format
msgid "@PermissionRole"
msgstr "@PermissionRole"
#. Tag: para
-#: Security.xml:3467
+#: Security.xml:3473
#, no-c-format
msgid "This annotation identifies the property of the entity that will contain the recipient role for the permission. It should be of type <literal>java.lang.String</literal> and contain the role name."
msgstr "Questa annotazione identifica la proprietà dell'entità che contiene il ruolo a cui viene concesso il premesso. Deve essere di tipo <literal>java.lang.String</literal> e contenere i nome del ruolo."
#. Tag: literal
-#: Security.xml:3477
+#: Security.xml:3483
#, no-c-format
msgid "@PermissionDiscriminator"
msgstr "@PermissionDiscriminator"
#. Tag: para
-#: Security.xml:3486
+#: Security.xml:3492
#, no-c-format
msgid "This annotation should be used when the same entity/table is used to store both user and role permissions. It identifies the property of the entity that is used to discriminate between user and role permissions. By default, if the column value contains the string literal <literal>user</literal>, then the record will be treated as a user permission. If it contains the string literal <literal>role</literal>, then it will be treated as a role permission. It is also possible to override these defaults by specifying the <literal>userValue</literal> and <literal>roleValue</literal> properties within the annotation. For example, to use <literal>u</literal> and <literal>r</literal> instead of <literal>user</literal> and <literal>role</literal>, the annotation would be written like this:"
msgstr "Questa annotazione deve essere usata quando la stessa entità/tabella viene usata per memorizzare sia i permessi degli utenti che quelli dei ruoli. Essa identifica la proprietà dell'entità che è usata per discriminare tra i permessi degli utenti e quelli dei ruoli. Per default, se il valore della colonna contiene la stringa <literal>user</literal>, allora il record sarà trattato come un permesso utente. Se contiene la stringa <literal>role</literal>, allora sarà trattato come un permesso del ruolo. E' anche possibile sovrascrivere questi valori specificando le proprietà <literal>userValue</literal> e <literal>roleValue</literal> all'interno delle annotazioni. Ad esempio, per usere <literal>u</literal> e <literal>r</literal> invece di <literal>user</literal> e <literal>role</literal>, le annotazioni dovranno essere scritte in questo modo:"
#. Tag: programlisting
-#: Security.xml:3496
+#: Security.xml:3502
#, no-c-format
msgid "<![CDATA[ @PermissionDiscriminator(userValue = \"u\", roleValue = \"r\")]]>"
msgstr "<![CDATA[ @PermissionDiscriminator(userValue = \"u\", roleValue = \"r\")]]>"
#. Tag: title
-#: Security.xml:3507
+#: Security.xml:3513
#, no-c-format
msgid "Example Entity"
msgstr "Esempio di entità"
#. Tag: para
-#: Security.xml:3509
+#: Security.xml:3515
#, no-c-format
msgid "Here is an example of an entity class that is used to store both user and role permissions. The following class can be found inside the SeamSpace example:"
msgstr "Ecco un esempio di una classe entità che viene usata per memorizzare sia i permessi degli utenti che quelli dei ruoli. La seguente classe si trova nell'applicazione di esempio SeamSpace:"
#. Tag: programlisting
-#: Security.xml:3514
+#: Security.xml:3520
#, no-c-format
msgid ""
"<![CDATA[\n"
@@ -4477,68 +4489,68 @@
" ]]>"
#. Tag: para
-#: Security.xml:3516
+#: Security.xml:3522
#, no-c-format
msgid "As can be seen in the above example, the <literal>getDiscriminator()</literal> method has been annotated with the <literal>@PermissionDiscriminator</literal> annotation, to allow <literal>JpaPermissionStore</literal> to determine which records represent user permissions and which represent role permissions. In addition, it can also be seen that the <literal>getRecipient()</literal> method is annotated with both <literal>@PermissionUser</literal> and <literal>@PermissionRole</literal> annotations. This is perfectly valid, and simply means that the <literal>recipient</literal> property of the entity will either contain the name of the user or the name of the role, depending on the value of the <literal>discriminator</literal> property."
msgstr "Come si vede dall'esempio precedente, il metodo <literal>getDiscriminator()</literal> è stato annotato con l'annotazione <literal>@PermissionDiscriminator</literal> per consentire a <literal>JpaPermissionStore</literal> di determinare quali record rappresentano i permessi degli utenti e quali rappresentano i permessi dei ruoli. Inoltre si può vedere che il metodo <literal>getRecipient()</literal> è annotato sia con l'annotazione <literal>@PermissionUser</literal> che con <literal>@PermissionRole</literal>. Ciò è perfettamente valido e significa semplicemente che la proprietà <literal>recipient</literal> dell'entità conterrà sia il nome dell'utente che quello del ruolo, in funzione del valore della proprietà <literal>discriminator</literal>."
#. Tag: title
-#: Security.xml:3529
+#: Security.xml:3535
#, no-c-format
msgid "Class-specific Permission Configuration"
msgstr "Configurazioni dei permessi specifiche per le classi"
#. Tag: para
-#: Security.xml:3531
+#: Security.xml:3537
#, no-c-format
msgid "A further set of class-specific annotations can be used to configure a specific set of allowable permissions for a target class. These permissions can be found in the <literal>org.jboss.seam.annotation.security.permission</literal> package:"
msgstr "Un ulteriore insieme di annotazioni specifiche per le classi può essere usato per specificare i permessi consentiti per una determinata classe obiettivo. Questi permessi si possono trovare nel pacchetto <literal>org.jboss.seam.annotation.security.permission</literal>:"
#. Tag: title
-#: Security.xml:3538
+#: Security.xml:3544
#, no-c-format
msgid "Class Permission Annotations"
msgstr "Annotazioni per i permessi sulle classi"
#. Tag: literal
-#: Security.xml:3564
+#: Security.xml:3570
#, no-c-format
msgid "@Permissions"
msgstr "@Permissions"
#. Tag: literal
-#: Security.xml:3569
-#: Security.xml:3587
+#: Security.xml:3575
+#: Security.xml:3593
#, no-c-format
msgid "TYPE"
msgstr "TYPE"
#. Tag: para
-#: Security.xml:3573
+#: Security.xml:3579
#, no-c-format
msgid "A container annotation, this annotation may contain an array of <literal>@Permission</literal> annotations."
msgstr "E' una annotazione contenitore, che può contenere un elenco di annotazioni <literal>@Permission</literal>."
#. Tag: literal
-#: Security.xml:3582
+#: Security.xml:3588
#, no-c-format
msgid "@Permission"
msgstr "@Permission"
#. Tag: para
-#: Security.xml:3591
+#: Security.xml:3597
#, no-c-format
msgid "This annotation defines a single allowable permission action for the target class. Its <literal>action</literal> property must be specified, and an optional <literal>mask</literal> property may also be specified if permission actions are to be persisted as bitmasked values (see next section)."
msgstr "Questa annotazione definisce una singola azione regolata da un permesso per la classe obiettivo. La sua proprietà <literal>action</literal> deve essere specificata e una proprietà opzionale <literal>mask</literal> può essere specificata se le azioni regolate da un permesso devono essere memorizzate come valori di una maschera di bit (vedi il paragrafo seguente)."
#. Tag: para
-#: Security.xml:3603
+#: Security.xml:3609
#, no-c-format
msgid "Here's an example of the above annotations in action. The following class can also be found in the SeamSpace example:"
msgstr "Ecco un esempio di queste annotazioni al lavoro. La seguente classe si trova anch'essa nell'applicazione di esempio SeamSpace:"
#. Tag: programlisting
-#: Security.xml:3607
+#: Security.xml:3613
#, no-c-format
msgid ""
"<![CDATA[@Permissions({\n"
@@ -4556,31 +4568,31 @@
"public class MemberImage implements Serializable {]]>"
#. Tag: para
-#: Security.xml:3609
+#: Security.xml:3615
#, no-c-format
msgid "This example demonstrates how two allowable permission actions, <literal>view</literal> and <literal>comment</literal> can be declared for the entity class <literal>MemberImage</literal>."
msgstr "Questo esempio dimostra come due possibili azioni regolate da permesso, <literal>view</literal> e <literal>comment</literal> possono essere dichiarate per la classe entità <literal>MemberImage</literal>."
#. Tag: title
-#: Security.xml:3617
+#: Security.xml:3623
#, no-c-format
msgid "Permission masks"
msgstr "Maschere di bit per i permessi"
#. Tag: para
-#: Security.xml:3619
+#: Security.xml:3625
#, no-c-format
msgid "By default, multiple permissions for the same target object and recipient will be persisted as a single database record, with the <literal>action</literal> property/column containing a comma-separated list of the granted actions. To reduce the amount of physical storage required to persist a large number of permissions, it is possible to use a bitmasked integer value (instead of a comma-separated list) to store the list of permission actions."
msgstr "Per default più permessi per lo stesso obbiettivo e destinatario vengono memorizzati un singolo record sul database, con la proprietà/colonna <literal>action</literal> contenente un elenco delle azioni concesse separate da una virgola. Per ridurre la quantità di spazio fisico richiesto per memorizzare un numero elevato di permessi è possibile usare un valore intero come maschera di bit (al posto di un elenco di valori separati da virgole) per memorizzare l'elenco delle azioni consentite."
#. Tag: para
-#: Security.xml:3626
+#: Security.xml:3632
#, no-c-format
msgid "For example, if recipient \"Bob\" is granted both the <literal>view</literal> and <literal>comment</literal> permissions for a particular <literal>MemberImage</literal> (an entity bean) instance, then by default the <literal>action</literal> property of the permission entity will contain \"<literal>view,comment</literal>\", representing the two granted permission actions. Alternatively, if using bitmasked values for the permission actions, as defined like so:"
msgstr "Ad esempio, se al destinatario \"Pippo\" è concesso sia il permesso <literal>view</literal> che il permesso <literal>comment</literal> per una particolare istanza di <literal>MemberImage</literal> (un entity bean), allora per default la proprietà dell'entità permesso conterrà \"<literal>view,comment</literal>\", che rappresenta la concessione di due azioni. In alternativa, usando i valori di una maschera di bit per le azioni, si può definire in questo modo:"
#. Tag: programlisting
-#: Security.xml:3633
+#: Security.xml:3639
#, no-c-format
msgid ""
"<![CDATA[@Permissions({\n"
@@ -4598,37 +4610,37 @@
"public class MemberImage implements Serializable {]]>"
#. Tag: para
-#: Security.xml:3635
+#: Security.xml:3641
#, no-c-format
msgid "The <literal>action</literal> property will instead simply contain \"3\" (with both the 1 bit and 2 bit switched on). Obviously for a large number of allowable actions for any particular target class, the storage required for the permission records is greatly reduced by using bitmasked actions."
msgstr "La proprietà <literal>action</literal> conterrà semplicemente \"3\" (con sia il bit 1 che il bit 2 alzati). Ovviamente per un numero elevato di azioni da consentire per una particolare classe obiettivo, lo spazio richiesto per memorizzare i record dei permessi si riduce grandemente usando le azioni con la maschera di bit."
#. Tag: para
-#: Security.xml:3641
+#: Security.xml:3647
#, no-c-format
msgid "Obviously, it is very important that the <literal>mask</literal> values specified are powers of 2."
msgstr "E' molto importante che i valori assegnati a <literal>mask</literal> siano specificati come potenze di 2."
#. Tag: title
-#: Security.xml:3647
+#: Security.xml:3653
#, no-c-format
msgid "Identifier Policy"
msgstr "Risoluzione dell'identificatore"
#. Tag: para
-#: Security.xml:3649
+#: Security.xml:3655
#, no-c-format
msgid "When storing or looking up permissions, <literal>JpaPermissionStore</literal> must be able to uniquely identify specific object instances to effectively operate on its permissions. To achieve this, an <emphasis>identifier strategy</emphasis> may be assigned to each target class for the generation of unique identifier values. Each identifier strategy implementation knows how to generate unique identifiers for a particular type of class, and it is a simple matter to create new identifier strategies."
msgstr "Quando <literal>JpaPermissionStore</literal> memorizza o cerca un permesso deve essere in grado di identificare univocamente le istanze degli oggetti sui cui permessi deve operare. Per ottenere questo occorre assegnare una <emphasis>stragegia di risoluzione dell'identificatore</emphasis> per ciascuna classe obiettivo, in modo da generare i valori identificativi univoci. Ciascuna implementazione della strategia di risoluzione sa come generare gli identificativi univoci per un particolare tipo di classe ed è solo questione di creare nuove strategia di risoluzione."
#. Tag: para
-#: Security.xml:3657
+#: Security.xml:3663
#, no-c-format
msgid "The <literal>IdentifierStrategy</literal> interface is very simple, declaring only two methods:"
msgstr "L'interfaccia <literal>IdentifierStrategy</literal> è molto semplice e dichiara solo due metodi:"
#. Tag: programlisting
-#: Security.xml:3661
+#: Security.xml:3667
#, no-c-format
msgid ""
"<![CDATA[public interface IdentifierStrategy {\n"
@@ -4642,37 +4654,37 @@
"}]]>"
#. Tag: para
-#: Security.xml:3663
+#: Security.xml:3669
#, no-c-format
msgid "The first method, <literal>canIdentify()</literal> simply returns <literal>true</literal> if the identifier strategy is capable of generating a unique identifier for the specified target class. The second method, <literal>getIdentifier()</literal> returns the unique identifier value for the specified target object."
msgstr "Il primo metodo, <literal>canIdentify()</literal> restituisce semplicemente <literal>true</literal> se la strategia di risoluzione è in grado di generare un identificativo univoco per la classe obiettivo specificata. Il secondo metodo, <literal>getIdentifier()</literal> restituisce il valore dell'identificativo univoco per l'oggetto obiettivo specificato."
#. Tag: para
-#: Security.xml:3669
+#: Security.xml:3675
#, no-c-format
msgid "Seam provides two <literal>IdentifierStrategy</literal> implementations, <literal>ClassIdentifierStrategy</literal> and <literal>EntityIdentifierStrategy</literal> (see next sections for details)."
msgstr "Seam fornisce due implementazioni di <literal>IdentifierStrategy</literal>, <literal>ClassIdentifierStrategy</literal> e <literal>EntityIdentifierStrategy</literal> (vedi i prossimi paragrafi per i dettagli)."
#. Tag: para
-#: Security.xml:3674
+#: Security.xml:3680
#, no-c-format
msgid "To explicitly configure a specific identifier strategy to use for a particular class, it should be annotated with <literal>org.jboss.seam.annotations.security.permission.Identifier</literal>, and the value should be set to a concrete implementation of the <literal>IdentifierStrategy</literal> interface. An optional <literal>name</literal> property can also be specified, the effect of which is dependent upon the actual <literal>IdentifierStrategy</literal> implementation used."
msgstr "Per configurare esplicitamente la strategia di risoluzione da usare per una particolare classe, essa deve essere annotata con <literal>org.jboss.seam.annotations.security.permission.Identifier</literal>, e il valore deve essere impostato a una implementazione dell'interfaccia <literal>IdentifierStrategy</literal>. Una proprietà facoltativa <literal>name</literal> può essere specificata, e il suo effetto dipende dall'implementazione di <literal>IdentifierStrategy</literal> usata."
#. Tag: title
-#: Security.xml:3684
+#: Security.xml:3690
#, no-c-format
msgid "ClassIdentifierStrategy"
msgstr "ClassIdentifierStrategy"
#. Tag: para
-#: Security.xml:3686
+#: Security.xml:3692
#, no-c-format
msgid "This identifier strategy is used to generate unique identifiers for classes, and will use the value of the <literal>name</literal> (if specified) in the <literal>@Identifier</literal> annotation. If there is no <literal>name</literal> property provided, then it will attempt to use the component name of the class (if the class is a Seam component), or as a last resort it will create an identifier based on the name of the class (excluding the package name). For example, the identifier for the following class will be \"<literal>customer</literal>\":"
msgstr "Questa strategia di risoluzione degli identificatori è usata per generare gli identificatori univoci per le classi e userà il valore della proprietà <literal>name</literal> (se indicato) nell'annotazione <literal>@Identifier</literal>. Se la proprietà <literal>name</literal> non è indicata, allora tenterà di usare il nome del componente della classe (se la classe è un componente Seam), oppure, come ultima risorsa creerà un identificatore basato sul nome della classe (escludendo il nome del pacchetto). Ad esempio, l'identificatore per la seguente classe sarà \"<literal>customer</literal>\":"
#. Tag: programlisting
-#: Security.xml:3695
+#: Security.xml:3701
#, no-c-format
msgid ""
"<![CDATA[@Identifier(name = \"customer\")\n"
@@ -4682,13 +4694,13 @@
"public class Customer {]]>"
#. Tag: para
-#: Security.xml:3697
+#: Security.xml:3703
#, no-c-format
msgid "The identifier for the following class will be \"<literal>customerAction</literal>\":"
msgstr "L'identificatore per la seguente classe sarà \"<literal>customerAction</literal>\":"
#. Tag: programlisting
-#: Security.xml:3701
+#: Security.xml:3707
#, no-c-format
msgid ""
"<![CDATA[@Name(\"customerAction\")\n"
@@ -4698,31 +4710,31 @@
"public class CustomerAction { ]]>"
#. Tag: para
-#: Security.xml:3703
+#: Security.xml:3709
#, no-c-format
msgid "Finally, the identifier for the following class will be \"<literal>Customer</literal>\":"
msgstr "Infine, l'identificatore per la seguente classe sarà \"<literal>Customer</literal>\":"
#. Tag: programlisting
-#: Security.xml:3707
+#: Security.xml:3713
#, no-c-format
msgid "<![CDATA[public class Customer { ]]>"
msgstr "<![CDATA[public class Customer { ]]>"
#. Tag: title
-#: Security.xml:3712
+#: Security.xml:3718
#, no-c-format
msgid "EntityIdentifierStrategy"
msgstr "EntityIdentifierStrategy"
#. Tag: para
-#: Security.xml:3714
+#: Security.xml:3720
#, no-c-format
msgid "This identifier strategy is used to generate unique identifiers for entity beans. It does so by concatenating the entity name (or otherwise configured name) with a string representation of the primary key value of the entity. The rules for generating the name section of the identifier are similar to <literal>ClassIdentifierStrategy</literal>. The primary key value (i.e. the <emphasis>id</emphasis> of the entity) is obtained using the <literal>PersistenceProvider</literal> component, which is able to correctly determine the value regardless of which persistence implementation is used within the Seam application. For entities not annotated with <literal>@Entity</literal>, it is necessary to explicitly configure the identifier strategy on the entity class itself, for example:"
msgstr "Questa strategia di risoluzione è usata per generare valori di identificatori univoci per gli entity bean. Quello che fa è concatenare il nome dell'entità (o un nome configurato in altro modo) con una stringa che rappresenta la chiave primaria dell'entità. Le regole per generare la parte nome dell'identificatore sono simili a <literal>ClassIdentifierStrategy</literal>. La chiave primaria (cioè l'<emphasis>id</emphasis> dell'entità) viene ottenuto usando il componente <literal>PersistenceProvider</literal>, che è in grado di determinarne il valore a prescindere dall'implementazione della persistenza utilizzata dall'applicazione Seam. Per le entità non annotate con <literal>@Entity</literal> è necessario configurare esplicitamente la strategia di risoluzione dell'identificatore nella classe entità stessa, ad esempio:"
#. Tag: programlisting
-#: Security.xml:3725
+#: Security.xml:3731
#, no-c-format
msgid ""
"<![CDATA[@Identifier(value = EntityIdentifierStrategy.class)\n"
@@ -4732,13 +4744,13 @@
"public class Customer { ]]>"
#. Tag: para
-#: Security.xml:3727
+#: Security.xml:3733
#, no-c-format
msgid "For an example of the type of identifier values generated, assume we have the following entity class:"
msgstr "Per avere un esempio del tipo di valori di identificatore generati, supponiamo di avere la seguente classe entità:"
#. Tag: programlisting
-#: Security.xml:3731
+#: Security.xml:3737
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
@@ -4776,13 +4788,13 @@
"}]]>"
#. Tag: para
-#: Security.xml:3733
+#: Security.xml:3739
#, no-c-format
msgid "For a <literal>Customer</literal> instance with an <literal>id</literal> value of <literal>1</literal>, the value of the identifier would be \"<literal>Customer:1</literal>\". If the entity class is annotated with an explicit identifier name, like so:"
msgstr "Per una istanza di <literal>Customer</literal> con un valore di <literal>id</literal> pari a <literal>1</literal>, il valore dell'identificatore sarà \"<literal>Customer:1</literal>\". Se l'entità è annotata con un nome esplicito di identificatore, come questo:"
#. Tag: programlisting
-#: Security.xml:3739
+#: Security.xml:3745
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
@@ -4794,37 +4806,37 @@
"public class Customer { ]]>"
#. Tag: para
-#: Security.xml:3741
+#: Security.xml:3747
#, no-c-format
msgid "Then a <literal>Customer</literal> with an <literal>id</literal> value of <literal>123</literal> would have an identifier value of \"<literal>cust:123</literal>\"."
msgstr "Allora un <literal>Customer</literal> con un <literal>id</literal> pari a <literal>123</literal> avrà come identificatore \"<literal>cust:123</literal>\"."
#. Tag: title
-#: Security.xml:3754
+#: Security.xml:3760
#, no-c-format
msgid "Permission Management"
msgstr "Gestione dei permessi"
#. Tag: para
-#: Security.xml:3756
+#: Security.xml:3762
#, no-c-format
msgid "In much the same way that Seam Security provides an Identity Management API for the management of users and roles, it also provides a Permissions Management API for the management of persistent user permissions, via the <literal>PermissionManager</literal> component."
msgstr "In modo del tutto simile a come la sicurezza di Seam fornisce una API per la gestione delle identità per gestire utenti e ruoli, essa fornisce anche una API per la gestione dei permessi, tramite il componente <literal>PermissionManager</literal>."
#. Tag: title
-#: Security.xml:3763
+#: Security.xml:3769
#, no-c-format
msgid "PermissionManager"
msgstr "PermissionManager"
#. Tag: para
-#: Security.xml:3765
+#: Security.xml:3771
#, no-c-format
msgid "The <literal>PermissionManager</literal> component is an application-scoped Seam component that provides a number of methods for managing permissions. Before it can be used, it must be configured with a permission store (although by default it will attempt to use <literal>JpaPermissionStore</literal> if it is available). To explicitly configure a custom permission store, specify the <literal>permission-store</literal> property in components.xml:"
msgstr "Il componente <literal>PermissionManager</literal> è un componente Seam registrato a livello application che fornisce una serie di metodi per gestire i permessi. Prima di poter essere usato deve essere configurato con un permission store (benché per default tenterà di usare il <literal>JpaPermissionStore</literal> se disponibile). Per configurare esplicitamente un permission store personalizzato, occore specificare la proprietà <literal>permission-store</literal> in components.xml:"
#. Tag: programlisting
-#: Security.xml:3772
+#: Security.xml:3778
#, no-c-format
msgid ""
"<![CDATA[\n"
@@ -4836,242 +4848,242 @@
" ]]>"
#. Tag: para
-#: Security.xml:3774
+#: Security.xml:3780
#, no-c-format
msgid "The following table describes each of the available methods provided by <literal>PermissionManager</literal>:"
msgstr "La seguente tabella descrive ciascuno dei metodi disponibili forniti da <literal>PermissionManager</literal>:"
#. Tag: title
-#: Security.xml:3779
+#: Security.xml:3785
#, no-c-format
msgid "PermissionManager API methods"
msgstr "Metodi della API PermissionManager"
#. Tag: para
-#: Security.xml:3814
-#: Security.xml:3833
+#: Security.xml:3820
+#: Security.xml:3839
#, no-c-format
msgid "Returns a list of <literal>Permission</literal> objects representing all of the permissions that have been granted for the specified target and action."
msgstr "Restituisce un elenco di oggetti <literal>Permession</literal> che rappresenta tutti i permessi che sono stati concessi all'obiettivo e all'azione specificata."
#. Tag: literal
-#: Security.xml:3848
+#: Security.xml:3854
#, no-c-format
msgid "grantPermission(Permission permission)"
msgstr "grantPermission(Permission permission)"
#. Tag: para
-#: Security.xml:3852
+#: Security.xml:3858
#, no-c-format
msgid "Persists (grants) the specified <literal>Permission</literal> to the backend permission store. Returns true if the operation was successful."
msgstr "Memorizza (concede) il <literal>Permission</literal> specificato nel permission store sottostante. Restituisce true se l'operazione si è conclusa con esito positivo."
#. Tag: para
-#: Security.xml:3871
+#: Security.xml:3877
#, no-c-format
msgid "Persists (grants) the specified list of <literal>Permission</literal>s to the backend permission store. Returns true if the operation was successful."
msgstr "Memorizza (concede) l'elenco di <literal>Permission</literal> specificato nel permission store sottostante. Restiuisce true se l'operazione si è conclusa con esito positivo."
#. Tag: para
-#: Security.xml:3890
+#: Security.xml:3896
#, no-c-format
msgid "Removes (revokes) the specified <literal>Permission</literal> from the backend permission store. Returns true if the operation was successful."
msgstr "Rimuove (revoca) il <literal>Permission</literal> specificato dal permission store sottostante. Restituisce true se l'operazione si è conclusa con esito positivo."
#. Tag: para
-#: Security.xml:3909
+#: Security.xml:3915
#, no-c-format
msgid "Removes (revokes) the specified list of <literal>Permission</literal>s from the backend permission store. Returns true if the operation was successful."
msgstr "Rimuove (revoca) l'elenco di <literal>Permission</literal> specificato dal permission store sottostante. Restituisce true se l'operazione si è conclusa con esito positivo."
#. Tag: para
-#: Security.xml:3928
+#: Security.xml:3934
#, no-c-format
msgid "Returns a list of the available actions for the specified target object. The actions that this method returns are dependent on the <literal>@Permission</literal> annotations configured on the target object's class."
msgstr "Restituisce un elenco delle azioni disponibili per l'oggetto obiettivo specificato. Le azioni che questo metodo restituisce dipendono dall'annotazione <literal>@Permission</literal> configurata nella classe dell'oggetto obiettivo."
#. Tag: title
-#: Security.xml:3943
+#: Security.xml:3949
#, no-c-format
msgid "Permission checks for PermissionManager operations"
msgstr "Verifica dei permessi sulle operazioni di PermissionManager"
#. Tag: para
-#: Security.xml:3945
+#: Security.xml:3951
#, no-c-format
msgid "Invoking the methods of <literal>PermissionManager</literal> requires that the currently-authenticated user has the appropriate authorization to perform that management operation. The following table lists the required permissions that the current user must have."
msgstr "Per chiamare un metodo di <literal>PermissionManager</literal> è richiesto che l'utente correntemente autenticato abbia le autorizzazioni appropriate per eseguire quella operazione di gestione. La seguente tabella elenca i permessi richiesti che l'utente corrente deve avere."
#. Tag: title
-#: Security.xml:3952
+#: Security.xml:3958
#, no-c-format
msgid "Permission Management Security Permissions"
msgstr "Permessi per la gestione dei permessi"
#. Tag: literal
-#: Security.xml:3976
+#: Security.xml:3982
#, no-c-format
msgid "listPermissions()"
msgstr "listPermissions()"
#. Tag: para
-#: Security.xml:3980
+#: Security.xml:3986
#, no-c-format
msgid "The specified <literal>target</literal>"
msgstr "L'<literal>obiettivo</literal> specificato"
#. Tag: literal
-#: Security.xml:3986
+#: Security.xml:3992
#, no-c-format
msgid "seam.read-permissions"
msgstr "seam.read-permissions"
#. Tag: literal
-#: Security.xml:3994
-#: Security.xml:4014
+#: Security.xml:4000
+#: Security.xml:4020
#, no-c-format
msgid "grantPermission()"
msgstr "grantPermission()"
#. Tag: para
-#: Security.xml:3998
+#: Security.xml:4004
#, no-c-format
msgid "The target of the specified <literal>Permission</literal>, or each of the targets for the specified list of <literal>Permission</literal>s (depending on which method is called)."
msgstr "L'obiettivo del <literal>Permission</literal> specificato, oppure ciascuno degli obiettivi dell'elenco specificato di <literal>Permission</literal> (in funzione di quale metodo viene chiamato)."
#. Tag: literal
-#: Security.xml:4006
-#: Security.xml:4024
-#: Security.xml:4042
+#: Security.xml:4012
+#: Security.xml:4030
+#: Security.xml:4048
#, no-c-format
msgid "seam.grant-permission"
msgstr "seam.grant-permission"
#. Tag: para
-#: Security.xml:4018
-#: Security.xml:4054
+#: Security.xml:4024
+#: Security.xml:4060
#, no-c-format
msgid "The target of the specified <literal>Permission</literal>."
msgstr "L'obiettivo del <literal>Permission</literal> specificato."
#. Tag: literal
-#: Security.xml:4032
+#: Security.xml:4038
#, no-c-format
msgid "grantPermissions()"
msgstr "grantPermissions()"
#. Tag: para
-#: Security.xml:4036
-#: Security.xml:4072
+#: Security.xml:4042
+#: Security.xml:4078
#, no-c-format
msgid "Each of the targets of the specified list of <literal>Permission</literal>s."
msgstr "Ciascuno degli obiettivi dell'elenco di <literal>Permission</literal> specificato."
#. Tag: literal
-#: Security.xml:4050
+#: Security.xml:4056
#, no-c-format
msgid "revokePermission()"
msgstr "revokePermission()"
#. Tag: literal
-#: Security.xml:4060
-#: Security.xml:4078
+#: Security.xml:4066
+#: Security.xml:4084
#, no-c-format
msgid "seam.revoke-permission"
msgstr "seam.revoke-permission"
#. Tag: literal
-#: Security.xml:4068
+#: Security.xml:4074
#, no-c-format
msgid "revokePermissions()"
msgstr "revokePermissions()"
#. Tag: title
-#: Security.xml:4091
+#: Security.xml:4097
#, no-c-format
msgid "SSL Security"
msgstr "Sicurezza SSL"
#. Tag: para
-#: Security.xml:4093
+#: Security.xml:4099
#, no-c-format
msgid "Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <literal>scheme</literal> for the page in <literal>pages.xml</literal>. The following example shows how the view <literal>/login.xhtml</literal> is configured to use HTTPS:"
msgstr "Seam include un supporto di base per servire le pagine sensibili tramite il protocollo HTTPS. Si configura facilmente specificando uno <literal>scheme</literal> per la pagina in <literal>pages.xml</literal>. Il seguente esempio mostra come la pagina <literal>/login.xhtml</literal> è configurata per usare HTTPS:"
#. Tag: programlisting
-#: Security.xml:4100
+#: Security.xml:4106
#, no-c-format
msgid "<![CDATA[<page view-id=\"/login.xhtml\" scheme=\"https\"/>]]>"
msgstr "<![CDATA[<page view-id=\"/login.xhtml\" scheme=\"https\"/>]]>"
#. Tag: para
-#: Security.xml:4102
+#: Security.xml:4108
#, no-c-format
msgid "This configuration is automatically extended to both <literal>s:link</literal> and <literal>s:button</literal> JSF controls, which (when specifying the <literal>view</literal>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <literal>/login.xhtml</literal> is configured to use it:"
msgstr "Questa configurazione viene automaticamente estesa ai controlli JSF <literal>s:link</literal> e <literal>s:button</literal>, i quali (quando viene specificata la <literal>view</literal>) faranno in modo che venga prodotto il link usando il protocollo corretto. In base al precedente esempio, il seguente link userà il protocollo HTTPS, perché <literal>/login.xhtml</literal> è configurata per usarlo:"
#. Tag: programlisting
-#: Security.xml:4109
+#: Security.xml:4115
#, no-c-format
msgid "<![CDATA[<s:link view=\"/login.xhtml\" value=\"Login\"/>]]>"
msgstr "<![CDATA[<s:link view=\"/login.xhtml\" value=\"Login\"/>]]>"
#. Tag: para
-#: Security.xml:4111
+#: Security.xml:4117
#, no-c-format
msgid "Browsing directly to a view when using the <emphasis>incorrect</emphasis> protocol will cause a redirect to the same view using the <emphasis>correct</emphasis> protocol. For example, browsing to a page that has <literal>scheme=\"https\"</literal> using HTTP will cause a redirect to the same page using HTTPS."
msgstr "Navigando direttamente sulla pagina mentre si usa il protocollo <emphasis>non corretto</emphasis> causerà una redirezione alla stessa pagina usando il protocollo <emphasis>corretto</emphasis>. Ad esempio, navigando su una pagina che ha <literal>scheme=\"https\"</literal> usando HTTP causerà una redirezione alla stessa pagina usando HTTPS."
#. Tag: para
-#: Security.xml:4118
+#: Security.xml:4124
#, no-c-format
msgid "It is also possible to configure a <emphasis>default scheme</emphasis> for all pages. This is useful if you wish to use HTTPS for a only few pages. If no default scheme is specified then the normal behavior is to continue use the current scheme. So once the user accessed a page that required HTTPS, then HTTPS would continue to be used after the user navigated away to other non-HTTPS pages. (While this is good for security, it is not so great for performance!). To define HTTP as the default <literal>scheme</literal>, add this line to <literal>pages.xml</literal>:"
msgstr "E' anche possibile configurare un <emphasis>default scheme</emphasis> per tutte le pagine. Questo è utile se si vuole usare HTTPS solo per alcune pagine. Se non è indicato un default scheme, allora il comportamento normale è di continuare ad usare lo schema correntemente usato. Perciò una volta che l'utente ha fatto l'accesso ad una pagina che richiede HTTPS, allora HTTPS continuerà ad essere usato dopo che l'utente si sposta su altre pagine non HTTPS. (Mentre questo è buono per la sicurezza, non lo è per le prestazioni!). Per definire HTTP come <literal>default scheme</literal>, aggiungere questa riga a <literal>pages.xml</literal>:"
#. Tag: programlisting
-#: Security.xml:4127
+#: Security.xml:4133
#, no-c-format
msgid "<![CDATA[<page view-id=\"*\" scheme=\"http\" />]]>"
msgstr "<![CDATA[<page view-id=\"*\" scheme=\"http\" />]]>"
#. Tag: para
-#: Security.xml:4129
+#: Security.xml:4135
#, no-c-format
msgid "Of course, if <emphasis>none</emphasis> of the pages in your application use HTTPS then it is not required to specify a default scheme."
msgstr "Chiaramente, se <emphasis>nessuna</emphasis> delle pagine dell'applicazione usa HTTPS allora non è richiesto di specificare alcun default scheme."
#. Tag: para
-#: Security.xml:4134
+#: Security.xml:4140
#, no-c-format
msgid "You may configure Seam to automatically invalidate the current HTTP session each time the scheme changes. Just add this line to <literal>components.xml</literal>:"
msgstr "E' possibile configurare Seam per invalidare automaticamente la sessione HTTP ogni volta che lo schema cambia. Basta aggiungere questa riga a <literal>components.xml</literal>:"
#. Tag: programlisting
-#: Security.xml:4139
+#: Security.xml:4145
#, no-c-format
msgid "<![CDATA[<web:session invalidate-on-scheme-change=\"true\"/>]]>"
msgstr "<![CDATA[<web:session invalidate-on-scheme-change=\"true\"/>]]>"
#. Tag: para
-#: Security.xml:4141
+#: Security.xml:4147
#, no-c-format
msgid "This option helps make your system less vulnerable to sniffing of the session id or leakage of sensitive data from pages using HTTPS to other pages using HTTP."
msgstr "Questa opzione aiuta nel rendere il sistema meno vulnerabile alle intromissioni che rilevano l'id di sessione o alla mancanza di protezione su dati sensibili dalle pagine che usano HTTPS ad altre che usano HTTP."
#. Tag: title
-#: Security.xml:4147
+#: Security.xml:4153
#, no-c-format
msgid "Overriding the default ports"
msgstr "Modificare le porte di default"
#. Tag: para
-#: Security.xml:4149
+#: Security.xml:4155
#, no-c-format
msgid "If you wish to configure the HTTP and HTTPS ports manually, they may be configured in <literal>pages.xml</literal> by specifying the <literal>http-port</literal> and <literal>https-port</literal> attributes on the <literal>pages</literal> element:"
msgstr "Se si vogliono configurare manualmente le porte HTTP e HTTPS, queste possono essere configurate in <literal>pages.xml</literal> specificando gli attributi <literal>http-port</literal> e <literal>https-port</literal> nell'elemento <literal>pages</literal>:"
#. Tag: programlisting
-#: Security.xml:4155
+#: Security.xml:4161
#, no-c-format
msgid ""
"<![CDATA[\n"
@@ -5095,31 +5107,31 @@
" ]]>"
#. Tag: title
-#: Security.xml:4161
+#: Security.xml:4167
#, no-c-format
msgid "CAPTCHA"
msgstr "CAPTCHA"
#. Tag: para
-#: Security.xml:4163
+#: Security.xml:4169
#, no-c-format
msgid "Though strictly not part of the security API, Seam provides a built-in CAPTCHA (<emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</emphasis>part) algorithm to prevent automated processes from interacting with your application."
msgstr "Sebbene non faccia strettamente parte delle API di sicurezza, Seam fornisce un algoritmo CAPTCHA (<emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</emphasis>omputer and <emphasis>H</emphasis>umans <emphasis>A</emphasis>part, test di Turing publico completamente automatico per distinguere gli umani dalle macchine) già fatto per prevenire l'interazione con l'applicazione da parte di procedure automatiche."
#. Tag: title
-#: Security.xml:4171
+#: Security.xml:4177
#, no-c-format
msgid "Configuring the CAPTCHA Servlet"
msgstr "Configurare la servlet CAPTCHA"
#. Tag: para
-#: Security.xml:4172
+#: Security.xml:4178
#, no-c-format
msgid "To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <literal>web.xml</literal>:"
msgstr "Per partire è necessario configurare la Seam Resource Servlet, che fornirà l'immagine CAPTCHA da risolvere nella pagina. Questo richiede la seguente voce in <literal>web.xml</literal>:"
#. Tag: programlisting
-#: Security.xml:4177
+#: Security.xml:4183
#, no-c-format
msgid ""
"<![CDATA[<servlet>\n"
@@ -5143,19 +5155,19 @@
"</servlet-mapping>]]>"
#. Tag: title
-#: Security.xml:4182
+#: Security.xml:4188
#, no-c-format
msgid "Adding a CAPTCHA to a form"
msgstr "Aggiungere un CAPTCHA ad una form"
#. Tag: para
-#: Security.xml:4184
+#: Security.xml:4190
#, no-c-format
msgid "Adding a CAPTCHA challenge to a form is extremely easy. Here's an example:"
msgstr "Aggiungere una verifica CAPTCHA ad una form è estremamente facile. Ecco un esempio:"
#. Tag: programlisting
-#: Security.xml:4188
+#: Security.xml:4194
#, no-c-format
msgid ""
"<![CDATA[<h:graphicImage value=\"/seam/resource/captcha\"/>\n"
@@ -5171,25 +5183,25 @@
"<h:message for=\"verifyCaptcha\"/>]]>"
#. Tag: para
-#: Security.xml:4190
+#: Security.xml:4196
#, no-c-format
msgid "That's all there is to it. The <literal>graphicImage</literal> control displays the CAPTCHA challenge, and the <literal>inputText</literal> receives the user's response. The response is automatically validated against the CAPTCHA when the form is submitted."
msgstr "Questo è tutto. Il controllo <literal>graphicImage</literal> mostra l'immagine CAPTCHA e <literal>inputText</literal> riceve la risposta dell'utente. La risposta viene automaticamente validata con il CAPTCHA quando la form viene inviata."
#. Tag: title
-#: Security.xml:4199
+#: Security.xml:4205
#, no-c-format
msgid "Customising the CAPTCHA algorithm"
msgstr "Personalizzare l'algoritmo CAPTCHA"
#. Tag: para
-#: Security.xml:4201
+#: Security.xml:4207
#, no-c-format
msgid "You may customize the CAPTCHA algorithm by overriding the built-in component:"
msgstr "E' possibile personalizzare l'algoritmo CAPTCHA sovrascrivendo il componente già fatto:"
#. Tag: programlisting
-#: Security.xml:4205
+#: Security.xml:4211
#, no-c-format
msgid ""
"<![CDATA[@Name(\"org.jboss.seam.captcha.captcha\")\n"
@@ -5233,164 +5245,164 @@
"}]]>"
#. Tag: title
-#: Security.xml:4212
-#: Security.xml:4220
+#: Security.xml:4218
+#: Security.xml:4226
#, no-c-format
msgid "Security Events"
msgstr "Eventi della sicurezza"
#. Tag: para
-#: Security.xml:4214
+#: Security.xml:4220
#, no-c-format
msgid "The following table describes a number of events (see <xref linkend=\"events\"/>) raised by Seam Security in response to certain security-related events."
msgstr "La seguente tabella descrive una serie di eventi (vedi <xref linkend=\"events\"/>) lanciati dalla sicurezza di Seam in corrispondenza di determinati eventi relativi alla sicurezza."
#. Tag: para
-#: Security.xml:4229
+#: Security.xml:4235
#, no-c-format
msgid "Event Key"
msgstr "Nome dell'evento"
#. Tag: literal
-#: Security.xml:4242
+#: Security.xml:4248
#, no-c-format
msgid "org.jboss.seam.security.loginSuccessful"
msgstr "org.jboss.seam.security.loginSuccessful"
#. Tag: para
-#: Security.xml:4246
+#: Security.xml:4252
#, no-c-format
msgid "Raised when a login attempt is successful."
msgstr "Lanciato quando un tentativo di login è stato completato con esito positivo."
#. Tag: literal
-#: Security.xml:4254
+#: Security.xml:4260
#, no-c-format
msgid "org.jboss.seam.security.loginFailed"
msgstr "org.jboss.seam.security.loginFailed"
#. Tag: para
-#: Security.xml:4258
+#: Security.xml:4264
#, no-c-format
msgid "Raised when a login attempt fails."
msgstr "Lanciato quando un tentativo di login è fallito."
#. Tag: literal
-#: Security.xml:4266
+#: Security.xml:4272
#, no-c-format
msgid "org.jboss.seam.security.alreadyLoggedIn"
msgstr "org.jboss.seam.security.alreadyLoggedIn"
#. Tag: para
-#: Security.xml:4270
+#: Security.xml:4276
#, no-c-format
msgid "Raised when a user that is already authenticated attempts to log in again."
msgstr "Lanciato quando un utente che ha già fatto il login, tenta di fare il login di nuovo."
#. Tag: literal
-#: Security.xml:4278
+#: Security.xml:4284
#, no-c-format
msgid "org.jboss.seam.security.notLoggedIn"
msgstr "org.jboss.seam.security.notLoggedIn"
#. Tag: para
-#: Security.xml:4282
+#: Security.xml:4288
#, no-c-format
msgid "Raised when a security check fails when the user is not logged in."
msgstr "Lanciato quando una verifica di sicurezza fallisce in quanto l'utente non ha fatto il login."
#. Tag: literal
-#: Security.xml:4290
+#: Security.xml:4296
#, no-c-format
msgid "org.jboss.seam.security.notAuthorized"
msgstr "org.jboss.seam.security.notAuthorized"
#. Tag: para
-#: Security.xml:4294
+#: Security.xml:4300
#, no-c-format
msgid "Raised when a security check fails when the user is logged in however doesn't have sufficient privileges."
msgstr "Lanciato quando una verifica di sicurezza fallisce in quanto l'utente ha fatto il login ma non ha i privilegi richiesti."
#. Tag: literal
-#: Security.xml:4302
+#: Security.xml:4308
#, no-c-format
msgid "org.jboss.seam.security.preAuthenticate"
msgstr "org.jboss.seam.security.preAuthenticate"
#. Tag: para
-#: Security.xml:4306
+#: Security.xml:4312
#, no-c-format
msgid "Raised just prior to user authentication."
msgstr "Lanciato subito prima l'autenticazione dell'utente."
#. Tag: literal
-#: Security.xml:4314
+#: Security.xml:4320
#, no-c-format
msgid "org.jboss.seam.security.postAuthenticate"
msgstr "org.jboss.seam.security.postAuthenticate"
#. Tag: para
-#: Security.xml:4318
+#: Security.xml:4324
#, no-c-format
msgid "Raised just after user authentication."
msgstr "Lanciato subito dopo l'autenticazione dell'utente."
#. Tag: literal
-#: Security.xml:4326
+#: Security.xml:4332
#, no-c-format
msgid "org.jboss.seam.security.loggedOut"
msgstr "org.jboss.seam.security.loggedOut"
#. Tag: para
-#: Security.xml:4330
+#: Security.xml:4336
#, no-c-format
msgid "Raised after the user has logged out."
msgstr "Lanciato dopo che l'utente ha fatto un logout."
#. Tag: literal
-#: Security.xml:4338
+#: Security.xml:4344
#, no-c-format
msgid "org.jboss.seam.security.credentialsUpdated"
msgstr "org.jboss.seam.security.credentialsUpdated"
#. Tag: para
-#: Security.xml:4342
+#: Security.xml:4348
#, no-c-format
msgid "Raised when the user's credentials have been changed."
msgstr "Lanciato quando le credenziali dell'utente vengono cambiate."
#. Tag: literal
-#: Security.xml:4350
+#: Security.xml:4356
#, no-c-format
msgid "org.jboss.seam.security.rememberMe"
msgstr "org.jboss.seam.security.rememberMe"
#. Tag: para
-#: Security.xml:4354
+#: Security.xml:4360
#, no-c-format
msgid "Raised when the Identity's rememberMe property is changed."
msgstr "Lanciato quando la proprietà RememberMe di Identity viene modificata."
#. Tag: title
-#: Security.xml:4367
+#: Security.xml:4373
#, no-c-format
msgid "Run As"
msgstr "Run As"
#. Tag: para
-#: Security.xml:4369
+#: Security.xml:4375
#, no-c-format
msgid "Sometimes it may be necessary to perform certain operations with elevated privileges, such as creating a new user account as an unauthenticated user. Seam Security supports such a mechanism via the <literal>RunAsOperation</literal> class. This class allows either the <literal>Principal</literal> or <literal>Subject</literal>, or the user's roles to be overridden for a single set of operations."
msgstr "A volte può essere necessario eseguire determinate operazioni con dei privilegi più elevati, come creare un nuovo utente da parte di un utente non autenticato. La sicurezza di Seam gestisce un tale meccanismo tramite la classe <literal>RunAsOperation</literal>. Questa classe consente sia al <literal>Principal</literal> o al <literal>Subject</literal>, che ai ruoli dell'utente di essere sovrascritti per un singolo insieme di operazioni."
#. Tag: para
-#: Security.xml:4377
+#: Security.xml:4383
#, no-c-format
msgid "The following code example demonstrates how <literal>RunAsOperation</literal> is used, by calling its <literal>addRole()</literal> method to provide a set of roles to masquerade as for the duration of the operation. The <literal>execute()</literal> method contains the code that will be executed with the elevated privileges."
msgstr "Il seguente codice di esempio mostra come viene usato <literal>RunAsOperation</literal>, chiamando il suo metodo <literal>addRole()</literal> per fornire un insieme di ruoli fittizi solo per la durata dell'operazione. Il metodo <literal>execute()</literal> contiene il codice che verrà eseguito con i privilegi aggiuntivi."
#. Tag: programlisting
-#: Security.xml:4384
+#: Security.xml:4390
#, no-c-format
msgid ""
"<![CDATA[ new RunAsOperation() { \n"
@@ -5408,25 +5420,25 @@
" .run();]]>"
#. Tag: para
-#: Security.xml:4386
+#: Security.xml:4392
#, no-c-format
msgid "In a similar way, the <literal>getPrincipal()</literal> or <literal>getSubject()</literal> methods can also be overriden to specify the <literal>Principal</literal> and <literal>Subject</literal> instances to use for the duration of the operation. Finally, the <literal>run()</literal> method is used to carry out the <literal>RunAsOperation</literal>."
msgstr "In modo analogo, i metodi <literal>getPrincipal()</literal> o <literal>getSubject()</literal> possono anch'essi essere sovrascritti per specificare le istanze di <literal>Principal</literal> e <literal>Subject</literal> da usare per la durata dell'operazione. Infine, il metodo <literal>run()</literal> è usato per eseguire la <literal>RunAsOperation</literal>."
#. Tag: title
-#: Security.xml:4397
+#: Security.xml:4403
#, no-c-format
msgid "Extending the Identity component"
msgstr "Estendere il componente Identity"
#. Tag: para
-#: Security.xml:4399
+#: Security.xml:4405
#, no-c-format
msgid "Sometimes it might be necessary to extend the Identity component if your application has special security requirements. The following example (contrived, as credentials would normally be handled by the <literal>Credentials</literal> component instead) shows an extended Identity component with an additional <literal>companyCode</literal> field. The install precendence of <literal>APPLICATION</literal> ensures that this extended Identity gets installed in preference to the built-in Identity."
msgstr "A volte può essere necessario estendere il componente Identity se l'applicazione ha particolari requisiti di sicurezza. Il seguente esempio (fatto di proposito, dato che le credenziali sarebbero normalmente gestite dal componente <literal>Credentials</literal>) mostra un componente Identity esteso con un campo <literal>companyCode</literal> aggiuntivo. La precendenza di installazione impostata a <literal>APPLICATION</literal> assicura che questo Identity esteso venga installato al posto dell'Identity originale."
#. Tag: programlisting
-#: Security.xml:4407
+#: Security.xml:4413
#, no-c-format
msgid ""
"<![CDATA[@Name(\"org.jboss.seam.security.identity\")\n"
@@ -5488,55 +5500,55 @@
"}]]>"
#. Tag: para
-#: Security.xml:4410
+#: Security.xml:4416
#, no-c-format
msgid "Note that an <literal>Identity</literal> component must be marked <literal>@Startup</literal>, so that it is available immediately after the <literal>SESSION</literal> context begins. Failing to do this may render certain Seam functionality inoperable in your application."
msgstr "Notare che un componente <literal>Identity</literal> deve essere marcato <literal>@Startup</literal>, in modo che sia disponibile immediatamente dopo l'inizio del contesto <literal>SESSION</literal>. La mancanza di questo dettaglio renderebbe non utilizzabili determinate funzionalità di Seam nell'applicazione."
#. Tag: title
-#: Security.xml:4422
+#: Security.xml:4428
#, no-c-format
msgid "OpenID"
msgstr "OpenID"
#. Tag: para
-#: Security.xml:4424
+#: Security.xml:4430
#, no-c-format
msgid "OpenID is a community standard for external web-based authentication. The basic idea is that any web application can supplement (or replace) its local handling of authentication by delegating responsibility to an external OpenID server of the user's chosing. This benefits the user, who no longer has to remember a name and password for every web application he uses, and the developer, who is relieved of some of the burden of maintaining a complex authentication system."
msgstr "OpenID è un standard comune per l'autenticazione esterna sul web. L'idea fondamentale è che qualsiasi applicazione web possa integrare (o sostituire) la sua gestione locale dell'autenticazione delegandone la responsabilità ad un server OpenID esterno scelto dall'utente. Questo va a beneficio dell'utente che non deve più ricordare un nome e una password per ogni applicazione web che usa, e dello sviluppatore, che viene sollevato di un po' di problemi nel manutenere un complesso sistema di autenticazione."
#. Tag: para
-#: Security.xml:4433
+#: Security.xml:4439
#, no-c-format
msgid "When using OpenID, the user selects an OpenID provider, and the provider assigns the user an OpenID. The id will take the form of a URL, for example <literal>http://maximoburrito.myopenid.com</literal> however, it's acceptable to leave off the <literal>http://</literal> part of the identifier when logging into a site. The web application (known as a relying party in OpenID-speak) determines which OpenID server to contact and redirects the user to the remote site for authentication. Upon successful authentication the user is given the (cryptographically secure) token proving his identity and is redirected back to the original web application.The local web application can then be sure the user accessing the application controls the OpenID he presented."
msgstr "Quando si usa OpenID, l'utente sceglie un fornitore OpenID, e il fornitore OpenID assegna all'utente un OpenID. Questo id prende la forma di un URL, ad esempio <literal>http://grandepizza.myopenid.com</literal>, comunque è accettabile trascurare la parte <literal>http://</literal> dell'identificativo quando si fa il login ad un sito. L'applicazione web (detta relying party in termini OpenID) determina quale server OpenID deve contattare e redirige l'utente a quel sito per l'autenticazione. Dopo essersi autenticato con esito positivo, all'utente viene fornito un codice (crittograficamente sicuro) che prova la sua identità e viene rediretto di nuovo all'applicazione web originale. L'applicazione web locale può essere quindi sicura che l'utente che sta accedendo è il proprietario dell'OpenID che aveva fornito."
#. Tag: para
-#: Security.xml:4442
+#: Security.xml:4448
#, no-c-format
msgid "It's important to realize at this point that authentication does not imply authorization. The web application still needs to make a determination of how to use that information. The web application could treat the user as instantly logged in and give full access to the system or it could try and map the presented OpenID to a local user account, prompting the user to register if he hasn't already. The choice of how to handle the OpenID is left as a design decision for the local application."
msgstr "E' importante rendersi conto, a questo punto, che l'autenticazione non implica l'autorizzazione. L'applicazione web ha ancora bisogno di fare delle determinazioni su come usare quell'informazione. L'applicazione web potrebbe trattare l'utente come immediatamente autenticato e dargli/le pieno accesso al sistema, oppure potrebbe tentare di associare l'OpenID fornito ad un utente locale, chiedendo all'utente di registrarsi se non l'ha già fatto. La scelta su come gestire l'OpenID è lasciata ad una decisione progettuale dell'applicazione locale."
#. Tag: title
-#: Security.xml:4452
+#: Security.xml:4458
#, no-c-format
msgid "Configuring OpenID"
msgstr "Configurare OpenID"
#. Tag: para
-#: Security.xml:4453
+#: Security.xml:4459
#, no-c-format
msgid "Seam uses the openid4java package and requires four additional JARs to make use of the Seam integration. These are: <literal>htmlparser.jar</literal>, <literal>openid4java.jar</literal>, <literal>openxri-client.jar</literal> and <literal>openxri-syntax.jar</literal>."
msgstr "Seam usa il pacchetto openid4java e richiede quattro JAR aggiuntivi per usare l'integrazione Seam. Essi sono: <literal>htmlparser.jar</literal>, <literal>openid4java.jar</literal>, <literal>openxri-client.jar</literal> e <literal>openxri-syntax.jar</literal>."
#. Tag: para
-#: Security.xml:4459
+#: Security.xml:4465
#, no-c-format
msgid "OpenID processing requires the use of the <literal>OpenIdPhaseListener</literal>, which should be added to your <literal>faces-config.xml</literal> file. The phase listener processes the callback from the OpenID provider, allowing re-entry into the local application."
msgstr "L'elaborazione di OpenID richiede l'uso di <literal>OpenIdPhaseListener</literal>, che deve essere aggiunto al file <literal>faces-config.xml</literal>. Il phase listener elabora le chiamate dal fornitore OpenID, consentendo di rientrare nell'applicazione locale."
#. Tag: programlisting
-#: Security.xml:4465
+#: Security.xml:4471
#, no-c-format
msgid ""
"<lifecycle>\n"
@@ -5548,25 +5560,25 @@
"</lifecycle>"
#. Tag: para
-#: Security.xml:4468
+#: Security.xml:4474
#, no-c-format
msgid "With this configuration, OpenID support is available to your application. The OpenID support component, <literal>org.jboss.seam.security.openid.openid</literal>, is installed automatically if the openid4java classes are on the classpath."
msgstr "Con questa configurazione il supporto OpenID è disponibile nell'applicazione. Il componente per il supporto OpenID, <literal>org.jboss.seam.security.openid.openid</literal>, viene installato automaticamente se le classi openid4java sono nel classpath."
#. Tag: title
-#: Security.xml:4476
+#: Security.xml:4482
#, no-c-format
msgid "Presenting an OpenIdDLogin form"
msgstr "Persentare una form di login OpenID"
#. Tag: para
-#: Security.xml:4478
+#: Security.xml:4484
#, no-c-format
msgid "To initiate an OpenID login, you can present a simply form to the user asking for the user's OpenID. The <literal>#{openid.id}</literal> value accepts the user's OpenID and the <literal>#{openid.login}</literal> action initiates an authentication request."
msgstr "Per iniziare un login con OpenID occorre presentare una semplice form che chieda all'utente il suo OpenID. Il valore <literal>#{openid.id}</literal> accetta l'OpenID dell'utente e l'azione <literal>#{openid.login]</literal> inizia la richiesta di autenticazione."
#. Tag: programlisting
-#: Security.xml:4483
+#: Security.xml:4489
#, no-c-format
msgid ""
"<h:form>\n"
@@ -5580,25 +5592,25 @@
"</h:form>"
#. Tag: para
-#: Security.xml:4485
+#: Security.xml:4491
#, no-c-format
msgid "When the user submits the login form, he will be redirected to his OpenID provider. The user will eventually return to your application through the Seam pseudo-view <literal>/openid.xhtml</literal>, which is provided by the <literal>OpenIdPhaseListener</literal>. Your application can handle the OpenID response by means of a <literal>pages.xml</literal> navigation from that view, just as if the user had never left your application."
msgstr "Quando l'utente invia la form di login, viene rediretto al suo fornitore OpenID. L'utente torna infine all'applicazione tramite la pseudo pagina Seam <literal>/openid.xhtml</literal>, che è fornita dal <literal>OpenIdPhaseListener</literal>. L'applicazione può gestire la risposta OpenID per mezzo della navigazione indicata in <literal>pages.xml</literal> per quella pagina, proprio come se l'utente non avesse mai lasciato l'applicazione."
#. Tag: title
-#: Security.xml:4494
+#: Security.xml:4500
#, no-c-format
msgid "Logging in immediately"
msgstr "Eseguire il login immediatamente"
#. Tag: para
-#: Security.xml:4496
+#: Security.xml:4502
#, no-c-format
msgid "The simplest strategy is to simply login the user immediately. The following navigation rule shows how to handle this using the <literal>#{openid.loginImmediately()}</literal> action."
msgstr "La strategia più semplice è di eseguire immediatamente il login dell'utente. La seguente regola di navigazione mostra come gestire questa modalità usando l'azione <literal>#{openid.loginImmediately()}</literal>."
#. Tag: programlisting
-#: Security.xml:4500
+#: Security.xml:4506
#, no-c-format
msgid ""
"<page view-id="/openid.xhtml">\n"
@@ -5632,37 +5644,37 @@
"</page>"
#. Tag: para
-#: Security.xml:4502
+#: Security.xml:4508
#, no-c-format
msgid "Thie <literal>loginImmediately()</literal> action checks to see if the OpenID is valid. If it is valid, it adds an OpenIDPrincipal to the identity component, marks the user as logged in (i.e. <literal>#{identity.loggedIn}</literal> will be true) and returns true. If the OpenID was not validated, the method returns false, and the user re-enters the application un-authenticated. If the user's OpenID is valid, it will be accessible using the expression <literal>#{openid.validatedId}</literal> and <literal>#{openid.valid}</literal> will be true."
msgstr "L'azione <literal>loginImmediately()</literal> controlla per vedere se l'OpenID è valido. Se è valido, aggiunge un OpenIDPrincipal al componente identity, marca l'utente come loggedin (cioè <literal>#{identity.loggedIn}</literal> sarà true) e restituisce true. Se l'OpenID non è stato validato, il metodo restituisce false, e l'utente rientra nell'applicazione non autenticato. se l'OpenID dell'utente è valido, esso sarà accessibile usando l'espressione <literal>#{openid.validatedId}</literal> e <literal>#{openid.valid}</literal> sarà true."
#. Tag: title
-#: Security.xml:4513
+#: Security.xml:4519
#, no-c-format
msgid "Deferring login"
msgstr "Rimandare il login"
#. Tag: para
-#: Security.xml:4515
+#: Security.xml:4521
#, no-c-format
msgid "You may not want the user to be immediately logged in to your application. In that case, your navigation should check the <literal>#{openid.valid}</literal> property and redirect the user to a local registration or processing page. Actions you might take would be asking for more information and creating a local user account or presenting a captcha to avoid programmatic registrations. When you are done processing, if you want to log the user in, you can call the <literal>loginImmediately</literal> method, either through EL as shown previously or by directly interaction with the <literal>org.jboss.seam.security.openid.OpenId</literal> component. Of course, nothing prevents you from writing custom code to interact with the Seam identity component on your own for even more customized behaviour."
msgstr "Si può desiderare di non autenticare immediatamente l'utente nell'applicazione. In questo caso la navigazione dovrò controllare la proprietà <literal>#{openid.valid}</literal> e redirigere l'utente ad una pagina per la registrazione o l'elaborazione dell'utente. Le azioni che si possono prendere sono di chiedere maggiori informazioni e creare un utente locale, oppure presentare un CAPTCHA per evitare registrazioni da programmi automatici. Quando questa elaborazione è terminata, se si vuole autenticare l'utente è possibile chiamare il metodo <literal>loginImmediately</literal>, sia tramite EL come mostrato in precedenza, sia interagendo direttamento con il componente <literal>org.jboss.seam.security.openid.OpenId</literal>. Ovviamente niente impedisce di scrivere da soli del codice personalizzato per interagire con il componente Seam Identity per avere un comportamento più personalizzato."
#. Tag: title
-#: Security.xml:4529
+#: Security.xml:4535
#, no-c-format
msgid "Logging out"
msgstr "Log out"
#. Tag: para
-#: Security.xml:4531
+#: Security.xml:4537
#, no-c-format
msgid "Logging out (forgetting an OpenID association) is done by calling <literal>#{openid.logout}</literal>. If you are not using Seam security, you can call this method directly. If you are using Seam security, you should continue to use <literal>#{identity.logout}</literal> and install an event handler to capture the logout event, calling the OpenID logout method."
msgstr "Il log out (dimenticando l'associazione OpenID) viene fatto chiamando <literal>#{openid.logout}</literal>. Se non si sta usando la sicurezza Seam è possibile chiamare questo metodo direttamente. Se si sta usando la sicurezza Seam occorre continuare ad usare <literal>#{identity.logout}</literal> e installare un gestore di eventi per catturare l'evento logout, chiamando il metodo logout di OpenID."
#. Tag: programlisting
-#: Security.xml:4538
+#: Security.xml:4544
#, no-c-format
msgid ""
"<event type="org.jboss.seam.security.loggedOut">\n"
@@ -5674,7 +5686,7 @@
"</event>"
#. Tag: para
-#: Security.xml:4540
+#: Security.xml:4546
#, no-c-format
msgid "It's important that you do not leave this out or the user will not be able to login again in the same session."
msgstr "E' importante non trascurare questo punto altrimenti l'utente non sarà più in grado di eseguire nuovamente il login nella stessa sessione."
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Websphere.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Websphere.po 2009-06-25 15:01:40 UTC (rev 11210)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Websphere.po 2009-06-25 15:06:46 UTC (rev 11211)
@@ -5,8 +5,8 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2009-02-01 21:20+0000\n"
-"PO-Revision-Date: 2009-06-01 00:21+0100\n"
+"POT-Creation-Date: 2009-06-25 15:02+0000\n"
+"PO-Revision-Date: 2009-06-25 17:06+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -1049,7 +1049,7 @@
"import.sql each time you deploy? [n] (y, [n], )\n"
"\n"
"[propertyfile] Creating new property file: \n"
-"/rhdev/projects/jboss-seam/svn-seam_2_0/jboss-seam-2_0/seam-gen/build.properties\n"
+"/rhdev/projects/jboss-seam/svn-seam_2_2/jboss-seam-2_2/seam-gen/build.properties\n"
" [echo] Installing JDBC driver jar to JBoss server\n"
" [copy] Copying 1 file to /home/jbalunas/jboss/jboss-4.2.3.GA/server/default/lib\n"
" [echo] Type 'seam create-project' to create the new project\n"
@@ -1122,7 +1122,7 @@
"import.sql each time you deploy? [n] (y, [n], )\n"
"\n"
"[propertyfile] Creating new property file: \n"
-"/rhdev/projects/jboss-seam/svn-seam_2_0/jboss-seam-2_0/seam-gen/build.properties\n"
+"/rhdev/projects/jboss-seam/svn-seam_2_2/jboss-seam-2_2/seam-gen/build.properties\n"
" [echo] Installing JDBC driver jar to JBoss server\n"
" [copy] Copying 1 file to /home/jbalunas/jboss/jboss-4.2.3.GA/server/default/lib\n"
" [echo] Type 'seam create-project' to create the new project\n"
15 years, 6 months
Seam SVN: r11210 - branches/community.
by seam-commits@lists.jboss.org
Author: tsurdilovic
Date: 2009-06-25 11:01:40 -0400 (Thu, 25 Jun 2009)
New Revision: 11210
Added:
branches/community/Seam_2_2_Drools5/
Log:
Copied: branches/community/Seam_2_2_Drools5 (from rev 11209, branches/community/Seam_2_2)
15 years, 6 months
Seam SVN: r11209 - in branches/community/Seam_2_2: build/embedded and 3 other directories.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-06-25 10:58:25 -0400 (Thu, 25 Jun 2009)
New Revision: 11209
Modified:
branches/community/Seam_2_2/build/build.properties
branches/community/Seam_2_2/build/common.build.xml
branches/community/Seam_2_2/build/embedded/hibernate-all.pom.xml
branches/community/Seam_2_2/build/embedded/jboss-embedded-all.pom.xml
branches/community/Seam_2_2/build/embedded/jboss-embedded.pom.xml
branches/community/Seam_2_2/build/embedded/shaded/hibernate-all.pom.xml
branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded-all.pom.xml
branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded.pom.xml
branches/community/Seam_2_2/build/embedded/shaded/thirdparty-all.pom.xml
branches/community/Seam_2_2/build/embedded/thirdparty-all.pom.xml
branches/community/Seam_2_2/build/root.pom.xml
branches/community/Seam_2_2/src/test/integration/resources/test-destinations-service.xml
branches/community/Seam_2_2/src/test/integration/src/org/jboss/seam/test/integration/testng.xml
Log:
upgraded JBoss-embedded to beta3.SP8 and enable JMS integration test again
Modified: branches/community/Seam_2_2/build/build.properties
===================================================================
--- branches/community/Seam_2_2/build/build.properties 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/build.properties 2009-06-25 14:58:25 UTC (rev 11209)
@@ -3,4 +3,4 @@
embedded.dir /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded
#embedded.jars.dir /Users/pmuir/tmp/embedded-jboss-beta3/lib
#�embedded.dist.zip /Users/pmuir/Desktop/downloads/embedded-jboss-beta3.zip
-embedded.version beta3.SP7
\ No newline at end of file
+embedded.version beta3.SP8
\ No newline at end of file
Modified: branches/community/Seam_2_2/build/common.build.xml
===================================================================
--- branches/community/Seam_2_2/build/common.build.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/common.build.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -23,7 +23,7 @@
<property name="maven.settings.xml" location="${build.dir}/settings.xml" />
- <property name="embedded.version" value="beta3.SP7" />
+ <property name="embedded.version" value="beta3.SP8" />
<import file="${build.dir}/utilities.build.xml" />
Modified: branches/community/Seam_2_2/build/embedded/hibernate-all.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/hibernate-all.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/hibernate-all.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.embedded</groupId>
<artifactId>hibernate-all</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>The hibernate-all.jar distributed with JBoss Embedded. This contains Hibernate
for running in an EJB3 enviroment (Hibernate, Hibernate Annotations, Hibernate EntityManager, Hibernate Validator, Hibernate Commons Annotations)</description>
</project>
Modified: branches/community/Seam_2_2/build/embedded/jboss-embedded-all.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/jboss-embedded-all.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/jboss-embedded-all.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.embedded</groupId>
<artifactId>jboss-embedded-all</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>The jboss-embedded-all.jar distributed with JBoss Embedded. This contains all depdencies
from JBoss AS that originate in JBoss. This jar has has the org.jboss.embedded packages split out.</description>
@@ -13,7 +13,7 @@
<dependency>
<groupId>org.jboss.embedded</groupId>
<artifactId>jboss-embedded</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<exclusions>
<exclusion></exclusion>
</exclusions>
Modified: branches/community/Seam_2_2/build/embedded/jboss-embedded.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/jboss-embedded.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/jboss-embedded.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.embedded</groupId>
<artifactId>jboss-embedded</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>This jar has the org.jboss.embedded packages split out from jboss-embedded-all.</description>
<dependencies>
Modified: branches/community/Seam_2_2/build/embedded/shaded/hibernate-all.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/shaded/hibernate-all.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/shaded/hibernate-all.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>hibernate-all</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>The hibernate-all.jar distributed with JBoss Embedded. This contains Hibernate
for running in an EJB3 enviroment (Hibernate, Hibernate Annotations, Hibernate EntityManager, Hibernate Validator, Hibernate Commons Annotations) and Hibernate Search (specific to this seam version of hibernate-all)</description>
</project>
Modified: branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded-all.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded-all.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded-all.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>jboss-embedded-all</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>The jboss-embedded-all.jar distributed with JBoss Embedded. This contains all depdencies
from JBoss AS that originate in JBoss. This jar has has the org.jboss.embedded packages split out.</description>
@@ -13,7 +13,7 @@
<dependency>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>jboss-embedded-api</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<exclusions>
<exclusion></exclusion>
</exclusions>
Modified: branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/shaded/jboss-embedded.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>jboss-embedded-api</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>This jar has the org.jboss.embedded packages split out from jboss-embedded-all. This Seam specific version simply keeps the old jboss-embedded-api name for tooling compatibility</description>
<dependencies>
Modified: branches/community/Seam_2_2/build/embedded/shaded/thirdparty-all.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/shaded/thirdparty-all.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/shaded/thirdparty-all.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>thirdparty-all</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>The thirdparty-all.jar distributed with JBoss Embedded. This contains thirdparty
dependencies distributed with JBoss AS. This Seam version also includes lucene, a dependency
of hibernate search</description>
Modified: branches/community/Seam_2_2/build/embedded/thirdparty-all.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/embedded/thirdparty-all.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/embedded/thirdparty-all.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.embedded</groupId>
<artifactId>thirdparty-all</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
<description>The thirdparty-all.jar distributed with JBoss Embedded. This contains thirdparty
dependencies distributed with JBoss AS.</description>
</project>
Modified: branches/community/Seam_2_2/build/root.pom.xml
===================================================================
--- branches/community/Seam_2_2/build/root.pom.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/build/root.pom.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -857,7 +857,7 @@
<dependency>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>jboss-embedded-api</artifactId>
- <version>beta3.SP7</version>
+ <version>beta3.SP8</version>
</dependency>
<dependency>
Modified: branches/community/Seam_2_2/src/test/integration/resources/test-destinations-service.xml
===================================================================
--- branches/community/Seam_2_2/src/test/integration/resources/test-destinations-service.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/src/test/integration/resources/test-destinations-service.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -1,17 +1,17 @@
<server>
-<!-- <mbean code="org.jboss.mq.server.jmx.Topic"-->
-<!-- name="jboss.mq.destination:service=Topic,name=testTopic">-->
-<!-- <depends optional-attribute-name="ServerPeer">-->
-<!-- jboss.messaging:service=ServerPeer-->
-<!-- </depends>-->
-<!-- <depends>jboss.messaging:service=PostOffice</depends>-->
-<!-- </mbean>-->
-<!-- -->
-<!-- <mbean code="org.jboss.mq.server.jmx.Queue"-->
-<!-- name="jboss.mq.destination:service=Queue,name=testQueue">-->
-<!-- <depends optional-attribute-name="ServerPeer">-->
-<!-- jboss.messaging:service=ServerPeer-->
-<!-- </depends>-->
-<!-- <depends>jboss.messaging:service=PostOffice</depends>-->
-<!-- </mbean>-->
+ <mbean code="org.jboss.mq.server.jmx.Topic"
+ name="jboss.mq.destination:service=Topic,name=testTopic">
+ <depends optional-attribute-name="ServerPeer">
+ jboss.messaging:service=ServerPeer
+ </depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ </mbean>
+
+ <mbean code="org.jboss.mq.server.jmx.Queue"
+ name="jboss.mq.destination:service=Queue,name=testQueue">
+ <depends optional-attribute-name="ServerPeer">
+ jboss.messaging:service=ServerPeer
+ </depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ </mbean>
</server>
Modified: branches/community/Seam_2_2/src/test/integration/src/org/jboss/seam/test/integration/testng.xml
===================================================================
--- branches/community/Seam_2_2/src/test/integration/src/org/jboss/seam/test/integration/testng.xml 2009-06-25 14:55:53 UTC (rev 11208)
+++ branches/community/Seam_2_2/src/test/integration/src/org/jboss/seam/test/integration/testng.xml 2009-06-25 14:58:25 UTC (rev 11209)
@@ -50,11 +50,11 @@
</classes>
</test>
-<!-- <test name="Seam Integration Tests: JMS">-->
-<!-- <classes>-->
-<!-- <class name="org.jboss.seam.test.integration.MessagingTest" />-->
-<!-- </classes>-->
-<!-- </test>-->
+ <test name="Seam Integration Tests: JMS">
+ <classes>
+ <class name="org.jboss.seam.test.integration.MessagingTest" />
+ </classes>
+ </test>
<test name="Seam Integration Tests: Mocks">
<classes>
15 years, 6 months
Seam SVN: r11208 - branches/community/Seam_2_2/src/test/unit/org/jboss/seam/test/unit.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-06-25 10:55:53 -0400 (Thu, 25 Jun 2009)
New Revision: 11208
Modified:
branches/community/Seam_2_2/src/test/unit/org/jboss/seam/test/unit/ContextTest.java
Log:
JBSEAM-3119 - fixed unit test ContextTest.testContextManagement
Modified: branches/community/Seam_2_2/src/test/unit/org/jboss/seam/test/unit/ContextTest.java
===================================================================
--- branches/community/Seam_2_2/src/test/unit/org/jboss/seam/test/unit/ContextTest.java 2009-06-25 14:01:27 UTC (rev 11207)
+++ branches/community/Seam_2_2/src/test/unit/org/jboss/seam/test/unit/ContextTest.java 2009-06-25 14:55:53 UTC (rev 11208)
@@ -118,7 +118,7 @@
assert ((MockHttpSession) externalContext.getSession(false))
.getAttributes().size() == 4;
assert ((MockServletContext) externalContext.getContext())
- .getAttributes().size() == 11;
+ .getAttributes().size() == 12;
FacesLifecycle.beginRequest(externalContext);
@@ -151,7 +151,7 @@
assert Contexts.getSessionContext().get("foo") == foo;
assert Contexts.getConversationContext().getNames().length == 2;
- assert Contexts.getApplicationContext().getNames().length == 11;
+ assert Contexts.getApplicationContext().getNames().length == 12;
assert Contexts.getSessionContext().getNames().length == 2;
assert seamVariableResolver.getValue(elContext, null, "zzz").equals(
@@ -186,7 +186,7 @@
assert ((MockHttpSession) externalContext.getSession(false))
.getAttributes().size() == 3; // foo, zzz, org.jboss.seam.core.conversationEntries
assert ((MockServletContext) externalContext.getContext())
- .getAttributes().size() == 11;
+ .getAttributes().size() == 12;
ServletLifecycle.endSession(((HttpServletRequest) externalContext
.getRequest()).getSession());
15 years, 6 months
Seam SVN: r11207 - branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT.
by seam-commits@lists.jboss.org
Author: nico.ben
Date: 2009-06-25 10:01:27 -0400 (Thu, 25 Jun 2009)
New Revision: 11207
Modified:
branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Events.po
Log:
Italian translation
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Events.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Events.po 2009-06-24 21:41:56 UTC (rev 11206)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/it-IT/Events.po 2009-06-25 14:01:27 UTC (rev 11207)
@@ -6,7 +6,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-05-29 06:39+0000\n"
-"PO-Revision-Date: 2009-06-14 15:10+0100\n"
+"PO-Revision-Date: 2009-06-25 16:01+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -265,7 +265,7 @@
#: Events.xml:149
#, no-c-format
msgid "A JSF faces request (a form submission) encapsulates both an \"action\" (a method binding) and \"parameters\" (input value bindings). A page action might also needs parameters!"
-msgstr "Una richiesta JSF faces (sottomissione di una form) incapsula sia un'\"azione\" (un metodo di binding) e \"parametri\" (valore di binding di input). Un'azione di pagina può anche avere bisogno di parametri!"
+msgstr "Una richiesta JSF faces (sottomissione di una form) incapsula sia un'\"azione\" (un metodo di binding) sia \"parametri\" (valore di binding di input). Un'azione di pagina può anche avere bisogno di parametri!"
#. Tag: para
#: Events.xml:155
@@ -612,7 +612,7 @@
#: Events.xml:360
#, no-c-format
msgid "Even better, model-based Hibernate validator annotations are automatically recognized and validated. Seam also provides a default date converter to convert a string parameter value to a date and back."
-msgstr "Ancora meglio, le annotazioni di Hibernate validator basatesul modello vengono automaticamente riconosciute e validate. Seam fornisce anche un converter di data di default per convertire un valore di parametro stringa in una data e viceversa."
+msgstr "Ancora meglio, le annotazioni di Hibernate validator basate sul modello vengono automaticamente riconosciute e validate. Seam fornisce anche un converter di data di default per convertire un valore di parametro stringa in una data e viceversa."
#. Tag: para
#: Events.xml:366
@@ -630,7 +630,7 @@
#: Events.xml:376
#, no-c-format
msgid "You can use standard JSF navigation rules defined in <literal>faces-config.xml</literal> in a Seam application. However, JSF navigation rules have a number of annoying limitations:"
-msgstr "Si possono usare le regole di navigazione standard di JSF definite in <literal>faces-config.xml</literal> in un'applicazione Seam. Comunque le regole di navigazione hanno un certo numero spiacevole di limitazioni:"
+msgstr "Si possono usare le regole di navigazione standard di JSF definite in <literal>faces-config.xml</literal> in un'applicazione Seam. Comunque le regole di navigazione hanno un certo numero di limitazioni spiacevoli:"
#. Tag: para
#: Events.xml:384
@@ -952,7 +952,7 @@
#: Events.xml:479
#, no-c-format
msgid "If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <literal>/calc/calculator.jsp</literal> in a resource named <literal>calc/calculator.page.xml</literal>. The root element in this case is the <literal><page></literal> element, and the view id is implied:"
-msgstr "Si si hanno molte differenti azioni e parametri di pagina, od anche solo molte regole di navigazione, si vuole quasi sicuramente separare le dichiarazioni in molti file. Si possono definire azioni e parametri per una pagina con id vista <literal>/calc/calculator.jsp</literal> in una risorsa chiamata <literal>calc/calculator.page.xml</literal>. L'elemento radice in questo caso è l'elemento <literal><page></literal>, e l'id vista è implicito:"
+msgstr "Se sono presenti molte differenti azioni e parametri di pagina, od anche solo molte regole di navigazione, si vuole quasi sicuramente separare le dichiarazioni in molti file. Si possono definire azioni e parametri per una pagina con id vista <literal>/calc/calculator.jsp</literal> in una risorsa chiamata <literal>calc/calculator.page.xml</literal>. L'elemento radice in questo caso è l'elemento <literal><page></literal>, e l'id vista è implicito:"
#. Tag: programlisting
#: Events.xml:490
@@ -1455,11 +1455,11 @@
" \n"
" boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!=null;\n"
" if (isLoggedIn) {\n"
-" //the user is already logged in\n"
+" //l'utente è già loggato\n"
" return invocation.proceed();\n"
" }\n"
" else {\n"
-" //the user is not logged in, fwd to login page\n"
+" //l'utente non è loggato, prosegui alla pagina di login\n"
" return \"login\";\n"
" }\n"
" }\n"
@@ -1722,7 +1722,7 @@
#: Events.xml:782
#, no-c-format
msgid "It is important to note that Seam cannot handle exceptions that occur during JSF's RENDER_RESPONSE phase, as it is not possible to perform a redirect once the response has started being written to."
-msgstr "E'importante notare che Seam non può gestire le eccezioni che avvengono duranre la fase RENDER_RESPONSE di JSF, poiché non è possibile eseguire un redirect una volta che si è iniziato a scrivere la risposta."
+msgstr "E'importante notare che Seam non può gestire le eccezioni che avvengono durante la fase RENDER_RESPONSE di JSF, poiché non è possibile eseguire un redirect una volta che si è iniziato a scrivere la risposta."
#. Tag: para
#: Events.xml:788
@@ -1756,7 +1756,7 @@
#: Events.xml:805
#, no-c-format
msgid "Since we can't add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <literal>pages.xml</literal>."
-msgstr "Poiché non si possono aggiungere annotazioni a tutte le classi d'eccezione a cuisi è interessati, Seam consente di specificare questa funzionalità in <literal>pages.xml</literal>."
+msgstr "Poiché non si possono aggiungere annotazioni a tutte le classi d'eccezione a cui si è interessati, Seam consente di specificare questa funzionalità in <literal>pages.xml</literal>."
#. Tag: programlisting
#: Events.xml:810
15 years, 6 months
Seam SVN: r11206 - tags/JBoss_Seam_2_2_0_CR1.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-06-24 17:41:56 -0400 (Wed, 24 Jun 2009)
New Revision: 11206
Modified:
tags/JBoss_Seam_2_2_0_CR1/changelog.txt
Log:
update changelog
Modified: tags/JBoss_Seam_2_2_0_CR1/changelog.txt
===================================================================
--- tags/JBoss_Seam_2_2_0_CR1/changelog.txt 2009-06-24 21:41:35 UTC (rev 11205)
+++ tags/JBoss_Seam_2_2_0_CR1/changelog.txt 2009-06-24 21:41:56 UTC (rev 11206)
@@ -18,6 +18,8 @@
* [JBSEAM-4258] - Redirect in navigation rules doesn't work
* [JBSEAM-4262] - Bad classpath for eclipse project in seam-gen generated .classpath file
* [JBSEAM-4265] - seam-gen generate cannot find org/hibernate/cfg/Configuration
+ * [JBSEAM-4266] - Reflect 2.1.2 -> 2.2.0 library changes into seam-gen
+ * [JBSEAM-4269] - seam-gen drools-decisiontables.jar missing in icefaces project
** Feature Request
* [JBSEAM-1587] - page parameters: option to bypass model-based validations
15 years, 6 months
Seam SVN: r11205 - branches/community/Seam_2_2.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-06-24 17:41:35 -0400 (Wed, 24 Jun 2009)
New Revision: 11205
Modified:
branches/community/Seam_2_2/changelog.txt
Log:
upddate changelog
Modified: branches/community/Seam_2_2/changelog.txt
===================================================================
--- branches/community/Seam_2_2/changelog.txt 2009-06-24 21:13:27 UTC (rev 11204)
+++ branches/community/Seam_2_2/changelog.txt 2009-06-24 21:41:35 UTC (rev 11205)
@@ -18,6 +18,8 @@
* [JBSEAM-4258] - Redirect in navigation rules doesn't work
* [JBSEAM-4262] - Bad classpath for eclipse project in seam-gen generated .classpath file
* [JBSEAM-4265] - seam-gen generate cannot find org/hibernate/cfg/Configuration
+ * [JBSEAM-4266] - Reflect 2.1.2 -> 2.2.0 library changes into seam-gen
+ * [JBSEAM-4269] - seam-gen drools-decisiontables.jar missing in icefaces project
** Feature Request
* [JBSEAM-1587] - page parameters: option to bypass model-based validations
15 years, 6 months
Seam SVN: r11204 - tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-06-24 17:13:27 -0400 (Wed, 24 Jun 2009)
New Revision: 11204
Added:
tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/SpreadsheetCompiler.java
Modified:
tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/RuleBase.java
Log:
JBSEAM-4266
Modified: tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/RuleBase.java
===================================================================
--- tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/RuleBase.java 2009-06-24 20:51:19 UTC (rev 11203)
+++ tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/RuleBase.java 2009-06-24 21:13:27 UTC (rev 11204)
@@ -11,8 +11,6 @@
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.RuleBuildError;
-import org.drools.decisiontable.InputType;
-import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.spi.ConsequenceExceptionHandler;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
@@ -61,15 +59,13 @@
if(isDecisionTable(ruleFile))
{
- log.debug("compiling decision table");
- SpreadsheetCompiler compiler = new SpreadsheetCompiler();
- String drl = compiler.compile(stream, InputType.XLS);
-
- log.debug("creating source");
- byte currentXMLBytes[] = drl.getBytes();
- InputStreamReader source = new InputStreamReader(new ByteArrayInputStream(currentXMLBytes));
-
- builder.addPackageFromDrl(source);
+ if (SpreadsheetCompiler.instance() != null) {
+ builder.addPackageFromDrl(SpreadsheetCompiler.instance().compile(stream));
+ }
+ else
+ {
+ throw new UnsupportedOperationException("Unable to compile decision table. You need drools-decisiontables.jar in your classpath");
+ }
} else {
// read in the source
Reader drlReader = new InputStreamReader(stream);
Added: tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/SpreadsheetCompiler.java
===================================================================
--- tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/SpreadsheetCompiler.java (rev 0)
+++ tags/JBoss_Seam_2_2_0_CR1/src/main/org/jboss/seam/drools/SpreadsheetCompiler.java 2009-06-24 21:13:27 UTC (rev 11204)
@@ -0,0 +1,53 @@
+package org.jboss.seam.drools;
+
+import static org.jboss.seam.ScopeType.APPLICATION;
+import static org.jboss.seam.annotations.Install.BUILT_IN;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.drools.decisiontable.InputType;
+import org.jboss.seam.Component;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Install;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.log.LogProvider;
+import org.jboss.seam.log.Logging;
+
+/**
+ * Compiles Drools DecisionTable.
+ *
+ * @author Tihomir Surdilovic
+ *
+ */
+
+@Name("org.jboss.seam.drools.spreadsheetComponent")
+@BypassInterceptors
+@Scope(APPLICATION)
+@Install(precedence = BUILT_IN, classDependencies = "org.drools.decisiontable.SpreadsheetCompiler")
+public class SpreadsheetCompiler
+{
+ private static final LogProvider log = Logging.getLogProvider(SpreadsheetCompiler.class);
+
+ public InputStreamReader compile(InputStream stream) {
+ org.drools.decisiontable.SpreadsheetCompiler compiler = new org.drools.decisiontable.SpreadsheetCompiler();
+ String drl = compiler.compile(stream, InputType.XLS);
+
+ byte currentXMLBytes[] = drl.getBytes();
+ InputStreamReader source = new InputStreamReader(new ByteArrayInputStream(currentXMLBytes));
+ return source;
+ }
+
+ public static SpreadsheetCompiler instance()
+ {
+ if (!Contexts.isApplicationContextActive()) {
+ return new SpreadsheetCompiler();
+ } else {
+ return (SpreadsheetCompiler) Component.getInstance(SpreadsheetCompiler.class, ScopeType.APPLICATION);
+ }
+ }
+}
\ No newline at end of file
15 years, 6 months