I will give it a try without 1.
Thanks
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3952225#3952225
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3952225
___
JBoss-user
I had something similar where I wanted to reject (throw away changes that I
have made to entities without it being flushed/commited to the db).
In the end I had to do 3 things.
1. in persistence.xml I prevented hibernate from flushing:
| property
Hi,
I upgraded my environment to EJB3-RC8 and the latest seam version from CVS
(1.0.1GA). Something very weird appears to happen. For some reason my
collections are not lazy initialized anymore (I get a lot of sql statements in
my log file with stuff like
I have investigated quite a bit more. The defaults are still Lazy. My problem
was related to a toString method in my entity that recursively called all the
other entities attached to it (e.g. the many-to-many and one-to-many).
Somewhere this toString was called, resulting in my whole database
Added a test case/sample app in Jira.
http://jira.jboss.com/jira/browse/JBSEAM-244
Louis
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3948027#3948027
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3948027
Hi,
I ran across a very interesting problem with circular injection (and is looking
for a better way to resolve it).
I have two stateful session beans (A and B) . In A I do a @In(create=true)
private B b while in B I inject A @In(create=true) private A a (Please dont ask
why ;-)
My
anonymous wrote : I'm interested on running the JAASexample from the wiki with
the new Jboss4.0.4 GA and MYSQL instead of postgres... any help?
I have upgraded the example to work with JBoss 4.0.4 GA and Seam CR3.
Unfortunately I have no experience with MySQL, so no help there.
L
View the
Tested it a bit, seems better. I will try and make a new testing release of my
own app and let all the testers and QA's go wild. If the problem is still there
it will very quickly show up. I will report back if that is the case.
Thanks for the good work
Louis
View the original post :
Yes.
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3945443#3945443
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3945443
---
Using Tomcat but need to do more? Need to
I have also seen that before (after upgrading to a different release of myfaces
and tomahawk).
With the current version of myfaces (1.1.3) I also see this, but when I
downgrade to 1.1.2 is disappears. Maybe try to upgrade/downgrade your myfaces
dist in jboss
hi all,
I am running into a problem with jboss 404.GA and todays version of Seam. At
some point (after using my application for some time by quite a few users) I
get the following error (quite random). This exeption was returned when a
totally new user from a fresh browser tried to access the
Yip it goes away after a restart.
Yip I use SeamExtendedManagedPersistencePhaseListener. I have been playing
around here and can repeat it in my application.
Essentially what happens is the following:
I have an interceptor that catches an application exception that I throw (this
exception is
Hi Gavin,
another thing I picked up is the following:
When I annotate the factory method that gets called with
@TransactionAttribute(TransactionAttributeType.MANDATORY)
I am able to access that page (and the bean behind it).
L
View the original post :
Sorry... ignore the previous posting... (changed two things at once)
when I actually do a Transactions.getUserTransaction().rollback(); in my
interceptor I am able to continue... does this mean that the container now does
not do the rollback (and subsequent removal of the bean)?
L
View the
Hi all,
I have been strugling quite some time to handle errors gracefully (these errors
can include stuff like null pointers or entity not found). I have kept an eye
out for good ways to handle errors but as yet have not found a good way ( I am
aware of the current EJB3 rollback bugs: e.g.
Alternatively, should I /dev/null all my interceptor stuff and rather use the
Seam @Rollback for all error handling ?
e.g. catch all exceptions in my beans and then return the appropriate outcome
(with the addition of an error message to the faces context ) ?
L
View the original post :
I don't think that will work (but saying this with care as I haven't used the
pageflow stuff yet).
With JAAS you cannot point to the login page directly. The way it works is the
request gets intercepted when you are trying to access a secure resource (which
pops up the login page). After the
Oops.. didn't see Gavin's reply in time! Bandwidth to Africa ;-)
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3941314#3941314
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3941314
Hi,
I am running EJB3-RC6 with jboss 4.0.4.CR2. I get the following error when
jboss attempts to activate (passivate ?) an entity which also contains Enums:
| 2006-05-02 15:20:48,134 DEBUG
[org.jboss.serial.classmetamodel.ClassMetaData] Constructor being rebuilt for
class
Excellent.
Thanks for the good work.
Louis
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3940784#3940784
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3940784
---
Using
Hi Gavin,
I am still strugling with this exception. Upon further investigation I see that
the seam booking example also illustrates this behavior. (Can't see that
anything really stops working, except that the log file is filled with these
exceptions).
1. Do an account login
2. Do a find
Hmm... how can I see if I have two SeamPhaseListeners ? Surely for the booking
demo that I compile here and deploy (for which I also see the exception) that
won't be the case.
I haven't changed any of those configuration stuff for a long time. Only thing
that really changed was the ejb3 rc6
Painful... seems to be a Myfaces issue. When I rollback to use the 1.1.1
release of myfaces the exception is gone, but when I use the nightlies for
1.1.2 it pops up.
Caught between a rock and hardplace. I am forced to use facelets 1.1.4 (certain
fixes in there that I need), but 1.1.4 does not
Fixed ! I have upgraded to the myfaces 1.1.2 release which seems to have solved
the problem !
Relief !
Later
Louis
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3938664#3938664
Reply to the post :
Thanks Gavin. The fix did the trick ! Much appreciated.
One more question... does the Conversational create a faces error message to
display to the user why he/she got redirected ? I know that you added this
functionality earlier (which worked), but at this point I don't see the message
You also need the jboss-seam-ui.jar (which also gets compiled when you build
seam from CVS). This jar needs to be packaged in you WAR.
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3937599#3937599
Reply to the post :
Regarding my comment about the Conversational error message:
anonymous wrote :
| One more question... does the Conversational create a faces error message
to display to the user why he/she got redirected ? I know that you added this
functionality earlier (which worked), but at this point I
Hi Gavin,
I have created an issue. See
http://jira.jboss.com/jira/browse/JBSEAM-206
Thanks
Louis
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3937506#3937506
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3937506
Hi Gavin
the Jira I openend for
http://www.jboss.com/index.html?module=bbop=viewtopict=81115
also illustrates the various exceptions.
See jira
http://jira.jboss.com/jira/browse/JBSEAM-206
Or should I create a separate Jira ?
Thanks
Louis
View the original post :
anonymous wrote : the standard logout would be to
| invalidate the session, right. How do I do that with SEAM?
I do a Seam.invalidateSession();
anonymous wrote : when the login fails, how do I tell the server to stay in
login.jsp?
|
In your web.xml just change the form-error-page to
Hi,
I have been trying to establish whether the @Conversational still works with
the s:link. This is a slightly convoluted (and at this point artificial)
description but does highlight my problem.
I have a Stateful bean (x) annotated with @Conversational
(ifNotBegunOutcome=home)
in bean x I
I have built a small application with a stateful bean annotated with
@Conversational containing two methods:
| @Stateful
| @Name(serviceManagementBean)
| @Conversational(ifNotBegunOutcome = AdminHomePage)
| @Interceptors(SeamInterceptor.class)
| public class ServiceManagementBean
Unfortunately so. Gavin is wainting for the ejb3 release before updating Seam.
See: http://www.jboss.com/index.html?module=bbop=viewtopict=80604
and
http://www.jboss.com/index.html?module=bbop=viewtopict=80852
Regards
Louis
View the original post :
The tomahawk stuff works well. However, I have changed most of my code to use
the Seam s:link as provided by Gavin quite recently (mostly because I was able
to get away from the Javascript stuff ). In conjunction with the s:link he also
exposed the isUserInrole which makes life a lot easier.
Hi,
I have just done a cvs update of Seam (and myfaces and facelets). I get the
following exception quite often:
12:12:13,696 ERROR [PhaseListenerManager] Exception in PhaseListener
RENDER_RESPONSE(6) afterPhase
| java.lang.IllegalStateException: No active application scope
| at
anonymous wrote : how do you acoomplish following:
|
| Every time a user hits my seam application he`s or her`s locale is set to
ee? Seam offers component level default locale, but how to go in session level
locale?
I haven't looked at the latest Seam support for the various locales. Most
anonymous wrote : share our IM passports
Unfortunately this would be difficult. I sit behind several firewalls blocking
all of the instant messaging protocols (including irc). This forum works well
for me though.
View the original post :
Hi,
this might be jumping the gun a bit (but then again I like the bleeding edge
;-). Some of it might not be related to Seam itself, but as I am trying to get
my Seam app working again this might be the most appropriate forum.
I did a cvs update of the JBoss tree that I have been using to
Cool... fortunately it is now evening here. Time for a beer me thinks ;-)
I have stepped into it a bit.. seems that there is a problem getting the seam
managed persistence context. I get an exception on line 51 in
org.jboss.seam.core.ManagedPersistenceContext for my
anonymous wrote : I don't see how it is helpful to have s:link support the
JAAS stuff if other stuff like h:commandLink and h:inputText do not ... or
are you assuming that users will be using this stuff together with a library
like tomahawk that *does* support it?
For my specific environment
anonymous wrote : The problem I see here is that you need a way to pass the
name of the role you need, and JSF-EL does not support parameters (this is
silly, btw).
Agreed. What I have done to simulate the JAAS roles stuff is expose stuff in my
PortalUser object (this required for each role
If memory serves: 3 main parts regarding JAAS:
1. The user management, assignment or roles etc. which I assume would be
application specific. However, associated with that is the need to flush the
JAAS cache (which I haven't been able to get going in JBoss 4.0.x)
Jip it works !
I did something like this below:
| f:subview rendered=#{isUserInRole['ServiceManager']}
| lis:link action=#{serviceManagementBean.loadAllServices}
| propagation=end id=serviceManagement
| h:outputText
Hi all,
I have seen the inclusion of the seam ui stuff in CVS. Great stuff!!! The
provision of the s:actionLink that works without JavaScript solves one of my
biggest headaches! A lot of people use console mode browsers (links, lynx) that
does not have good support for Javascript which meant
I have added a jira feature request for extending the actionLink component.
http://jira.jboss.com/jira/browse/JBSEAM-191
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3934177#3934177
Reply to the post :
Just an update on the usage of pages.xml and conversation.end I have
removed it again, seems that it did not do as I wished it would.
Regards
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3933729#3933729
Reply to the post :
When the conversations was just joined things worked. However, with the
pages.xml conversation.end things got a bit confusing. Using a @Factory with an
@Begin to start the new conversation, later on (a few methods calls down in the
same conversation and same stateful bean) I get this:
I also doubt if the conversation has really ended. If I click a link specified
in my pages.xml (with the conversation.end) (with a running conversation),
(and if the action I am going to is annotated only with an @Begin and the
@Factory) I get the following exception:
Caused by:
Hi,
anonymous wrote : I've 100,000 users to support initially
We would love to have so many users! If we get 1000 initially we would regard
it as a success (mostly due to the target demographic and other cultural
issues).
anonymous wrote : Is the content management subsystem part of what
We started off using it (and it worked quite nicely). But as always the
development continued without the test cases being kept in sync (or not even
writing integration tests for stuff that needs to be developed). As a result
our integrations tests are completely useless (for that matter also
Hi all,
I am attempting to flush my JAAS cache as explained in
http://wiki.jboss.org/wiki/Wiki.jsp?page=CachingLoginCredentials.
For some weird reason it does not appear as if the cache gets flushed. I have
used the code successfully previously, but with my current stack this appears
to be
anonymous wrote : I meant manual Seam context component management Aah ;-)
Very seldom actually. The only place where I really had to do manual stuff was
in a JSF phaselistener where I wanted to see if the guy was already logged in
(so I actually checked for the existence of the valid info in
I love it. It has made a big improvement on our productivity (taken into
account that I have taken a whole team with no experience with Java
annotations, ejb3 (and hibernate3), JSF and facelets and have managed (almost
done ;-) to develop a full featured, complicated application in less than 3
Excellent. Glad that it works.
Louis
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3933101#3933101
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3933101
---
This SF.Net
Just add the following in the template that you use for those pages which live
in the secure area. This will invoke the factory on the piece of Java code
provided earlier, and as a result outject the portalUser in the session
context. Place the Java code in a stateful bean as part of the
I agree that such a sollution might be possible. However, it would be fantastic
to have somekind of standard API to change that setting. Am I missing something
somewhere ?
Thanks
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3932072#3932072
Reply to the
Hi,
Is it possible to change the @Where clause at runtime, thus implementing some
kind of polymorphic query on my collection ?
As an example I have the following:
| @OneToMany(mappedBy = service)
| @MapKey(name=id)
| @Where(clause=topic_type='CMS')
| public MapInteger,Topic
Hi,
this was quite painful as there was no way I could find to do that
automatically after the JAAS login. In the end we used an @Factory variable
included in one of the admin templates to force the creation and outjection of
the PortalUser. Something as follows:
| /**
| * if
This thread might help you:
http://www.jboss.com/index.html?module=bbop=viewtopict=76430
In the end I also had to add mapping stuff manually to my generated
hibernate.cfg.xml ...
stuff like:
mapping class=csir.user.par.PortalRole/
| mapping class=csir.user.par.PortalUser/
| mapping
The idea of starting with a new conversation every time the user selects a new
sidebar menu item (e.g. User Management, Add new Issue ...) is very important
to me. What I have been doing is just joining the conversation every time the
user selects a new sidebar item. This however left a lot of
Hi,
I am trying to delete an entity from a collection. For some reason I get the
following error:
Illegal attempt to associate a collection with two open sessions.
I have browsed the Hibernate, this EJB3 mailing list as well as Googled, but
have not found anything helpful.
How can I find
I tried regenarating the hibernate.cfg.xml... still no mappings.
Jip.. is the JDK enum running eclipse in JDK 5.0
Will try the printing.
The current status is that I can perform HQL queries, see the results and also
see the Entity Model. One interesting thing is that the focus almost always
Hi Max,
I have rebuilt the jboss-ide bundle from cvs (this morning Sunday 5 March)
using the releng mechanims.
Installing the bundle and starting eclipse with -clean I used the wizard to
create a new hibernate.cfg.xml, followed by a new hibernate console. All works
as expected. The problem
I have been strugling to recompile the HibernateExt stuff to get hold of the
latest hibernate-annotations.jar.
| compile:
| [javac] Compiling 51 source files to
/home/lcoetzee/ftp/JBoss/Seam/HibernateEntityManager/HibernateExt/metadata/build/classes
| [javac]
/home/lcoetzee/ftp
(Still using the hibernate-annotations stuff as distributed with jboss)
Can't think of other dependencies... except other entities which should be on
the classpath as well..
When creating the session factory I get two warnings:
| WARN main org.hibernate.impl.SessionFactoryObjectFactory -
When I try from java.lang.Object I get
| WARN main org.hibernate.hql.QuerySplitter - no persistent classes found for
query class: from java.lang.Object
Haven't seen any queries (sql), not able to view the entity model. Also
interesting is that I am not able to expand the Configuration or
hh... I think we are on to something here...
my hibernate.cfg.xml was generated by the wizard, but does not contains any
references to the entities (and I have no mappings because of ejb3)
L
View the original post :
Small little steps :-)
I have added my Entities to the hibernate.cfg.xml e.g. :
| mapping class=csir.content.par.Content/
|
In addition I have also placed the jboss-seam.jar on the Classpath (with the
jdbc driver and path to compiled classes).
I can now expand the various tabs and see
Hi Max, I am starting to make quite a bit of progress now !
I am able to see my entity model and do HQL on some Entities (and also see the
results).
I get the following though:
org.hibernate.HibernateException: Enum class not found
|
I use quite a few enums in my Entities ( I have tried
Hi,
has there been any development regarding this. I am rebuilding/downloading the
nightly builds quite often but always get stuck with this.
Regards.
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3927950#3927950
Reply to the post :
I have uploaded a stripped down Seam example using JAAS with postgresql.
See JAASExample.zip
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossSeam
Regards
Louis
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3926366#3926366
Reply to the post :
Wiki ... will do so. Probably only over the weekend though (too many meetings
today and tomorrow).
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3925798#3925798
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3925798
I have incorporated the whole JAAS thing for the web container (using the
databaseserverloginmodule ... postgresql) in my project. Unfortunately not on
the EJB layer.
I think it would be good to share! What will be the best way ? I can cut the
project down to just have a basic Seam app with
Hi,
I have been trying to use the jbosside nightlies (without much success). I am
currently building the nightlies myself (using the releng process as described
in
http://docs.jboss.com/jbosside/releng/user/build/en/html_single/).
I am able to create the hibernate.cfg.xml but am unable to run
Hi max,
thanks for the info... not having much luck in closing the property sheet. Have
not come across a auto close property in the hibernate.cfg.xml (google not
telling me much at this point... but I will search a bit more)
I get the following exception from the nighly I built last night:
Set the following:
| property name=hibernate.transaction.auto_close_sessionfalse/property
| in my hibernate.cfg.xml (is this the right property ?)
I have copied hibernate-tools.jar as found in
/HibernateExt/tools/target/hibernate-tools
and hibernate-annotations.jar as found in
No... the Intercept.ALWAYS made no difference.
However, my application now works even though the @Factory is still beign
called before the action in the other bean.
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3924202#3924202
Reply to the post :
Just in terms of the troubles I had (which is now resolved !). I also traced it
to my rendered=#{foo} attribute (when I removed it my whole app worked like a
dream, with it in it broke). Anyway, the solution was to change my logic a bit
of where I actually set foo to null (to force a reget of
I will try the Intercept.ALWAYS when I get to work.
In terms of the conversation id... I actually build a the url's containg the
parameters (e.g. the id of the object I want to display through my get and
@Factory) Part of the url contains the conversation id which I actually inject
through
The stack:
| Thread [http-0.0.0.0-8080-2] (Suspended (breakpoint at line 1077 in
org.jboss.seam.Component))
| org.jboss.seam.Component.getInstanceFromFactory(java.lang.String) line:
1077
| org.jboss.seam.Component.getInstance(java.lang.String, boolean,
java.lang.Object) line:
Hmmm.. stepping through the Component.java it seems as if
| public static Object getInstanceFromFactory(String name)
|
is done before
|public void inject(Object bean/*, boolean isActionInvocation*/)
|
so my RequestParameter is initiated too late.
L
View the original post :
Gavin,
OK.. now I am completely stumped I duplicated the functionality in another
test framework I have (without the bells and whistles)... and it works as
expected !
Looking at the original application I can see no difference between the working
and the broken application.
I will go
Hi,
I have a xhtml that gets loaded with data through an @Factory(load) method on
a stateful bean (the xhtml references load which gets outjected by my bean) .
This works well and as expected. load is event scoped, meaning that the
method loading the data gets invoked every time I view the
I will try and get the appropriate parts...
In the xhtml the bean is invoked based on allServicesToViewLoaded as called by :
| ui:define name=leftNavigation id=leftNavIns
| n:leftNavigation rendered=#{not empty
allServicesToViewLoaded}
|
OK... will do first thing tomorrow (South African time)... already at home
(need to eat and sleep at some point ;-)
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3923367#3923367
Reply to the post :
Hi Gavin,
ignore my posting/question. Seam is working correctly and outjecting the right
stuff at the right time. My code was broken a bit.
Anyway, what I am doing (and wanted to do, but failed to explain properly
earlier): use the @Factory(xxx) annotation in a stateful bean. Have xxx event
Hi,
this thread contains a first cut attempt at writing an Interceptor to catch a
specific exception (the rollback and those things are not working correctly,
but you will get a good idea anyway;-)
http://www.jboss.com/index.html?module=bbop=viewtopict=76085
Louis
View the original post :
Hi,
is it possible to force a re-outjection of my variables ?
http://www.jboss.com/index.html?module=bbop=viewtopict=74496
mentions the equals method, but in my case I need to change the order of a
collection, with the same entities in the collection (as established in an
@Factory method).
Hi,
I am still trying to get my conversations to time out at the expected times...
(e.g. then redirect to the page indicated in the @Conversational). I think my
understanding of when the count down for the timeout should start is wrong...
The following is supposed to end a conversation 1
Hi,
I am trying to see when my conversation times out, as I want to use the
@Conversational (ifNotbeginOutcome) stuff. Unfortunately I am strugling to see
when the the conversation actually ends. How can I change my log levels to see
what is happening with the conversations ?
(Motivation: I
.cache.simple.StatefulSessionFilePersistenceManager] Saving
session state to:
/home/lcoetzee/app-servers/jboss-4.0.4RC1/server/all/tmp/sessions/ServiceManagementBean-ej1gphan-14/a3e2t-5hbwvj-ej1g873q-1-ej1gr5uc-18.ser
| 2006-01-29 16:51:30,725 INFO [STDOUT] FieldsManager in use
Jip, it is in my code.
Here is the use case: Code works as expected, but when it is left in the middle
of a conversation the bean gets passivated (or the conversation times out). If
the conversation times out the @Conversational redirects it to a page where the
conversation gets restarted.
The code (I have tried various things... hopefully this is the appropriate
version)
| package csir.structure.management.service.seam;
|
| import java.io.Serializable;
| import java.util.Date;
| import java.util.HashMap;
| import java.util.Iterator;
| import java.util.List;
|
Hi,
I have defined a @Conversational(ifNotBegunOutcome=goToMain) for my stateful
bean. Upon conversation timeout I get the desired behavior (the user gets
redirected to the page as defined for goToMain in faces-config.xml (at least
for those pages that does not do a form submit but this
Added:
http://jira.jboss.com/jira/browse/JBSEAM-130
Thanks
L
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=3919819#3919819
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=3919819
Hi Rob,
thanks for the pointers but the issue is proving to be really troublesome. I
do think this is something we need to resolve in every application that uses
Seam (it does not appear to be handled in the examples). Or find a way to
handle the exception gracefully in Seam. It has been
Hi,
this is a first attempt (having never written interceptors or annotation
before). Seems to work, but not ideal.
1. In my Interceptor I have no which interceptors need to be in Around and
Within
2. Ideally I would like to add my annotation to the method and not the type,
but for some
Hi
I am strugling to handle a org.hibernate.StaleObjectStateException.
My code to persist an entity is the following:
| @IfInvalid(outcome = Outcome.REDISPLAY)
| public String save() {
| try {
| logger.info(Saving edited/created service.);
|
Got it sorted out.
Based on http://www.jboss.com/index.html?module=bbop=viewtopict=75968
I realized that I never defined the jndi in my persistence.xml.
To work properly one needs the following:
in web.xml
| !-- this only for use in jboss-seam beta 2--
| context-param
|
Not a problem. We like the edge!
As an aside, seems I am strugling a bit to change my configuration for my test
environment. I get the following error:
[testng] [INFO,NamingHelper] JNDI InitialContext
properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory,
1 - 100 of 123 matches
Mail list logo